improved Gui
Annular, Positions, Snap
@ -107,7 +107,7 @@
|
||||
<property name="pos"></property>
|
||||
<property name="resize">Resizable</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="size">180,114</property>
|
||||
<property name="subclass">; ; forward_declare</property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
|
@ -23,7 +23,7 @@ class AnnularDlg ( wx.Dialog ):
|
||||
|
||||
bSizer3 = wx.BoxSizer( wx.VERTICAL )
|
||||
|
||||
self.m_bitmapAR = wx.StaticBitmap( self, wx.ID_ANY, wx.NullBitmap, wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||
self.m_bitmapAR = wx.StaticBitmap( self, wx.ID_ANY, wx.NullBitmap, wx.DefaultPosition, wx.Size( 180,114 ), 0 )
|
||||
bSizer3.Add( self.m_bitmapAR, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL, 5 )
|
||||
|
||||
self.m_LabelTitle = wx.StaticText( self, wx.ID_ANY, u"Check annular ring", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||
|
BIN
AnnularChecker/annular-help.png
Normal file
After Width: | Height: | Size: 6.0 KiB |
221
AnnularChecker/annular-help.svg
Normal file
@ -0,0 +1,221 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
height="46.027241"
|
||||
width="72.56057"
|
||||
version="1.1"
|
||||
id="svg2"
|
||||
inkscape:version="1.0beta2 (c8d5c0e, 2020-01-08)"
|
||||
sodipodi:docname="annular-help.svg"
|
||||
viewBox="0 0 68.025533 43.150538"
|
||||
inkscape:export-filename="C:\Users\userC\AppData\Roaming\kicad\scripting\plugins\kicad-action-tools\AnnularChecker\annular-help.png"
|
||||
inkscape:export-xdpi="238.14587"
|
||||
inkscape:export-ydpi="238.14587">
|
||||
<metadata
|
||||
id="metadata40">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1010"
|
||||
id="namedview38"
|
||||
showgrid="true"
|
||||
inkscape:snap-to-guides="false"
|
||||
inkscape:snap-grids="true"
|
||||
inkscape:zoom="12.132594"
|
||||
inkscape:cx="40.999855"
|
||||
inkscape:cy="27.211008"
|
||||
inkscape:window-x="-7"
|
||||
inkscape:window-y="-7"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg2"
|
||||
showguides="true"
|
||||
inkscape:guide-bbox="true"
|
||||
fit-margin-top="1"
|
||||
fit-margin-left="1"
|
||||
fit-margin-right="10"
|
||||
fit-margin-bottom="1"
|
||||
inkscape:document-rotation="0">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid3017"
|
||||
empspacing="2"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
snapvisiblegridlinesonly="true"
|
||||
spacingx="0.5"
|
||||
spacingy="0.5"
|
||||
originx="19.137753"
|
||||
originy="8.0752684" />
|
||||
</sodipodi:namedview>
|
||||
<defs
|
||||
id="defs4">
|
||||
<filter
|
||||
id="c"
|
||||
height="1.3651"
|
||||
width="1.2097"
|
||||
y="-0.18257"
|
||||
x="-0.10484"
|
||||
style="color-interpolation-filters:sRGB">
|
||||
<feGaussianBlur
|
||||
stdDeviation="1.5978799"
|
||||
id="feGaussianBlur7" />
|
||||
</filter>
|
||||
<filter
|
||||
id="d"
|
||||
height="1.4696"
|
||||
width="1.4809999"
|
||||
y="-0.23481999"
|
||||
x="-0.24049"
|
||||
style="color-interpolation-filters:sRGB">
|
||||
<feGaussianBlur
|
||||
stdDeviation="1.5978799"
|
||||
id="feGaussianBlur10" />
|
||||
</filter>
|
||||
</defs>
|
||||
<g
|
||||
id="g73">
|
||||
<path
|
||||
inkscape:export-ydpi="82.105263"
|
||||
inkscape:export-xdpi="82.105263"
|
||||
style="opacity:0.25;fill:#cccccc;fill-opacity:1;stroke:#b3b3b3;stroke-width:4.27553606;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 3.075268,3.075268 V 40.07527 h 53.4375 l -1.5e-5,-37.000002 z"
|
||||
id="path3872-9"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<g
|
||||
inkscape:export-ydpi="82.105263"
|
||||
inkscape:export-xdpi="82.105263"
|
||||
id="g16"
|
||||
transform="matrix(1.6382539,0,0,1.5572263,24.144974,9.4384095)">
|
||||
<rect
|
||||
style="fill-opacity:0"
|
||||
id="rect18"
|
||||
x="0"
|
||||
y="0"
|
||||
width="16"
|
||||
height="16" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(1.5,0,0,1.5,-22.068877,-4.0376336)"
|
||||
id="g43">
|
||||
<path
|
||||
d="m 30.637753,17.075268 h 19.5 m -19.5,0 c 0,1.932997 -1.567003,3.5 -3.5,3.5 -1.932997,0 -3.5,-1.567003 -3.5,-3.5 0,-1.932997 1.567003,-3.5 3.5,-3.5 1.932997,0 3.5,1.567003 3.5,3.5 z"
|
||||
style="opacity:1;fill:none;stroke:#ffcc00;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path3867"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:export-xdpi="82.105263"
|
||||
inkscape:export-ydpi="82.105263"
|
||||
sodipodi:nodetypes="ccsssss" />
|
||||
<path
|
||||
id="path3002"
|
||||
style="opacity:0.25;fill:none;stroke:#ffffff;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 30.637753,17.075268 h 20.5 m -20.5,0 c 0,1.932997 -1.567003,3.5 -3.5,3.5 -1.932997,0 -3.5,-1.567003 -3.5,-3.5 0,-1.932997 1.567003,-3.5 3.5,-3.5 1.932997,0 3.5,1.567003 3.5,3.5 z"
|
||||
inkscape:connector-curvature="0"
|
||||
inkscape:export-xdpi="82.105263"
|
||||
inkscape:export-ydpi="82.105263"
|
||||
sodipodi:nodetypes="ccsssss" />
|
||||
<circle
|
||||
style="opacity:0.763;fill:#1a1a1a;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:14.2339;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
id="path825"
|
||||
cx="27.148506"
|
||||
cy="17.077711"
|
||||
r="1.8978496" />
|
||||
</g>
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3088-0"
|
||||
d="m 22.262753,19.075268 h 6.562499"
|
||||
style="fill:#333333;stroke:#333333;stroke-width:0.9375px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5191-2"
|
||||
d="m 28.012753,25.700268 -1.875,-5.625 -1.875,5.625"
|
||||
style="fill:#333333;stroke:#333333;stroke-width:0.9375px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<g
|
||||
transform="translate(16.875,5.625)"
|
||||
id="g51">
|
||||
<path
|
||||
style="fill:#333333;stroke:#333333;stroke-width:0.9375px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 5.387753,8.4502684 h 6.562499"
|
||||
id="path3088-3-2"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
sodipodi:nodetypes="ccc"
|
||||
style="fill:#333333;stroke:#333333;stroke-width:0.9375px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
d="m 7.401704,1.7175684 1.875,5.625001 1.875,-5.625001"
|
||||
id="path5195-9"
|
||||
inkscape:connector-curvature="0" />
|
||||
</g>
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3088-0-5"
|
||||
d="m 16.137753,31.075268 v 6.562499"
|
||||
style="fill:#333333;stroke:#333333;stroke-width:0.9375px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
sodipodi:nodetypes="cc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3088-3-2-6"
|
||||
d="m 21.030054,31.061317 v 6.562499"
|
||||
style="fill:#333333;stroke:#333333;stroke-width:0.9375px;stroke-linecap:round;stroke-linejoin:miter;stroke-opacity:1" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5191-2-4"
|
||||
d="m 9.512753,36.825268 5.625,-1.875 -5.625,-1.875"
|
||||
style="fill:#333333;stroke:#333333;stroke-width:0.9375px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5195-9-6"
|
||||
d="m 27.762754,33.075268 -5.625001,1.875 5.625001,1.875"
|
||||
style="fill:#333333;stroke:#333333;stroke-width:0.9375px;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1"
|
||||
sodipodi:nodetypes="ccc" />
|
||||
<text
|
||||
id="text944"
|
||||
y="38.698124"
|
||||
x="29.723278"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.5px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#333333;fill-opacity:1;stroke:none;stroke-width:0.9375"
|
||||
xml:space="preserve"><tspan
|
||||
y="38.698124"
|
||||
x="29.723278"
|
||||
id="tspan964"
|
||||
sodipodi:role="line">DRILL</tspan></text>
|
||||
<text
|
||||
id="text944-5"
|
||||
y="11.112587"
|
||||
x="35.27084"
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.5px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#333333;fill-opacity:1;stroke:none;stroke-width:0.9375"
|
||||
xml:space="preserve"><tspan
|
||||
style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:7.5px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#333333;stroke-width:0.9375"
|
||||
y="11.112587"
|
||||
x="35.27084"
|
||||
id="tspan942-4"
|
||||
sodipodi:role="line">AR</tspan></text>
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 9.0 KiB |
@ -126,7 +126,7 @@ class Annular_Dlg(AnnularDlg.AnnularDlg):
|
||||
#c1.Bind(wx.EVT_CHECKBOX, self.OntextMetric, c1)
|
||||
#self.m_checkBoxPHD.Bind(wx.EVT_CHECKBOX, self.OnClickCheck, self.m_checkBoxPHD)
|
||||
self.m_checkBoxPHD.Bind(wx.EVT_CHECKBOX, self.OnClickCheck)
|
||||
self.m_bitmapAR.SetBitmap(wx.Bitmap(os.path.join(os.path.dirname(__file__), "./annular.png")))
|
||||
self.m_bitmapAR.SetBitmap(wx.Bitmap(os.path.join(os.path.dirname(__file__), "./annular-help.png")))
|
||||
|
||||
#self.Bind(wx.EVT_CHECKBOX, self.OnClickCheck)
|
||||
#self.m_buttonDelete.Bind(wx.EVT_BUTTON, self.onDeleteClick)
|
||||
@ -185,7 +185,7 @@ class annular_check( pcbnew.ActionPlugin ):
|
||||
_pcbnew_frame = [x for x in wx.GetTopLevelWindows() if x.GetTitle().lower().startswith('pcbnew')][0]
|
||||
#aParameters = RoundTrackDlg(None)
|
||||
aParameters = Annular_Dlg(_pcbnew_frame)
|
||||
aParameters.m_LabelTitle.SetLabel("Check annular ring: version: "+___version___)
|
||||
aParameters.m_LabelTitle.SetLabel("version: "+___version___)
|
||||
aParameters.m_textCtrlARP.SetToolTip( wx.ToolTip(u"Annular Ring for Pads (mm)" ))
|
||||
aParameters.m_staticTextPHD.SetToolTip( wx.ToolTip(u"Drill extra margin (mm)" ))
|
||||
aParameters.m_textCtrlARV.SetToolTip( wx.ToolTip(u"Annular Ring for Vias (mm)" ))
|
||||
|
@ -45,7 +45,7 @@
|
||||
<property name="minimum_size"></property>
|
||||
<property name="name">PositionsDlg</property>
|
||||
<property name="pos"></property>
|
||||
<property name="size">499,296</property>
|
||||
<property name="size">499,377</property>
|
||||
<property name="style">wxCAPTION|wxCLOSE_BOX|wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
|
||||
<property name="subclass"></property>
|
||||
<property name="title">Generating Fab Positions</property>
|
||||
@ -168,7 +168,7 @@
|
||||
<property name="pos"></property>
|
||||
<property name="resize">Resizable</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="size">180,90</property>
|
||||
<property name="subclass">; ; forward_declare</property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
|
@ -17,7 +17,7 @@ import wx.xrc
|
||||
class PositionsDlg ( wx.Dialog ):
|
||||
|
||||
def __init__( self, parent ):
|
||||
wx.Dialog.__init__ ( self, parent, id = wx.ID_ANY, title = u"Generating Fab Positions", pos = wx.DefaultPosition, size = wx.Size( 499,296 ), style = wx.CAPTION|wx.CLOSE_BOX|wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER )
|
||||
wx.Dialog.__init__ ( self, parent, id = wx.ID_ANY, title = u"Generating Fab Positions", pos = wx.DefaultPosition, size = wx.Size( 499,377 ), style = wx.CAPTION|wx.CLOSE_BOX|wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER )
|
||||
|
||||
self.SetSizeHints( wx.DefaultSize, wx.DefaultSize )
|
||||
|
||||
@ -28,7 +28,7 @@ class PositionsDlg ( wx.Dialog ):
|
||||
|
||||
bSizer3.Add( self.m_comment, 0, wx.ALL|wx.EXPAND, 5 )
|
||||
|
||||
self.m_bitmapFab = wx.StaticBitmap( self, wx.ID_ANY, wx.NullBitmap, wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||
self.m_bitmapFab = wx.StaticBitmap( self, wx.ID_ANY, wx.NullBitmap, wx.DefaultPosition, wx.Size( 180,90 ), 0 )
|
||||
bSizer3.Add( self.m_bitmapFab, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALL, 5 )
|
||||
|
||||
self.m_staticline2 = wx.StaticLine( self, wx.ID_ANY, wx.DefaultPosition, wx.DefaultSize, wx.LI_HORIZONTAL )
|
||||
|
BIN
FabricationPositions/fabrication-footprint-positions.png
Normal file
After Width: | Height: | Size: 4.6 KiB |
209
FabricationPositions/fabrication-footprint-positions.svg
Normal file
@ -0,0 +1,209 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
inkscape:export-ydpi="288"
|
||||
inkscape:export-xdpi="288"
|
||||
inkscape:export-filename="C:\Users\userC\AppData\Roaming\kicad\scripting\plugins\kicad-action-tools\FabricationPositions\fabrication-footprint-positions.png"
|
||||
sodipodi:docname="fabrication-footprint-positions.svg"
|
||||
inkscape:version="1.0beta2 (c8d5c0e, 2020-01-08)"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
width="60"
|
||||
height="30">
|
||||
<metadata
|
||||
id="metadata40">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<sodipodi:namedview
|
||||
fit-margin-bottom="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-top="0"
|
||||
inkscape:document-rotation="0"
|
||||
inkscape:snap-nodes="true"
|
||||
inkscape:current-layer="svg2"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:window-y="-7"
|
||||
inkscape:window-x="-7"
|
||||
inkscape:cy="18.59166"
|
||||
inkscape:cx="26.603408"
|
||||
inkscape:zoom="7.3362329"
|
||||
inkscape:snap-grids="true"
|
||||
inkscape:snap-to-guides="false"
|
||||
showgrid="true"
|
||||
id="namedview38"
|
||||
inkscape:window-height="1010"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0"
|
||||
guidetolerance="10"
|
||||
gridtolerance="10"
|
||||
objecttolerance="10"
|
||||
borderopacity="1"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff">
|
||||
<inkscape:grid
|
||||
originy="-0.53726742"
|
||||
originx="-0.999996"
|
||||
spacingy="0.5"
|
||||
spacingx="0.5"
|
||||
snapvisiblegridlinesonly="true"
|
||||
enabled="true"
|
||||
visible="true"
|
||||
empspacing="2"
|
||||
id="grid3017"
|
||||
type="xygrid" />
|
||||
</sodipodi:namedview>
|
||||
<defs
|
||||
id="defs4" />
|
||||
<g
|
||||
transform="translate(0,-0.4627328)"
|
||||
id="g100">
|
||||
<g
|
||||
id="g71"
|
||||
transform="translate(4.5689117,2.7686297)">
|
||||
<g
|
||||
transform="translate(-0.999996,-0.53726742)"
|
||||
id="g4259">
|
||||
<path
|
||||
style="fill:#4d4d4d;fill-opacity:1;stroke:none"
|
||||
d="M 0.999996,13 H 25 l 4e-6,12.000008 H 1 Z"
|
||||
id="rect3922"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3945"
|
||||
style="fill:#5599ff;fill-opacity:1;stroke:none"
|
||||
d="m 19,20 h 3 v 3 h -3 z m 0,-5 h 3 v 3 h -3 z m -5,5 h 3 v 3 h -3 z m 0,-5 h 3 v 3 h -3 z m -5,5 h 3 v 3 H 9 Z m 0,-5 h 3 v 3 H 9 Z m -5,5 h 3 v 3 H 4 Z m 0,-5 h 3 v 3 H 4 Z" />
|
||||
<path
|
||||
style="fill:#666666;fill-opacity:1;stroke:none"
|
||||
d="M 3,13 4,2 h 2 l 1,11 z"
|
||||
id="path3951"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#666666;fill-opacity:1;stroke:none"
|
||||
d="m 11,13 1,-8 h 2 l 1,8 z"
|
||||
id="path3955"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
<path
|
||||
style="fill:#999999;fill-opacity:1;stroke:none"
|
||||
d="m 13.150812,3.315136 c -0.749775,-0.2887168 -1.383144,-0.8843809 -1.07618,-1.6349551 0.434113,-1.06147224 1.556056,-1.08997006 2.69045,-1.08997006 1.134394,0 3.170326,0.54498506 4.30472,0.54498506 1.134394,0 2.662583,-0.80895492 3.76663,-0.54498506 0.98749,0.23610179 2.276331,1.16000596 2.15236,2.17994006 -0.127786,1.0513241 -1.176864,1.7979743 -2.15236,2.1799401 -0.853046,0.3340194 -2.877979,0.7639736 -3.76663,0.544985 -1.115928,-0.2749962 -2.092461,-2.0094295 -3.22854,-2.17994 -0.955466,-0.143403 -1.787602,0.3476609 -2.69045,0 z"
|
||||
id="path3957"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ssssssssss" />
|
||||
</g>
|
||||
<g
|
||||
id="g888"
|
||||
transform="rotate(35,31.793766,53.471549)"
|
||||
inkscape:export-xdpi="118.15385"
|
||||
inkscape:export-ydpi="118.15385">
|
||||
<rect
|
||||
id="rect51"
|
||||
x="18.048264"
|
||||
y="-10.797076"
|
||||
width="6.7242813"
|
||||
height="14.236656"
|
||||
transform="rotate(55)"
|
||||
style="fill:#ffffff;stroke:#545454;stroke-width:0.531971;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<path
|
||||
id="path53"
|
||||
d="M 21.994429,12.161141 A 0.93496958,1.3812014 55.000001 1 1 20.914881,10.634286"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:none;stroke:#545454;stroke-width:0.544431;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<rect
|
||||
id="rect73"
|
||||
x="23.80514"
|
||||
y="-8.92307"
|
||||
width="2.8918929"
|
||||
height="2.52508"
|
||||
transform="rotate(55)"
|
||||
style="fill:#da33e2;fill-opacity:1;stroke:#545454;stroke-width:0.507635;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<rect
|
||||
id="rect73-5"
|
||||
x="23.81665"
|
||||
y="-4.6135879"
|
||||
width="2.8918929"
|
||||
height="2.52508"
|
||||
transform="rotate(55)"
|
||||
style="fill:#da33e2;fill-opacity:1;stroke:#545454;stroke-width:0.507635;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<rect
|
||||
id="rect73-56"
|
||||
x="23.796537"
|
||||
y="-0.24324402"
|
||||
width="2.8918929"
|
||||
height="2.52508"
|
||||
transform="rotate(55)"
|
||||
style="fill:#da33e2;fill-opacity:1;stroke:#545454;stroke-width:0.507635;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<rect
|
||||
id="rect73-0"
|
||||
x="16.125263"
|
||||
y="-8.8896284"
|
||||
width="2.8918929"
|
||||
height="2.52508"
|
||||
transform="rotate(55)"
|
||||
style="fill:#da33e2;fill-opacity:1;stroke:#545454;stroke-width:0.507635;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<rect
|
||||
id="rect73-5-4"
|
||||
x="16.136774"
|
||||
y="-4.5801458"
|
||||
width="2.8918929"
|
||||
height="2.52508"
|
||||
transform="rotate(55)"
|
||||
style="fill:#da33e2;fill-opacity:1;stroke:#545454;stroke-width:0.507635;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<rect
|
||||
id="rect73-56-9"
|
||||
x="16.116661"
|
||||
y="-0.20980217"
|
||||
width="2.8918929"
|
||||
height="2.52508"
|
||||
transform="rotate(55)"
|
||||
style="fill:#da33e2;fill-opacity:1;stroke:#545454;stroke-width:0.507635;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
</g>
|
||||
<path
|
||||
style="opacity:0.9;fill:#1a1a1a;stroke:#1a1a1a;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
inkscape:connector-curvature="0"
|
||||
d="M 49.595708,4.0446493 H 27.441485"
|
||||
id="path3429" />
|
||||
<path
|
||||
style="opacity:0.9;fill:#1a1a1a;stroke:#1a1a1a;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
inkscape:connector-curvature="0"
|
||||
d="M 31.0182,21.516811 V 1.1876083"
|
||||
id="path3431" />
|
||||
<path
|
||||
style="opacity:0.9;fill:#1a1a1a;stroke:#1a1a1a;stroke-width:0.691157px"
|
||||
inkscape:connector-curvature="0"
|
||||
d="M 50.344153,3.9952625 47.130361,1.2072286 v 5.7571529 z"
|
||||
id="path3433" />
|
||||
<path
|
||||
style="opacity:0.9;stroke:#1a1a1a;stroke-width:0.691157px"
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 31.083339,23.148926 2.794836,-3.206309 h -5.771531 z"
|
||||
id="path3435" />
|
||||
</g>
|
||||
<path
|
||||
inkscape:export-ydpi="82.105263"
|
||||
inkscape:export-xdpi="82.105263"
|
||||
style="opacity:0.25;fill:#cccccc;fill-opacity:1;stroke:#b3b3b3;stroke-width:3.46154;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 3.000004,3.4627326 V 27.462733 h 54 l -1.6e-5,-24.0000004 z"
|
||||
id="path3872-9"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 8.4 KiB |
@ -291,7 +291,7 @@ class Positions_Dlg(PositionsDlg.PositionsDlg):
|
||||
PositionsDlg.PositionsDlg.__init__(self, parent)
|
||||
#self.GetSizer().Fit(self)
|
||||
self.SetMinSize(self.GetSize())
|
||||
self.m_bitmapFab.SetBitmap(wx.Bitmap(os.path.join(os.path.dirname(__file__), "./fabrication.png")))
|
||||
self.m_bitmapFab.SetBitmap(wx.Bitmap(os.path.join(os.path.dirname(__file__), "./fabrication-footprint-positions.png")))
|
||||
# self.m_buttonDelete.Bind(wx.EVT_BUTTON, self.onDeleteClick)
|
||||
# self.m_buttonReconnect.Bind(wx.EVT_BUTTON, self.onConnectClick)
|
||||
# if wx.__version__ < '4.0':
|
||||
|
@ -45,7 +45,7 @@
|
||||
<property name="minimum_size"></property>
|
||||
<property name="name">Snap2GridDlg</property>
|
||||
<property name="pos"></property>
|
||||
<property name="size">499,491</property>
|
||||
<property name="size">499,584</property>
|
||||
<property name="style">wxCAPTION|wxCLOSE_BOX|wxDEFAULT_DIALOG_STYLE|wxRESIZE_BORDER</property>
|
||||
<property name="subclass"></property>
|
||||
<property name="title">Snap to Grid</property>
|
||||
@ -119,6 +119,64 @@
|
||||
<property name="wrap">-1</property>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxALIGN_CENTER_HORIZONTAL|wxALIGN_CENTER_VERTICAL|wxALL</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxStaticBitmap" expanded="1">
|
||||
<property name="BottomDockable">1</property>
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="bitmap"></property>
|
||||
<property name="caption"></property>
|
||||
<property name="caption_visible">1</property>
|
||||
<property name="center_pane">0</property>
|
||||
<property name="close_button">1</property>
|
||||
<property name="context_help"></property>
|
||||
<property name="context_menu">1</property>
|
||||
<property name="default_pane">0</property>
|
||||
<property name="dock">Dock</property>
|
||||
<property name="dock_fixed">0</property>
|
||||
<property name="docking">Left</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="fg"></property>
|
||||
<property name="floatable">1</property>
|
||||
<property name="font"></property>
|
||||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="moveable">1</property>
|
||||
<property name="name">m_bitmapS2G</property>
|
||||
<property name="pane_border">1</property>
|
||||
<property name="pane_position"></property>
|
||||
<property name="pane_size"></property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="pin_button">1</property>
|
||||
<property name="pos"></property>
|
||||
<property name="resize">Resizable</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size">100,100</property>
|
||||
<property name="subclass">; ; forward_declare</property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag"></property>
|
||||
@ -254,64 +312,6 @@
|
||||
<property name="window_style"></property>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="1">
|
||||
<property name="border">5</property>
|
||||
<property name="flag">wxALIGN_CENTER_VERTICAL|wxALL</property>
|
||||
<property name="proportion">0</property>
|
||||
<object class="wxStaticBitmap" expanded="1">
|
||||
<property name="BottomDockable">1</property>
|
||||
<property name="LeftDockable">1</property>
|
||||
<property name="RightDockable">1</property>
|
||||
<property name="TopDockable">1</property>
|
||||
<property name="aui_layer"></property>
|
||||
<property name="aui_name"></property>
|
||||
<property name="aui_position"></property>
|
||||
<property name="aui_row"></property>
|
||||
<property name="best_size"></property>
|
||||
<property name="bg"></property>
|
||||
<property name="bitmap"></property>
|
||||
<property name="caption"></property>
|
||||
<property name="caption_visible">1</property>
|
||||
<property name="center_pane">0</property>
|
||||
<property name="close_button">1</property>
|
||||
<property name="context_help"></property>
|
||||
<property name="context_menu">1</property>
|
||||
<property name="default_pane">0</property>
|
||||
<property name="dock">Dock</property>
|
||||
<property name="dock_fixed">0</property>
|
||||
<property name="docking">Left</property>
|
||||
<property name="enabled">1</property>
|
||||
<property name="fg"></property>
|
||||
<property name="floatable">1</property>
|
||||
<property name="font"></property>
|
||||
<property name="gripper">0</property>
|
||||
<property name="hidden">0</property>
|
||||
<property name="id">wxID_ANY</property>
|
||||
<property name="max_size"></property>
|
||||
<property name="maximize_button">0</property>
|
||||
<property name="maximum_size"></property>
|
||||
<property name="min_size"></property>
|
||||
<property name="minimize_button">0</property>
|
||||
<property name="minimum_size"></property>
|
||||
<property name="moveable">1</property>
|
||||
<property name="name">m_bitmapS2G</property>
|
||||
<property name="pane_border">1</property>
|
||||
<property name="pane_position"></property>
|
||||
<property name="pane_size"></property>
|
||||
<property name="permission">protected</property>
|
||||
<property name="pin_button">1</property>
|
||||
<property name="pos"></property>
|
||||
<property name="resize">Resizable</property>
|
||||
<property name="show">1</property>
|
||||
<property name="size"></property>
|
||||
<property name="subclass">; ; forward_declare</property>
|
||||
<property name="toolbar_pane">0</property>
|
||||
<property name="tooltip"></property>
|
||||
<property name="window_extra_style"></property>
|
||||
<property name="window_name"></property>
|
||||
<property name="window_style"></property>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
</object>
|
||||
<object class="sizeritem" expanded="0">
|
||||
|
@ -17,7 +17,7 @@ import wx.xrc
|
||||
class Snap2GridDlg ( wx.Dialog ):
|
||||
|
||||
def __init__( self, parent ):
|
||||
wx.Dialog.__init__ ( self, parent, id = wx.ID_ANY, title = u"Snap to Grid", pos = wx.DefaultPosition, size = wx.Size( 499,491 ), style = wx.CAPTION|wx.CLOSE_BOX|wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER )
|
||||
wx.Dialog.__init__ ( self, parent, id = wx.ID_ANY, title = u"Snap to Grid", pos = wx.DefaultPosition, size = wx.Size( 499,584 ), style = wx.CAPTION|wx.CLOSE_BOX|wx.DEFAULT_DIALOG_STYLE|wx.RESIZE_BORDER )
|
||||
|
||||
self.SetSizeHints( wx.DefaultSize, wx.DefaultSize )
|
||||
|
||||
@ -28,6 +28,9 @@ class Snap2GridDlg ( wx.Dialog ):
|
||||
|
||||
bSizer3.Add( self.m_comment, 0, wx.ALL|wx.EXPAND, 5 )
|
||||
|
||||
self.m_bitmapS2G = wx.StaticBitmap( self, wx.ID_ANY, wx.NullBitmap, wx.DefaultPosition, wx.Size( 100,100 ), 0 )
|
||||
bSizer3.Add( self.m_bitmapS2G, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 )
|
||||
|
||||
bSizer31 = wx.BoxSizer( wx.HORIZONTAL )
|
||||
|
||||
self.m_staticTextGrid = wx.StaticText( self, wx.ID_ANY, u"Grid", wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||
@ -40,9 +43,6 @@ class Snap2GridDlg ( wx.Dialog ):
|
||||
self.m_comboBoxGrid.SetSelection( 0 )
|
||||
bSizer31.Add( self.m_comboBoxGrid, 0, wx.ALL|wx.EXPAND, 5 )
|
||||
|
||||
self.m_bitmapS2G = wx.StaticBitmap( self, wx.ID_ANY, wx.NullBitmap, wx.DefaultPosition, wx.DefaultSize, 0 )
|
||||
bSizer31.Add( self.m_bitmapS2G, 0, wx.ALIGN_CENTER_VERTICAL|wx.ALL, 5 )
|
||||
|
||||
|
||||
bSizer3.Add( bSizer31, 0, 0, 5 )
|
||||
|
||||
|
BIN
Snap2Grid/snap2grid-help.png
Normal file
After Width: | Height: | Size: 4.8 KiB |
243
Snap2Grid/snap2grid-help.svg
Normal file
@ -0,0 +1,243 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
height="26"
|
||||
width="26"
|
||||
version="1.1"
|
||||
id="svg2"
|
||||
inkscape:version="1.0beta2 (c8d5c0e, 2020-01-08)"
|
||||
sodipodi:docname="snap2grid-help.svg"
|
||||
inkscape:export-filename="C:\Users\userC\AppData\Roaming\kicad\scripting\plugins\kicad-action-tools\Snap2Grid\snap2grid-help.png"
|
||||
inkscape:export-xdpi="369.23001"
|
||||
inkscape:export-ydpi="369.23001">
|
||||
<metadata
|
||||
id="metadata72">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<defs
|
||||
id="defs70" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1010"
|
||||
id="namedview68"
|
||||
showgrid="true"
|
||||
inkscape:snap-grids="true"
|
||||
inkscape:snap-to-guides="true"
|
||||
inkscape:zoom="11.480769"
|
||||
inkscape:cx="12.998223"
|
||||
inkscape:cy="20.096351"
|
||||
inkscape:window-x="-7"
|
||||
inkscape:window-y="-7"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg2"
|
||||
inkscape:document-rotation="0">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid3049"
|
||||
empspacing="1"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
snapvisiblegridlinesonly="true"
|
||||
spacingx="0.5"
|
||||
spacingy="0.5"
|
||||
originx="0"
|
||||
originy="0" />
|
||||
</sodipodi:namedview>
|
||||
<path
|
||||
style="fill:#333333;fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path10"
|
||||
d="m 5.5,4 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z" />
|
||||
<path
|
||||
style="fill:#333333;fill-rule:evenodd;fill-opacity:1"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path10-9"
|
||||
d="m 11.5,4 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z" />
|
||||
<path
|
||||
style="fill:#333333;fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path10-4"
|
||||
d="m 17.5,4 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z" />
|
||||
<path
|
||||
style="fill:#333333;fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path10-7"
|
||||
d="m 23.5,4 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z" />
|
||||
<path
|
||||
style="fill:#333333;fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path10-8"
|
||||
d="m 5.5,10 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z" />
|
||||
<path
|
||||
style="fill:#333333;fill-rule:evenodd;fill-opacity:1"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path10-9-3"
|
||||
d="m 11.5,10 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z" />
|
||||
<path
|
||||
style="fill:#333333;fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path10-4-8"
|
||||
d="m 17.5,10 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z" />
|
||||
<path
|
||||
style="fill:#333333;fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path10-7-5"
|
||||
d="m 23.5,10 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z" />
|
||||
<path
|
||||
style="fill:#333333;fill-rule:evenodd;fill-opacity:1"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path10-71"
|
||||
d="m 5.5,16 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z" />
|
||||
<path
|
||||
style="fill:#333333;fill-rule:evenodd;fill-opacity:1"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path10-4-3"
|
||||
d="m 17.5,16 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z" />
|
||||
<path
|
||||
style="fill:#333333;fill-rule:evenodd;fill-opacity:1"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path10-7-8"
|
||||
d="m 23.5,16 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z" />
|
||||
<path
|
||||
style="fill:#333333;fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path10-3"
|
||||
d="m 5.5,22 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z" />
|
||||
<path
|
||||
style="fill:#333333;fill-rule:evenodd;fill-opacity:1"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path10-9-5"
|
||||
d="m 11.5,22 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z" />
|
||||
<path
|
||||
style="fill:#333333;fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path10-4-6"
|
||||
d="m 17.5,22 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z" />
|
||||
<path
|
||||
style="fill:#333333;fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path10-7-59"
|
||||
d="m 23.5,22 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z" />
|
||||
<path
|
||||
d="M 11,7 A 1,1.0015023 0 0 1 9,7 1,1.0015023 0 1 1 11,7 z"
|
||||
id="path3811"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#333333;fill-rule:evenodd;fill-opacity:1" />
|
||||
<path
|
||||
style="fill:#333333;fill-rule:evenodd;fill-opacity:1"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3821"
|
||||
d="m 20,16 a 1,1.0015023 0 0 1 -2,0 1,1.0015023 0 1 1 2,0 z" />
|
||||
<g
|
||||
transform="matrix(0.67334578,0,0,0.67334578,6.072015,-0.80029514)"
|
||||
id="g4164">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="rect51"
|
||||
d="m 1.5380859,6.5039062 v 4.6249998 a 2.2240581,1.9589449 0 0 1 0,3.822266 V 20.59375 H 24.461914 V 6.5039062 Z"
|
||||
style="fill:#e6e6e6;stroke:#545454;stroke-width:0.97711289;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<g
|
||||
transform="translate(-0.53360319)"
|
||||
id="g3983">
|
||||
<rect
|
||||
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-width:0.93241322;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="rotate(-90)"
|
||||
height="4.0659709"
|
||||
width="6.0590835"
|
||||
y="4.5123401"
|
||||
x="-8.5317764"
|
||||
id="rect73" />
|
||||
<rect
|
||||
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-width:0.93241322;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="rotate(-90)"
|
||||
height="4.0659709"
|
||||
width="6.0590835"
|
||||
y="11.451617"
|
||||
x="-8.5076618"
|
||||
id="rect73-5" />
|
||||
<rect
|
||||
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-width:0.93241322;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="rotate(-90)"
|
||||
height="4.0659709"
|
||||
width="6.0590835"
|
||||
y="18.488895"
|
||||
x="-8.5498009"
|
||||
id="rect73-56" />
|
||||
</g>
|
||||
<g
|
||||
id="g3983-1"
|
||||
transform="translate(-0.53360319,16.090848)">
|
||||
<rect
|
||||
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-width:0.93241322;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="rotate(-90)"
|
||||
height="4.0659709"
|
||||
width="6.0590835"
|
||||
y="4.5123401"
|
||||
x="-8.5317764"
|
||||
id="rect73-0" />
|
||||
<rect
|
||||
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-width:0.93241322;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="rotate(-90)"
|
||||
height="4.0659709"
|
||||
width="6.0590835"
|
||||
y="11.451617"
|
||||
x="-8.5076618"
|
||||
id="rect73-5-4" />
|
||||
<rect
|
||||
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-width:0.93241322;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="rotate(-90)"
|
||||
height="4.0659709"
|
||||
width="6.0590835"
|
||||
y="18.488895"
|
||||
x="-8.5498009"
|
||||
id="rect73-56-9" />
|
||||
</g>
|
||||
</g>
|
||||
<path
|
||||
style="fill:#c80000;fill-rule:evenodd;fill-opacity:1"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path10-9-33"
|
||||
d="m 12,16 a 2,2.0030045 0 0 1 -4,0 2,2.0030045 0 1 1 4,0 z" />
|
||||
<path
|
||||
style="fill:#c80000;fill-rule:evenodd;fill-opacity:1"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3813"
|
||||
d="m 11,13 a 1,1.0015023 0 0 1 -2,0 1,1.0015023 0 1 1 2,0 z" />
|
||||
<path
|
||||
d="m 11,19 a 1,1.0015023 0 0 1 -2,0 1,1.0015023 0 1 1 2,0 z"
|
||||
id="path3815"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#c80000;fill-rule:evenodd;fill-opacity:1" />
|
||||
<path
|
||||
style="fill:#c80000;fill-rule:evenodd;fill-opacity:1"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3817"
|
||||
d="m 8,16 a 1,1.0015023 0 0 1 -2,0 1,1.0015023 0 1 1 2,0 z" />
|
||||
<path
|
||||
d="m 14,16 a 1,1.0015023 0 0 1 -2,0 1,1.0015023 0 1 1 2,0 z"
|
||||
id="path3819"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#c80000;fill-rule:evenodd;fill-opacity:1" />
|
||||
</svg>
|
After Width: | Height: | Size: 8.7 KiB |
@ -56,7 +56,7 @@ class Snap2Grid_Dlg(Snap2GridDlg.Snap2GridDlg):
|
||||
Snap2GridDlg.Snap2GridDlg.__init__(self, parent)
|
||||
#self.GetSizer().Fit(self)
|
||||
self.SetMinSize(self.GetSize())
|
||||
self.m_bitmapS2G.SetBitmap(wx.Bitmap(os.path.join(os.path.dirname(__file__), "./snap2grid.png")))
|
||||
self.m_bitmapS2G.SetBitmap(wx.Bitmap(os.path.join(os.path.dirname(__file__), "./snap2grid-help.png")))
|
||||
#self.SetIcon(wx.IconFromBitmap(wx.Bitmap(os.path.join(os.path.dirname(__file__), "./snap2grid.png"))))
|
||||
#self.m_buttonDelete.Bind(wx.EVT_BUTTON, self.onDeleteClick)
|
||||
#self.m_buttonReconnect.Bind(wx.EVT_BUTTON, self.onConnectClick)
|
||||
|
@ -8,11 +8,7 @@
|
||||
|
||||
#import snaptogrid; import importlib; importlib.reload(snaptogrid)
|
||||
|
||||
### plugins errors
|
||||
#import pcbnew
|
||||
#pcbnew.GetWizardsBackTrace()
|
||||
|
||||
__version__ = '1.0.2'
|
||||
__version__ = '1.0.1'
|
||||
import sys, os
|
||||
import pcbnew
|
||||
import datetime
|
||||
@ -21,11 +17,11 @@ from pcbnew import *
|
||||
|
||||
use_grid_origin = True
|
||||
|
||||
gridReference = 0.1 #1.27 #mm pcbnew.FromMM(1.0) #0.1mm
|
||||
gridReference = 2.54 #1.27 #mm pcbnew.FromMM(1.0) #0.1mm
|
||||
|
||||
gridSizeMM = gridReference
|
||||
|
||||
from . import Snap2GridDlg
|
||||
#from . import Send2GridDlg
|
||||
|
||||
sys.path.append(os.path.dirname(__file__))
|
||||
|
||||
@ -36,38 +32,36 @@ def wxLogDebug(msg,dbg):
|
||||
wx.LogMessage(msg)
|
||||
#
|
||||
|
||||
class Snap2Grid_Dlg(Snap2GridDlg.Snap2GridDlg):
|
||||
# from https://github.com/MitjaNemec/Kicad_action_plugins
|
||||
# hack for new wxFormBuilder generating code incompatible with old wxPython
|
||||
# noinspection PyMethodOverriding
|
||||
def SetSizeHints(self, sz1, sz2):
|
||||
if wx.__version__ < '4.0':
|
||||
self.SetSizeHintsSz(sz1, sz2)
|
||||
else:
|
||||
super(Snap2Grid_Dlg, self).SetSizeHints(sz1, sz2)
|
||||
|
||||
# def onDeleteClick(self, event):
|
||||
# return self.EndModal(wx.ID_DELETE)
|
||||
#
|
||||
# def onConnectClick(self, event):
|
||||
# return self.EndModal(wx.ID_REVERT)
|
||||
|
||||
def __init__(self, parent):
|
||||
import wx
|
||||
Snap2GridDlg.Snap2GridDlg.__init__(self, parent)
|
||||
#self.GetSizer().Fit(self)
|
||||
self.SetMinSize(self.GetSize())
|
||||
self.m_bitmapS2G.SetBitmap(wx.Bitmap(os.path.join(os.path.dirname(__file__), "./snap2grid.png")))
|
||||
#self.SetIcon(wx.IconFromBitmap(wx.Bitmap(os.path.join(os.path.dirname(__file__), "./snap2grid.png"))))
|
||||
#self.m_buttonDelete.Bind(wx.EVT_BUTTON, self.onDeleteClick)
|
||||
#self.m_buttonReconnect.Bind(wx.EVT_BUTTON, self.onConnectClick)
|
||||
#if wx.__version__ < '4.0':
|
||||
# self.m_buttonReconnect.SetToolTipString( u"Select two converging Tracks to re-connect them\nor Select tracks including one round corner to be straighten" )
|
||||
# self.m_buttonRound.SetToolTipString( u"Select two connected Tracks to round the corner\nThen choose distance from intersection and the number of segments" )
|
||||
#else:
|
||||
# self.m_buttonReconnect.SetToolTip( u"Select two converging Tracks to re-connect them\nor Select tracks including one round corner to be straighten" )
|
||||
# self.m_buttonRound.SetToolTip( u"Select two connected Tracks to round the corner\nThen choose distance from intersection and the number of segments" )
|
||||
|
||||
#class Snap2Grid_Dlg(Snap2GridDlg.Snap2GridDlg):
|
||||
# # from https://github.com/MitjaNemec/Kicad_action_plugins
|
||||
# # hack for new wxFormBuilder generating code incompatible with old wxPython
|
||||
# # noinspection PyMethodOverriding
|
||||
# def SetSizeHints(self, sz1, sz2):
|
||||
# if wx.__version__ < '4.0':
|
||||
# self.SetSizeHintsSz(sz1, sz2)
|
||||
# else:
|
||||
# super(RoundTrack_Dlg, self).SetSizeHints(sz1, sz2)
|
||||
#
|
||||
# # def onDeleteClick(self, event):
|
||||
# # return self.EndModal(wx.ID_DELETE)
|
||||
# #
|
||||
# # def onConnectClick(self, event):
|
||||
# # return self.EndModal(wx.ID_REVERT)
|
||||
#
|
||||
# def __init__(self, parent):
|
||||
# import wx
|
||||
# Send2GridDlg.Send2GridDlg.__init__(self, parent)
|
||||
# #self.GetSizer().Fit(self)
|
||||
# self.SetMinSize(self.GetSize())
|
||||
# #self.m_buttonDelete.Bind(wx.EVT_BUTTON, self.onDeleteClick)
|
||||
# #self.m_buttonReconnect.Bind(wx.EVT_BUTTON, self.onConnectClick)
|
||||
# #if wx.__version__ < '4.0':
|
||||
# # self.m_buttonReconnect.SetToolTipString( u"Select two converging Tracks to re-connect them\nor Select tracks including one round corner to be straighten" )
|
||||
# # self.m_buttonRound.SetToolTipString( u"Select two connected Tracks to round the corner\nThen choose distance from intersection and the number of segments" )
|
||||
# #else:
|
||||
# # self.m_buttonReconnect.SetToolTip( u"Select two converging Tracks to re-connect them\nor Select tracks including one round corner to be straighten" )
|
||||
# # self.m_buttonRound.SetToolTip( u"Select two connected Tracks to round the corner\nThen choose distance from intersection and the number of segments" )
|
||||
#
|
||||
# Python plugin stuff
|
||||
class snap_to_grid( pcbnew.ActionPlugin ):
|
||||
"""
|
||||
@ -83,9 +77,9 @@ class snap_to_grid( pcbnew.ActionPlugin ):
|
||||
self.description should be a comprehensive description
|
||||
of the plugin
|
||||
"""
|
||||
self.name = "Snap Selected Footprint(s) to Grid \nversion "+__version__
|
||||
self.name = "Snap Selected Module(s) to Grid\nversion "+__version__
|
||||
self.category = "Modify PCB"
|
||||
self.description = "Automaticaly Snap Selected Footprint Module(s) to Grid on an existing PCB"
|
||||
self.description = "Automaticaly Snap Selected Module(s) to Grid on an existing PCB"
|
||||
#self.pcbnew_icon_support = hasattr(self, "show_toolbar_button")
|
||||
self.show_toolbar_button = True
|
||||
self.icon_file_name = os.path.join(os.path.dirname(__file__), './snap2grid.png')
|
||||
@ -95,131 +89,111 @@ class snap_to_grid( pcbnew.ActionPlugin ):
|
||||
#self.pcb = GetBoard()
|
||||
import sys,os
|
||||
#mm_ius = 1000000.0
|
||||
_pcbnew_frame = [x for x in wx.GetTopLevelWindows() if x.GetTitle().lower().startswith('pcbnew')][0]
|
||||
#aParameters = RoundTrackDlg(None)
|
||||
aParameters = Snap2Grid_Dlg(_pcbnew_frame)
|
||||
gridIndex = aParameters.m_comboBoxGrid.FindString('0.1mm (3.94mils)')
|
||||
aParameters.m_comboBoxGrid.SetSelection(gridIndex)
|
||||
#aParameters.m_comboBoxGrid.Append('0.1mm (3.94mils)')
|
||||
aParameters.m_radioBtnGO.SetValue(True)
|
||||
aParameters.Show()
|
||||
|
||||
modal_result = aParameters.ShowModal()
|
||||
if modal_result == wx.ID_OK:
|
||||
grid = aParameters.m_comboBoxGrid.GetStringSelection()
|
||||
gridSizeMM = float(grid.split('mm')[0])
|
||||
if aParameters.m_radioBtnGO.GetValue():
|
||||
use_grid_origin = True
|
||||
else:
|
||||
use_grid_origin = False
|
||||
snap2grid(gridSizeMM,use_grid_origin)
|
||||
else:
|
||||
None # Cancel
|
||||
##
|
||||
|
||||
def snap2grid(gridSizeMM,use_grid_origin):
|
||||
|
||||
pcb = pcbnew.GetBoard()
|
||||
gridOrigin = pcb.GetGridOrigin()
|
||||
auxOrigin = pcb.GetAuxOrigin()
|
||||
content=''
|
||||
locked_fp=''
|
||||
#wxPoint(77470000, 135890000)
|
||||
for module in pcb.GetModules():
|
||||
if module.IsSelected():
|
||||
if use_grid_origin:
|
||||
mpx = module.GetPosition().x - gridOrigin.x
|
||||
mpy = module.GetPosition().y - gridOrigin.y
|
||||
#print(mpx,mpy)
|
||||
mpxOnG = int(mpx/FromMM(gridSizeMM))*FromMM(gridSizeMM)+ gridOrigin.x
|
||||
mpyOnG = int(mpy/FromMM(gridSizeMM))*FromMM(gridSizeMM)+ gridOrigin.y
|
||||
#print(mpxOnG,mpyOnG)
|
||||
locked=''
|
||||
if not module.IsLocked():
|
||||
module.SetPosition(wxPoint(mpxOnG,mpyOnG))
|
||||
pcb = pcbnew.GetBoard()
|
||||
gridOrigin = pcb.GetGridOrigin()
|
||||
auxOrigin = pcb.GetAuxOrigin()
|
||||
content=''
|
||||
locked_fp=''
|
||||
#wxPoint(77470000, 135890000)
|
||||
for module in pcb.GetModules():
|
||||
if module.IsSelected():
|
||||
if use_grid_origin:
|
||||
mpx = module.GetPosition().x - gridOrigin.x
|
||||
mpy = module.GetPosition().y - gridOrigin.y
|
||||
print(mpx,mpy)
|
||||
mpxOnG = int(mpx/FromMM(gridSizeMM))*FromMM(gridSizeMM)+ gridOrigin.x
|
||||
mpyOnG = int(mpy/FromMM(gridSizeMM))*FromMM(gridSizeMM)+ gridOrigin.y
|
||||
print(mpxOnG,mpyOnG)
|
||||
locked=''
|
||||
if not module.IsLocked():
|
||||
module.SetPosition(wxPoint(mpxOnG,mpyOnG))
|
||||
else:
|
||||
locked='LOCKED'
|
||||
X_POS=str(module.GetPosition().x) # - gridOrigin.x)
|
||||
#X_POS='{0:.4f}'.format(pcbnew.ToMM(module.GetPosition().x - gridOrigin.x ))
|
||||
X_POS="{0:<11}".format(X_POS)
|
||||
Y_POS=str(module.GetPosition().y) # - gridOrigin.y)
|
||||
Y_POS="{0:<11}".format(Y_POS)
|
||||
## mpOnGx = PutOnGridMM(module.GetPosition().x, gridSizeMM)
|
||||
## mpOnGy = PutOnGridMM(module.GetPosition().y, gridSizeMM)
|
||||
## module.SetPosition(wxPoint(mpOnGx,mpOnGy))
|
||||
#module.SetPosition(wxPoint(mpOnGx+FromMM(100.0),mpOnGy+FromMM(2.0)))
|
||||
#module.SetOrientation(10)
|
||||
#Y_POS='{0:.4f}'.format(-1*pcbnew.ToMM(module.GetPosition().y - gridOrigin.y))
|
||||
# else:
|
||||
# mpx = module.GetPosition().x - auxOrigin().x
|
||||
# mpy = module.GetPosition().y - auxOrigin().y
|
||||
# X_POS='{0:.4f}'.format(pcbnew.ToMM(module.GetPosition().x - auxOrigin().x ))
|
||||
# X_POS="{0:<11}".format(X_POS)
|
||||
# Y_POS='{0:.4f}'.format(-1*pcbnew.ToMM(module.GetPosition().y - auxOrigin().y))
|
||||
# Y_POS="{0:<11}".format(Y_POS)
|
||||
Reference="{0:<10}".format(str(module.GetReference()))
|
||||
Value = str(module.GetValue())
|
||||
Value=(Value[:17] + '..') if len(Value) > 19 else Value
|
||||
Value="{0:<20}".format(Value)
|
||||
Rotation='{0:.1f}'.format((module.GetOrientation()/10))
|
||||
Rotation="{0:>6}".format(Rotation)+' '
|
||||
if module.GetLayer() == 0:
|
||||
Layer=" top"
|
||||
else:
|
||||
locked='LOCKED'
|
||||
X_POS=str(module.GetPosition().x) # - gridOrigin.x)
|
||||
#X_POS='{0:.4f}'.format(pcbnew.ToMM(module.GetPosition().x - gridOrigin.x ))
|
||||
X_POS="{0:<11}".format(X_POS)
|
||||
Y_POS=str(module.GetPosition().y) # - gridOrigin.y)
|
||||
Y_POS="{0:<11}".format(Y_POS)
|
||||
## mpOnGx = PutOnGridMM(module.GetPosition().x, gridSizeMM)
|
||||
## mpOnGy = PutOnGridMM(module.GetPosition().y, gridSizeMM)
|
||||
## module.SetPosition(wxPoint(mpOnGx,mpOnGy))
|
||||
#module.SetPosition(wxPoint(mpOnGx+FromMM(100.0),mpOnGy+FromMM(2.0)))
|
||||
#module.SetOrientation(10)
|
||||
#Y_POS='{0:.4f}'.format(-1*pcbnew.ToMM(module.GetPosition().y - gridOrigin.y))
|
||||
else: # AuxOrigin
|
||||
mpx = module.GetPosition().x - auxOrigin.x
|
||||
mpy = module.GetPosition().y - auxOrigin.y
|
||||
#print(mpx,mpy)
|
||||
mpxOnG = int(mpx/FromMM(gridSizeMM))*FromMM(gridSizeMM)+ auxOrigin.x
|
||||
mpyOnG = int(mpy/FromMM(gridSizeMM))*FromMM(gridSizeMM)+ auxOrigin.y
|
||||
#print(mpxOnG,mpyOnG)
|
||||
locked=''
|
||||
if not module.IsLocked():
|
||||
module.SetPosition(wxPoint(mpxOnG,mpyOnG))
|
||||
else:
|
||||
locked='LOCKED'
|
||||
X_POS=str(module.GetPosition().x) # - gridOrigin.x)
|
||||
#X_POS='{0:.4f}'.format(pcbnew.ToMM(module.GetPosition().x - gridOrigin.x ))
|
||||
X_POS="{0:<11}".format(X_POS)
|
||||
Y_POS=str(module.GetPosition().y) # - gridOrigin.y)
|
||||
Y_POS="{0:<11}".format(Y_POS)
|
||||
## mpOnGx = PutOnGridMM(module.GetPosition().x, gridSizeMM)
|
||||
## mpOnGy = PutOnGridMM(module.GetPosition().y, gridSizeMM)
|
||||
## module.SetPosition(wxPoint(mpOnGx,mpOnGy))
|
||||
#module.SetPosition(wxPoint(mpOnGx+FromMM(100.0),mpOnGy+FromMM(2.0)))
|
||||
#module.SetOrientation(10)
|
||||
#Y_POS='{0:.4f}'.format(-1*pcbnew.ToMM(module.GetPosition().y - gridOrigin.y))
|
||||
Reference="{0:<10}".format(str(module.GetReference()))
|
||||
Value = str(module.GetValue())
|
||||
Value=(Value[:17] + '..') if len(Value) > 19 else Value
|
||||
Value="{0:<20}".format(Value)
|
||||
Rotation='{0:.1f}'.format((module.GetOrientation()/10))
|
||||
Rotation="{0:>6}".format(Rotation)+' '
|
||||
if module.GetLayer() == 0:
|
||||
Layer=" top"
|
||||
else:
|
||||
Layer=" bottom"
|
||||
#Side="## Side :"+Layer+lsep
|
||||
Layer="{0:<10}".format(Layer)
|
||||
content+=Reference
|
||||
if 'LOCKED' in locked:
|
||||
locked_fp+=Reference + ' LOCKED'+'\n' #os.linesep
|
||||
#content+=Value
|
||||
content+=X_POS
|
||||
content+=Y_POS
|
||||
#content+=str(mpOnGx)
|
||||
#content+=str(mpOnGy)
|
||||
content+=str(mpxOnG)
|
||||
content+=str(mpyOnG)
|
||||
content+=Layer+'\n' #os.linesep
|
||||
if len(content)>0:
|
||||
content+=str(pcbnew.FromMM(gridSizeMM))+'\n'
|
||||
info='Snapped to grid: '+str(gridSizeMM)+'mm\n'
|
||||
if use_grid_origin:
|
||||
content+="Using GridOrigin as Ref"+'\n'
|
||||
info+="Using GridOrigin as Ref"+'\n'
|
||||
else:
|
||||
content+="Using AuxOrigin as Ref"+'\n'
|
||||
info+="Using AuxOrigin as Ref"+'\n'
|
||||
if debug:
|
||||
Layer=" bottom"
|
||||
#Side="## Side :"+Layer+lsep
|
||||
Layer="{0:<10}".format(Layer)
|
||||
content+=Reference
|
||||
if 'LOCKED' in locked:
|
||||
locked_fp+=Reference + ' LOCKED'+'\n' #os.linesep
|
||||
#content+=Value
|
||||
content+=X_POS
|
||||
content+=Y_POS
|
||||
#content+=str(mpOnGx)
|
||||
#content+=str(mpOnGy)
|
||||
content+=str(mpxOnG)
|
||||
content+=str(mpyOnG)
|
||||
content+=Layer+'\n' #os.linesep
|
||||
if len(content)>0:
|
||||
content+=str(pcbnew.FromMM(gridReference))
|
||||
wxLogDebug(content,debug)
|
||||
#else:
|
||||
wxLogDebug(info,True)
|
||||
if len (locked_fp)>0:
|
||||
locked_fp+='\n'+'NOT Moved (Locked fp)'
|
||||
locked_fp+='\n'+info
|
||||
wxLogDebug(locked_fp,True)
|
||||
if len (locked_fp)>0:
|
||||
locked_fp+='\n'+'NOT Moved'
|
||||
wxLogDebug(locked_fp,True)
|
||||
else:
|
||||
wxLogDebug(info,True)
|
||||
else:
|
||||
wxLogDebug('No Modules Selected',True)
|
||||
Refresh()
|
||||
#return content
|
||||
wxLogDebug('No Modules Selected',True)
|
||||
Refresh()
|
||||
#return content
|
||||
|
||||
#if 0:
|
||||
# #from https://github.com/MitjaNemec/Kicad_action_plugins
|
||||
# #hack wxFormBuilder py2/py3
|
||||
# _pcbnew_frame = [x for x in wx.GetTopLevelWindows() if x.GetTitle().lower().startswith('pcbnew')][0]
|
||||
# #aParameters = RoundTrackDlg(None)
|
||||
# aParameters = RoundTrack_Dlg(_pcbnew_frame)
|
||||
# #aParameters = RoundTrack_DlgEx(_pcbnew_frame)
|
||||
# aParameters.Show()
|
||||
# #end hack
|
||||
# aParameters.m_distanceMM.SetValue("5")
|
||||
# aParameters.m_segments.SetValue("16")
|
||||
# aParameters.m_bitmap1.SetBitmap(wx.Bitmap( os.path.join(os.path.dirname(os.path.realpath(__file__)), "round_track_help.png") ) )
|
||||
# modal_result = aParameters.ShowModal()
|
||||
# segments = self.CheckSegmentsInput(
|
||||
# aParameters.m_segments.GetValue(), "number of segments")
|
||||
# distI = FromMM(self.CheckDistanceInput(aParameters.m_distanceMM.GetValue(), "distance from intersection"))
|
||||
# if segments is not None and distI is not None:
|
||||
# if modal_result == wx.ID_OK:
|
||||
# Round_Selection(pcb, distI, segments)
|
||||
# elif modal_result == wx.ID_DELETE:
|
||||
# Delete_Segments(pcb)
|
||||
# #wx.LogMessage('Round Segments on Track Net Deleted')
|
||||
# elif modal_result == wx.ID_REVERT:
|
||||
# wxLogDebug('Connecting Tracks',debug)
|
||||
# Connect_Segments(pcb)
|
||||
# else:
|
||||
# None # Cancel
|
||||
# else:
|
||||
# None # Invalid input
|
||||
# aParameters.Destroy()
|
||||
|
||||
|
||||
# wxLogDebug('showing Selected Tracks',debug)
|
||||
# wx.LogMessage('Select Tracks to calculate the Length\nor One Pad to select connected Tracks')
|
||||
#
|
||||
|
@ -7,15 +7,15 @@
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
height="26"
|
||||
width="26"
|
||||
version="1.1"
|
||||
id="svg2"
|
||||
inkscape:version="0.92.3 (2405546, 2018-03-11)"
|
||||
inkscape:export-ydpi="553.84998"
|
||||
inkscape:export-xdpi="553.84998"
|
||||
inkscape:export-filename="C:\Users\userC\AppData\Roaming\kicad\scripting\plugins\kicad-action-tools\Snap2Grid\snap2grid.png"
|
||||
sodipodi:docname="snap2grid.svg"
|
||||
inkscape:export-filename="/home/mau/.kicad_plugins/kicad-action-tools/Snap2Grid/snap2grid.png"
|
||||
inkscape:export-xdpi="118.15385"
|
||||
inkscape:export-ydpi="118.15385">
|
||||
inkscape:version="1.0beta2 (c8d5c0e, 2020-01-08)"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
width="26"
|
||||
height="26">
|
||||
<metadata
|
||||
id="metadata72">
|
||||
<rdf:RDF>
|
||||
@ -31,212 +31,213 @@
|
||||
<defs
|
||||
id="defs70" />
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1009"
|
||||
id="namedview68"
|
||||
showgrid="true"
|
||||
inkscape:snap-grids="true"
|
||||
inkscape:snap-to-guides="true"
|
||||
inkscape:zoom="8.1181296"
|
||||
inkscape:cx="-43.153083"
|
||||
inkscape:cy="14.972949"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:document-rotation="0"
|
||||
inkscape:current-layer="svg2"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg2">
|
||||
inkscape:window-y="-7"
|
||||
inkscape:window-x="-7"
|
||||
inkscape:cy="20.096351"
|
||||
inkscape:cx="12.998223"
|
||||
inkscape:zoom="11.480769"
|
||||
inkscape:snap-to-guides="true"
|
||||
inkscape:snap-grids="true"
|
||||
showgrid="true"
|
||||
id="namedview68"
|
||||
inkscape:window-height="1010"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:pageopacity="0"
|
||||
guidetolerance="10"
|
||||
gridtolerance="10"
|
||||
objecttolerance="10"
|
||||
borderopacity="1"
|
||||
bordercolor="#666666"
|
||||
pagecolor="#ffffff">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid3049"
|
||||
empspacing="1"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
snapvisiblegridlinesonly="true"
|
||||
spacingx="0.5"
|
||||
spacingy="0.5"
|
||||
originy="0"
|
||||
originx="0"
|
||||
originy="0" />
|
||||
spacingy="0.5"
|
||||
spacingx="0.5"
|
||||
snapvisiblegridlinesonly="true"
|
||||
enabled="true"
|
||||
visible="true"
|
||||
empspacing="1"
|
||||
id="grid3049"
|
||||
type="xygrid" />
|
||||
</sodipodi:namedview>
|
||||
<path
|
||||
style="fill:#333333;fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 5.5,4 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z"
|
||||
id="path10"
|
||||
d="m 5.5,4 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z" />
|
||||
<path
|
||||
style="fill:#333333;fill-rule:evenodd;fill-opacity:1"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#333333;fill-rule:evenodd" />
|
||||
<path
|
||||
d="m 11.5,4 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z"
|
||||
id="path10-9"
|
||||
d="m 11.5,4 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z" />
|
||||
<path
|
||||
style="fill:#333333;fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path10-4"
|
||||
d="m 17.5,4 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z" />
|
||||
<path
|
||||
style="fill:#333333;fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path10-7"
|
||||
d="m 23.5,4 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z" />
|
||||
<path
|
||||
style="fill:#333333;fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path10-8"
|
||||
d="m 5.5,10 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z" />
|
||||
<path
|
||||
style="fill:#333333;fill-rule:evenodd;fill-opacity:1"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path10-9-3"
|
||||
d="m 11.5,10 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z" />
|
||||
<path
|
||||
style="fill:#333333;fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path10-4-8"
|
||||
d="m 17.5,10 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z" />
|
||||
<path
|
||||
style="fill:#333333;fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path10-7-5"
|
||||
d="m 23.5,10 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z" />
|
||||
<path
|
||||
style="fill:#333333;fill-rule:evenodd;fill-opacity:1"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path10-71"
|
||||
d="m 5.5,16 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z" />
|
||||
<path
|
||||
style="fill:#333333;fill-rule:evenodd;fill-opacity:1"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path10-4-3"
|
||||
d="m 17.5,16 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z" />
|
||||
<path
|
||||
style="fill:#333333;fill-rule:evenodd;fill-opacity:1"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path10-7-8"
|
||||
d="m 23.5,16 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z" />
|
||||
<path
|
||||
style="fill:#333333;fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path10-3"
|
||||
d="m 5.5,22 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z" />
|
||||
<path
|
||||
style="fill:#333333;fill-rule:evenodd;fill-opacity:1"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path10-9-5"
|
||||
d="m 11.5,22 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z" />
|
||||
<path
|
||||
style="fill:#333333;fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path10-4-6"
|
||||
d="m 17.5,22 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z" />
|
||||
<path
|
||||
style="fill:#333333;fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path10-7-59"
|
||||
d="m 23.5,22 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z" />
|
||||
<path
|
||||
d="M 11,7 A 1,1.0015023 0 0 1 9,7 1,1.0015023 0 1 1 11,7 z"
|
||||
id="path3811"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#333333;fill-rule:evenodd;fill-opacity:1" />
|
||||
<path
|
||||
d="m 17.5,4 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z"
|
||||
id="path10-4"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#333333;fill-rule:evenodd" />
|
||||
<path
|
||||
d="m 23.5,4 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z"
|
||||
id="path10-7"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#333333;fill-rule:evenodd" />
|
||||
<path
|
||||
d="m 5.5,10 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z"
|
||||
id="path10-8"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#333333;fill-rule:evenodd" />
|
||||
<path
|
||||
d="m 11.5,10 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z"
|
||||
id="path10-9-3"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#333333;fill-rule:evenodd;fill-opacity:1" />
|
||||
<path
|
||||
d="m 17.5,10 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z"
|
||||
id="path10-4-8"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#333333;fill-rule:evenodd" />
|
||||
<path
|
||||
d="m 23.5,10 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z"
|
||||
id="path10-7-5"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#333333;fill-rule:evenodd" />
|
||||
<path
|
||||
d="m 5.5,16 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z"
|
||||
id="path10-71"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#333333;fill-rule:evenodd;fill-opacity:1" />
|
||||
<path
|
||||
d="m 17.5,16 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z"
|
||||
id="path10-4-3"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#333333;fill-rule:evenodd;fill-opacity:1" />
|
||||
<path
|
||||
d="m 23.5,16 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z"
|
||||
id="path10-7-8"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#333333;fill-rule:evenodd;fill-opacity:1" />
|
||||
<path
|
||||
d="m 5.5,22 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z"
|
||||
id="path10-3"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#333333;fill-rule:evenodd" />
|
||||
<path
|
||||
d="m 11.5,22 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z"
|
||||
id="path10-9-5"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#333333;fill-rule:evenodd;fill-opacity:1" />
|
||||
<path
|
||||
d="m 17.5,22 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z"
|
||||
id="path10-4-6"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#333333;fill-rule:evenodd" />
|
||||
<path
|
||||
d="m 23.5,22 a 1.5,1.5022534 0 0 1 -3,0 1.5,1.5022534 0 1 1 3,0 z"
|
||||
id="path10-7-59"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#333333;fill-rule:evenodd" />
|
||||
<path
|
||||
style="fill:#333333;fill-rule:evenodd;fill-opacity:1"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3811"
|
||||
d="M 11,7 A 1,1.0015023 0 0 1 9,7 1,1.0015023 0 1 1 11,7 z" />
|
||||
<path
|
||||
d="m 20,16 a 1,1.0015023 0 0 1 -2,0 1,1.0015023 0 1 1 2,0 z"
|
||||
id="path3821"
|
||||
d="m 20,16 a 1,1.0015023 0 0 1 -2,0 1,1.0015023 0 1 1 2,0 z" />
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#333333;fill-rule:evenodd;fill-opacity:1" />
|
||||
<g
|
||||
transform="matrix(0.67334578,0,0,0.67334578,6.072015,-0.80029514)"
|
||||
id="g4164">
|
||||
id="g4164"
|
||||
transform="matrix(0.67334578,0,0,0.67334578,6.072015,-0.80029514)">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="rect51"
|
||||
style="fill:#e6e6e6;stroke:#545454;stroke-width:0.97711289;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 1.5380859,6.5039062 v 4.6249998 a 2.2240581,1.9589449 0 0 1 0,3.822266 V 20.59375 H 24.461914 V 6.5039062 Z"
|
||||
style="fill:#e6e6e6;stroke:#545454;stroke-width:0.97711289;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
id="rect51"
|
||||
inkscape:connector-curvature="0" />
|
||||
<g
|
||||
transform="translate(-0.53360319)"
|
||||
id="g3983">
|
||||
id="g3983"
|
||||
transform="translate(-0.53360319)">
|
||||
<rect
|
||||
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-width:0.93241322;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="rotate(-90)"
|
||||
height="4.0659709"
|
||||
width="6.0590835"
|
||||
y="4.5123401"
|
||||
id="rect73"
|
||||
x="-8.5317764"
|
||||
id="rect73" />
|
||||
<rect
|
||||
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-width:0.93241322;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="rotate(-90)"
|
||||
height="4.0659709"
|
||||
y="4.5123401"
|
||||
width="6.0590835"
|
||||
y="11.451617"
|
||||
height="4.0659709"
|
||||
transform="rotate(-90)"
|
||||
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-width:0.93241322;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<rect
|
||||
id="rect73-5"
|
||||
x="-8.5076618"
|
||||
id="rect73-5" />
|
||||
<rect
|
||||
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-width:0.93241322;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="rotate(-90)"
|
||||
height="4.0659709"
|
||||
y="11.451617"
|
||||
width="6.0590835"
|
||||
y="18.488895"
|
||||
height="4.0659709"
|
||||
transform="rotate(-90)"
|
||||
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-width:0.93241322;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<rect
|
||||
id="rect73-56"
|
||||
x="-8.5498009"
|
||||
id="rect73-56" />
|
||||
y="18.488895"
|
||||
width="6.0590835"
|
||||
height="4.0659709"
|
||||
transform="rotate(-90)"
|
||||
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-width:0.93241322;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
</g>
|
||||
<g
|
||||
id="g3983-1"
|
||||
transform="translate(-0.53360319,16.090848)">
|
||||
transform="translate(-0.53360319,16.090848)"
|
||||
id="g3983-1">
|
||||
<rect
|
||||
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-width:0.93241322;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="rotate(-90)"
|
||||
height="4.0659709"
|
||||
width="6.0590835"
|
||||
y="4.5123401"
|
||||
id="rect73-0"
|
||||
x="-8.5317764"
|
||||
id="rect73-0" />
|
||||
<rect
|
||||
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-width:0.93241322;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="rotate(-90)"
|
||||
height="4.0659709"
|
||||
y="4.5123401"
|
||||
width="6.0590835"
|
||||
y="11.451617"
|
||||
height="4.0659709"
|
||||
transform="rotate(-90)"
|
||||
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-width:0.93241322;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<rect
|
||||
id="rect73-5-4"
|
||||
x="-8.5076618"
|
||||
id="rect73-5-4" />
|
||||
<rect
|
||||
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-width:0.93241322;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
transform="rotate(-90)"
|
||||
height="4.0659709"
|
||||
y="11.451617"
|
||||
width="6.0590835"
|
||||
y="18.488895"
|
||||
height="4.0659709"
|
||||
transform="rotate(-90)"
|
||||
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-width:0.93241322;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
<rect
|
||||
id="rect73-56-9"
|
||||
x="-8.5498009"
|
||||
id="rect73-56-9" />
|
||||
y="18.488895"
|
||||
width="6.0590835"
|
||||
height="4.0659709"
|
||||
transform="rotate(-90)"
|
||||
style="fill:#00c921;fill-opacity:1;stroke:#545454;stroke-width:0.93241322;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
|
||||
</g>
|
||||
</g>
|
||||
<path
|
||||
style="fill:#c80000;fill-rule:evenodd;fill-opacity:1"
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 12,16 a 2,2.0030045 0 0 1 -4,0 2,2.0030045 0 1 1 4,0 z"
|
||||
id="path10-9-33"
|
||||
d="m 12,16 a 2,2.0030045 0 0 1 -4,0 2,2.0030045 0 1 1 4,0 z" />
|
||||
<path
|
||||
style="fill:#c80000;fill-rule:evenodd;fill-opacity:1"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#c80000;fill-rule:evenodd;fill-opacity:1" />
|
||||
<path
|
||||
d="m 11,13 a 1,1.0015023 0 0 1 -2,0 1,1.0015023 0 1 1 2,0 z"
|
||||
id="path3813"
|
||||
d="m 11,13 a 1,1.0015023 0 0 1 -2,0 1,1.0015023 0 1 1 2,0 z" />
|
||||
<path
|
||||
d="m 11,19 a 1,1.0015023 0 0 1 -2,0 1,1.0015023 0 1 1 2,0 z"
|
||||
id="path3815"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#c80000;fill-rule:evenodd;fill-opacity:1" />
|
||||
<path
|
||||
style="fill:#c80000;fill-rule:evenodd;fill-opacity:1"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3817"
|
||||
d="m 8,16 a 1,1.0015023 0 0 1 -2,0 1,1.0015023 0 1 1 2,0 z" />
|
||||
id="path3815"
|
||||
d="m 11,19 a 1,1.0015023 0 0 1 -2,0 1,1.0015023 0 1 1 2,0 z" />
|
||||
<path
|
||||
d="m 14,16 a 1,1.0015023 0 0 1 -2,0 1,1.0015023 0 1 1 2,0 z"
|
||||
id="path3819"
|
||||
d="m 8,16 a 1,1.0015023 0 0 1 -2,0 1,1.0015023 0 1 1 2,0 z"
|
||||
id="path3817"
|
||||
inkscape:connector-curvature="0"
|
||||
style="fill:#c80000;fill-rule:evenodd;fill-opacity:1" />
|
||||
<path
|
||||
style="fill:#c80000;fill-rule:evenodd;fill-opacity:1"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3819"
|
||||
d="m 14,16 a 1,1.0015023 0 0 1 -2,0 1,1.0015023 0 1 1 2,0 z" />
|
||||
</svg>
|
||||
|
Before Width: | Height: | Size: 8.6 KiB After Width: | Height: | Size: 8.7 KiB |