From a09c97f4c3873b94fbb1df74ece250bbf07c133e Mon Sep 17 00:00:00 2001
From: Jingyan Ling <jingyanling2018@u.northwestern.edu>
Date: Mon, 5 Aug 2019 11:25:05 -0700
Subject: [PATCH] rearragne code, journal

---
 README.md                                     |  10 +-
 paperbot_ee/paperbot_dsn.py                   | 126 ------------------
 paperbot_ee_autoroute/auto_route_dsn.py       |   8 ++
 paperbot_ee_autoroute/paperbot_ee.rules       |  61 +++++++++
 paperbot_ee_autoroute/paperbot_ee.ses         |  37 +++++
 fp-info-cache => test_history/fp-info-cache   |   0
 .../kicad_board.dsn                           |   0
 .../kicad_board.kicad_pcb                     |   0
 .../kicad_board.pro                           |   0
 .../kicad_board_routed.dsn                    |   0
 .../kicad_python.net                          |   0
 .../kicad_python.py                           |   0
 kicad_test.dxf => test_history/kicad_test.dxf |   0
 .../paperbot_kicad.dxf                        |   0
 14 files changed, 115 insertions(+), 127 deletions(-)
 delete mode 100644 paperbot_ee/paperbot_dsn.py
 create mode 100644 paperbot_ee_autoroute/auto_route_dsn.py
 create mode 100644 paperbot_ee_autoroute/paperbot_ee.rules
 create mode 100644 paperbot_ee_autoroute/paperbot_ee.ses
 rename fp-info-cache => test_history/fp-info-cache (100%)
 rename kicad_board.dsn => test_history/kicad_board.dsn (100%)
 rename kicad_board.kicad_pcb => test_history/kicad_board.kicad_pcb (100%)
 rename kicad_board.pro => test_history/kicad_board.pro (100%)
 rename kicad_board_routed.dsn => test_history/kicad_board_routed.dsn (100%)
 rename kicad_python.net => test_history/kicad_python.net (100%)
 rename kicad_python.py => test_history/kicad_python.py (100%)
 rename kicad_test.dxf => test_history/kicad_test.dxf (100%)
 rename paperbot_kicad.dxf => test_history/paperbot_kicad.dxf (100%)

diff --git a/README.md b/README.md
index c258d92..92ab6ea 100644
--- a/README.md
+++ b/README.md
@@ -538,4 +538,12 @@ Board design details(rules,parameters)---|
   - Can open GUI with imported file
   - Cannot run auto-routing function from script
   - Manually click on auto-routing and save is needed (manual approval)
-  
\ No newline at end of file
+
+### 08/04/2019
+
+- Working on parsing routed (wiring section) text information.
+    - Ref: [pyparsing](https://scipy-cookbook.readthedocs.io/items/Reading_Custom_Text_Files_with_Pyparsing.html)
+- Parsing generated `dsn` file back to `DSN` class 
+  - Fail
+- Parsing generated `kicad_pcb` file back to `pykicad` package - `pcb` class
+  - 
\ No newline at end of file
diff --git a/paperbot_ee/paperbot_dsn.py b/paperbot_ee/paperbot_dsn.py
deleted file mode 100644
index befdd0c..0000000
--- a/paperbot_ee/paperbot_dsn.py
+++ /dev/null
@@ -1,126 +0,0 @@
-#!/usr/bin/env python3
-import sys
-sys.path.insert(1,'/home/jingyan/Documents/summer_intern_lemur/roco_electrical/dsn_python')
-
-import dsnwritier
-
-class brd_design():
-    def __init__(self,dwgfile,boundary_inx,libpath):
-        self.dwgfile=dwgfile
-        self.boundary_inx=boundary_inx
-        self.libpath=libpath
-        self.module_list=[
-            ['mpu-9250.kicad_mod','J1',[103000,88000],270],
-            ['ESP12F-Devkit-V3.kicad_mod','U1',[103000,48000],90],
-        ]
-        self.netlist=[
-            ['3v3',['U1-3','J1-1']],
-            ['VIN',['U1-1']]
-        ]
-        self.netclass_list=[
-            ['default',['3v3','VIN'],'',1000,200]
-        ]
-        
-        self.brd_general()
-        self.boundary,self.keepout=self.load_drawing()
-        self.image,self.padstack=self.load_lib()
-        self.placement=self.place_modules()
-        self.net,self.netclass=self.create_net()
-
-        self.write_dsn()
-
-    def brd_general(self):
-        self.brd=dsnwritier.Dsn()
-        self.layers=[
-            dsnwritier.Layer('F.Cu'),
-            dsnwritier.Layer('B.Cu'),
-            dsnwritier.Layer('F.Mask'),
-            dsnwritier.Layer('B.Mask')
-        ]
-        
-        self.parsers= dsnwritier.Parser()
-        
-        self.rule=dsnwritier.Rule()
-        clearance=[
-            dsnwritier.Clearance(200.1),
-            dsnwritier.Clearance(200.1,'default_smd'),
-            dsnwritier.Clearance(50,'smd_smd')]
-        self.rule.clearance=clearance
-
-
-    def load_drawing(self):
-        """
-        create class: bourdry and keepout 
-        from drawing file
-        """
-        dwg=(dsnwritier.load_drawing(self.dwgfile)).load_polygon()
-        bdata=dwg.pop(self.boundary_inx)
-        kdata=dwg
-        keepout=[]
-        for i in range(len(kdata)):
-            keep_class=dsnwritier.Keepout(kdata[i])
-            keepout.append(keep_class)
-        boundary=dsnwritier.Boundary(bdata)
-        return boundary,keepout
-
-    def load_lib(self):
-        """
-        create class: footprint (image) and padstack
-        from library path and modules
-        """
-
-        image=[]
-        for mod in self.module_list:
-            img=dsnwritier.Footprint.from_file(self.libpath+mod[0],ref=mod[1])
-            image.append(img)
-
-        padstack=dsnwritier.Padstack.auto_detect(self.libpath+'mpu-9250.kicad_mod')
-        return image,padstack
-    def place_modules(self):
-        placement=[]
-        for mod in self.module_list:
-            place=dsnwritier.Placement(name=mod[0],ref1=mod[1],at=mod[2],orientation=mod[3])
-            placement.append(place)
-        return placement
-    def create_net(self):
-        nets_list=[]
-        netclass_list=[]
-        for net in self.netlist:
-            nets=dsnwritier.Net(net_name=net[0],conn_pins=net[1])
-            nets_list.append(nets)
-        for netclass in self.netclass_list:  
-            netclasses=dsnwritier.NetClass(net_class_name=netclass[0],
-                                            nets_name=netclass[1],
-                                            via_name=netclass[2],
-                                            width=netclass[3],
-                                            clearance=netclass[4])
-            netclass_list.append(netclasses)
-        return nets_list,netclass_list
-    def write_dsn(self):
-        self.brd.parser=self.parsers
-        self.brd.rule=self.rule
-        self.brd.layers=self.layers
-        self.brd.boundary=self.boundary
-        self.brd.keepout=self.keepout
-        self.brd.image=self.image
-        self.brd.padstack=self.padstack
-        self.brd.placement=self.placement
-        self.brd.net=self.net
-        self.brd.netclass=self.netclass
-
-        self.brd.to_file('paperbot_ee.dsn')
-
-
-libpath='/home/jingyan/Documents/summer_intern_lemur/roco_electrical/libraries/kicad-ESP8266/ESP8266.pretty/'
-dwgfile='/home/jingyan/Documents/summer_intern_lemur/roco_electrical/dsn_line_test.dxf'
-a= brd_design(dwgfile,0,libpath)       
-
-        
-
-
-        
-
-
-
-
-
diff --git a/paperbot_ee_autoroute/auto_route_dsn.py b/paperbot_ee_autoroute/auto_route_dsn.py
new file mode 100644
index 0000000..719625f
--- /dev/null
+++ b/paperbot_ee_autoroute/auto_route_dsn.py
@@ -0,0 +1,8 @@
+#!/usr/bin/env python3
+import sys
+sys.path.insert(1,'/home/jingyan/Documents/summer_intern_lemur/roco_electrical/dsn_python')
+import subprocess
+
+
+unrouted_dsn_file='paperbot_ee.dsn'
+subprocess.call(['java','-jar','freeRouting.jar','-de',unrouted_dsn_file,'-white','-s'])
\ No newline at end of file
diff --git a/paperbot_ee_autoroute/paperbot_ee.rules b/paperbot_ee_autoroute/paperbot_ee.rules
new file mode 100644
index 0000000..d015151
--- /dev/null
+++ b/paperbot_ee_autoroute/paperbot_ee.rules
@@ -0,0 +1,61 @@
+
+(rules PCB paperbot_ee
+  (snap_angle 
+    fortyfive_degree
+  )
+  (autoroute_settings
+    (fanout off)
+    (autoroute on)
+    (postroute on)
+    (vias on)
+    (via_costs 50)
+    (plane_via_costs 5)
+    (start_ripup_costs 100)
+    (start_pass_no 4)
+    (layer_rule F.Cu
+      (active on)
+      (preferred_direction vertical)
+      (preferred_direction_trace_costs 1.8)
+      (against_preferred_direction_trace_costs 3.0)
+    )
+    (layer_rule B.Cu
+      (active on)
+      (preferred_direction horizontal)
+      (preferred_direction_trace_costs 1.0)
+      (against_preferred_direction_trace_costs 1.8)
+    )
+    (layer_rule F.Mask
+      (active on)
+      (preferred_direction vertical)
+      (preferred_direction_trace_costs 1.0)
+      (against_preferred_direction_trace_costs 2.2)
+    )
+    (layer_rule B.Mask
+      (active on)
+      (preferred_direction horizontal)
+      (preferred_direction_trace_costs 1.8)
+      (against_preferred_direction_trace_costs 2.6)
+    )
+  )
+  (rule
+    (width 1000.0)
+    (clear 200.0)
+    (clear 125.0 (type smd_to_turn_gap))
+    (clear 200.2 (type default_smd))
+    (clear 50.0 (type smd_smd))
+  )
+  (via_rule
+    default
+  )
+  (class default
+    3v3 VIN
+    (clearance_class default)
+    (via_rule default)
+    (rule
+      (width 1000.0)
+    )
+    (circuit 
+      (use_layer F.Cu B.Cu F.Mask B.Mask)
+    )
+  )
+)
\ No newline at end of file
diff --git a/paperbot_ee_autoroute/paperbot_ee.ses b/paperbot_ee_autoroute/paperbot_ee.ses
new file mode 100644
index 0000000..515be5e
--- /dev/null
+++ b/paperbot_ee_autoroute/paperbot_ee.ses
@@ -0,0 +1,37 @@
+
+(session paperbot_ee.ses
+  (base_design paperbot_ee.dsn)
+  (placement
+    (resolution um 10)
+    (component J1
+      (place J1 1030000 -880000 front 270)
+    )
+    (component U1
+      (place U1 1030000 -480000 front 90)
+    )
+  )
+  (was_is
+  )
+  (routes 
+    (resolution um 10)
+    (parser
+      (host_cad "KiCad's Pcbnew")
+      (host_version "5.1.3-ffb9f22~84~ubuntu18.04.1")
+    )
+    (library_out 
+    )
+    (network_out 
+      (net 3v3
+        (wire
+          (path B.Cu 10000
+            890300 -600650
+            918654 -629004
+            1049358 -629004
+            1131600 -711246
+            1131600 -816500
+          )
+        )
+      )
+    )
+  )
+)
\ No newline at end of file
diff --git a/fp-info-cache b/test_history/fp-info-cache
similarity index 100%
rename from fp-info-cache
rename to test_history/fp-info-cache
diff --git a/kicad_board.dsn b/test_history/kicad_board.dsn
similarity index 100%
rename from kicad_board.dsn
rename to test_history/kicad_board.dsn
diff --git a/kicad_board.kicad_pcb b/test_history/kicad_board.kicad_pcb
similarity index 100%
rename from kicad_board.kicad_pcb
rename to test_history/kicad_board.kicad_pcb
diff --git a/kicad_board.pro b/test_history/kicad_board.pro
similarity index 100%
rename from kicad_board.pro
rename to test_history/kicad_board.pro
diff --git a/kicad_board_routed.dsn b/test_history/kicad_board_routed.dsn
similarity index 100%
rename from kicad_board_routed.dsn
rename to test_history/kicad_board_routed.dsn
diff --git a/kicad_python.net b/test_history/kicad_python.net
similarity index 100%
rename from kicad_python.net
rename to test_history/kicad_python.net
diff --git a/kicad_python.py b/test_history/kicad_python.py
similarity index 100%
rename from kicad_python.py
rename to test_history/kicad_python.py
diff --git a/kicad_test.dxf b/test_history/kicad_test.dxf
similarity index 100%
rename from kicad_test.dxf
rename to test_history/kicad_test.dxf
diff --git a/paperbot_kicad.dxf b/test_history/paperbot_kicad.dxf
similarity index 100%
rename from paperbot_kicad.dxf
rename to test_history/paperbot_kicad.dxf
-- 
GitLab