##// END OF EJS Templates
PCB Viewer is working but still WIP.
jeandet -
r7:f3cd68e05582 default
parent child
Show More
@@ -0,0 +1,41
1 #-------------------------------------------------
2 #
3 # Project created by QtCreator 2015-06-11T21:37:25
4 #
5 #-------------------------------------------------
6
7 QT += core gui opengl
8 CONFIG += qilib
9
10 greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
11
12 TARGET = PCBView
13 TEMPLATE = app
14
15 MOC_DIR = moc
16 RCC_DIR = resources
17 OBJECTS_DIR = obj
18 DESTDIR = ../../bin
19
20 INCLUDEPATH += ../../qilib $${DESTDIR}/../qilib/
21
22 LIBS += -L../../bin -lQIlib
23
24 SOURCES += main.cpp\
25 mainwindow.cpp \
26 pcbgraphicview.cpp \
27 pcbrectpad.cpp \
28 pcbmodule.cpp \
29 pcbline.cpp \
30 pcbcontext.cpp \
31 pcbvia.cpp
32
33 HEADERS += mainwindow.h \
34 pcbgraphicview.h \
35 pcbrectpad.h \
36 pcbmodule.h \
37 pcbline.h \
38 pcbcontext.h \
39 pcbvia.h
40
41 FORMS += mainwindow.ui
@@ -0,0 +1,32
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the Kicad Tools Software
3 -- Copyright (C) 2015, Plasma Physics Laboratory - CNRS
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 2 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------*/
19 /*-- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
21 ----------------------------------------------------------------------------*/
22 #include "mainwindow.h"
23 #include <QApplication>
24
25 int main(int argc, char *argv[])
26 {
27 QApplication a(argc, argv);
28 MainWindow w;
29 w.show();
30
31 return a.exec();
32 }
@@ -0,0 +1,87
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the Kicad Tools Software
3 -- Copyright (C) 2015, Plasma Physics Laboratory - CNRS
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 2 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------*/
19 /*-- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
21 ----------------------------------------------------------------------------*/
22 #include "mainwindow.h"
23 #include "ui_mainwindow.h"
24 #include "pcbmodule.h"
25 #include "pcbline.h"
26 #include "pcbvia.h"
27
28
29 MainWindow::MainWindow(QWidget *parent) :
30 QMainWindow(parent),
31 ui(new Ui::MainWindow)
32 {
33 ui->setupUi(this);
34 this->p_scene = new QGraphicsScene();
35 this->p_scene->setSceneRect(0, 0, 500, 200);
36
37 this->context = new PCBContext();
38 this->ui->graphicsView->setScene(this->p_scene);
39 QIlib::QIcadPcb pcbDriver;
40 // pcbDriver.parsePcb("/opt/kicadTools/test/testFiles/pcb2.kicad_pcb");
41 // pcbDriver.parsePcb("/home/jeandet/Documents/PCB/ADC_STAMP/ADC_STAMP.kicad_pcb");
42 pcbDriver.parsePcb("/usr/share/kicad/demos/video/video.kicad_pcb");
43 // pcbDriver.parsePcb("/usr/share/kicad/demos/kit-dev-coldfire-xilinx_5213/kit-dev-coldfire-xilinx_5213.kicad_pcb");
44 for(int i=0;i<pcbDriver.pcbRoot->layers.layers.count();i++)
45 {
46 this->context->addlayer(pcbDriver.pcbRoot->layers.layers.at(i)->name(),pcbDriver.pcbRoot->layers.layers.at(i)->index());
47 }
48 for(int i=0;i<pcbDriver.pcbRoot->modules.count();i++)
49 {
50 this->p_scene->addItem(new PCBModule(pcbDriver.pcbRoot->modules.at(i),this->context));
51 }
52 for(int i=0;i<pcbDriver.pcbRoot->lines.count();i++)
53 {
54 this->p_scene->addItem(new PCBLine((QIlib::QIcadAbstractPcbLine*)pcbDriver.pcbRoot->lines.at(i),this->context));
55 }
56 for(int i=0;i<pcbDriver.pcbRoot->segments.count();i++)
57 {
58 this->p_scene->addItem(new PCBLine((QIlib::QIcadAbstractPcbLine*)pcbDriver.pcbRoot->segments.at(i),this->context));
59 }
60 for(int i=0;i<pcbDriver.pcbRoot->vias.count();i++)
61 {
62 this->p_scene->addItem(new PCBVia(pcbDriver.pcbRoot->vias.at(i),this->context));
63 }
64 connect(this->ui->actionRedraw,SIGNAL(triggered(bool)),this,SLOT(redraw()));
65 }
66
67 MainWindow::~MainWindow()
68 {
69 delete ui;
70 }
71
72 void MainWindow::redraw()
73 {
74 this->p_scene->update();
75 }
76
77 void MainWindow::changeEvent(QEvent *e)
78 {
79 QMainWindow::changeEvent(e);
80 switch (e->type()) {
81 case QEvent::LanguageChange:
82 ui->retranslateUi(this);
83 break;
84 default:
85 break;
86 }
87 }
@@ -0,0 +1,57
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the Kicad Tools Software
3 -- Copyright (C) 2015, Plasma Physics Laboratory - CNRS
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 2 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------*/
19 /*-- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
21 ----------------------------------------------------------------------------*/
22 #ifndef MAINWINDOW_H
23 #define MAINWINDOW_H
24
25 #include <QMainWindow>
26 #include <QGraphicsScene>
27 #include <qicadnetlist.h>
28 #include <qicadpcb.h>
29 #include <QMap>
30 #include <pcbcontext.h>
31
32
33
34 namespace Ui {
35 class MainWindow;
36 }
37
38 class MainWindow : public QMainWindow
39 {
40 Q_OBJECT
41
42 public:
43 explicit MainWindow(QWidget *parent = 0);
44 ~MainWindow();
45
46 public slots:
47 void redraw();
48 protected:
49 void changeEvent(QEvent *e);
50
51 private:
52 Ui::MainWindow *ui;
53 QGraphicsScene* p_scene;
54 PCBContext* context;
55 };
56
57 #endif // MAINWINDOW_H
@@ -0,0 +1,77
1 <?xml version="1.0" encoding="UTF-8"?>
2 <ui version="4.0">
3 <class>MainWindow</class>
4 <widget class="QMainWindow" name="MainWindow">
5 <property name="geometry">
6 <rect>
7 <x>0</x>
8 <y>0</y>
9 <width>547</width>
10 <height>393</height>
11 </rect>
12 </property>
13 <property name="windowTitle">
14 <string>MainWindow</string>
15 </property>
16 <widget class="QWidget" name="centralWidget">
17 <layout class="QGridLayout" name="gridLayout">
18 <item row="0" column="0">
19 <widget class="PCBGraphicView" name="graphicsView"/>
20 </item>
21 </layout>
22 </widget>
23 <widget class="QMenuBar" name="menuBar">
24 <property name="geometry">
25 <rect>
26 <x>0</x>
27 <y>0</y>
28 <width>547</width>
29 <height>27</height>
30 </rect>
31 </property>
32 <widget class="QMenu" name="menuFile">
33 <property name="title">
34 <string>Fi&amp;le</string>
35 </property>
36 <addaction name="actionOpen"/>
37 </widget>
38 <widget class="QMenu" name="menuEdit">
39 <property name="title">
40 <string>edit</string>
41 </property>
42 <addaction name="actionRedraw"/>
43 </widget>
44 <addaction name="menuFile"/>
45 <addaction name="menuEdit"/>
46 </widget>
47 <widget class="QToolBar" name="mainToolBar">
48 <attribute name="toolBarArea">
49 <enum>TopToolBarArea</enum>
50 </attribute>
51 <attribute name="toolBarBreak">
52 <bool>false</bool>
53 </attribute>
54 </widget>
55 <widget class="QStatusBar" name="statusBar"/>
56 <action name="actionOpen">
57 <property name="text">
58 <string>&amp;open</string>
59 </property>
60 </action>
61 <action name="actionRedraw">
62 <property name="text">
63 <string>&amp;redraw</string>
64 </property>
65 </action>
66 </widget>
67 <layoutdefault spacing="6" margin="11"/>
68 <customwidgets>
69 <customwidget>
70 <class>PCBGraphicView</class>
71 <extends>QGraphicsView</extends>
72 <header>pcbgraphicview.h</header>
73 </customwidget>
74 </customwidgets>
75 <resources/>
76 <connections/>
77 </ui>
@@ -0,0 +1,73
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the Kicad Tools Software
3 -- Copyright (C) 2015, Plasma Physics Laboratory - CNRS
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 2 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------*/
19 /*-- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
21 ----------------------------------------------------------------------------*/
22 #include "pcbcontext.h"
23
24 Qt::GlobalColor Colours[]= {
25 Qt::red,
26 Qt::blue,
27 Qt::black,
28 Qt::green,
29 Qt::darkGreen,
30 Qt::cyan,
31 Qt::darkRed,
32 Qt::gray,
33 Qt::yellow,
34 Qt::darkBlue,
35 Qt::darkCyan,
36 Qt::magenta,
37 Qt::darkMagenta,
38 Qt::darkYellow,
39 Qt::darkGray,
40 Qt::lightGray
41 };
42
43 PCBContext::PCBContext(QObject *parent) : QObject(parent)
44 {
45
46 }
47
48 void PCBContext::addlayer(const QString &name, int number)
49 {
50 this->layers_map[name]=number;
51 layers_colors[number] = Colours[number%15];
52 }
53
54 int PCBContext::layer(const QString &name)
55 {
56 return layers_map[name];
57 }
58
59 const QColor &PCBContext::layerColor(const QString &name)
60 {
61 return layers_colors[layers_map[name]];
62 }
63
64 const QColor &PCBContext::layerColor(int number)
65 {
66 return layers_colors[number];
67 }
68
69 const QString PCBContext::layer(int number)
70 {
71 return layers_map.key(number);
72 }
73
@@ -0,0 +1,48
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the Kicad Tools Software
3 -- Copyright (C) 2015, Plasma Physics Laboratory - CNRS
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 2 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------*/
19 /*-- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
21 ----------------------------------------------------------------------------*/
22 #ifndef PCBCONTEXT_H
23 #define PCBCONTEXT_H
24
25 #include <QObject>
26 #include <QWidget>
27 #include <QMap>
28
29 class PCBContext : public QObject
30 {
31 Q_OBJECT
32 public:
33 explicit PCBContext(QObject *parent = 0);
34 void addlayer(const QString& name,int number);
35 int layer(const QString& name);
36 const QColor& layerColor(const QString& name);
37 const QColor& layerColor(int number);
38 const QString layer(int number);
39 signals:
40
41 public slots:
42
43 private:
44 QMap<int,QColor> layers_colors;
45 QMap<QString,int> layers_map;
46 };
47
48 #endif // PCBCONTEXT_H
@@ -0,0 +1,145
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the Kicad Tools Software
3 -- Copyright (C) 2015, Plasma Physics Laboratory - CNRS
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 2 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------*/
19 /*-- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
21 ----------------------------------------------------------------------------*/
22 #include "pcbgraphicview.h"
23
24 #include <math.h>
25 #include <QGLWidget>
26
27 PCBGraphicView::PCBGraphicView(QWidget *parent)
28 :QGraphicsView(parent)
29 {
30
31 this->setRenderHint(QPainter::Antialiasing, true);
32 this->setDragMode(QGraphicsView::RubberBandDrag);
33 this->setOptimizationFlags(QGraphicsView::DontSavePainterState);
34 this->setViewportUpdateMode(QGraphicsView::SmartViewportUpdate);
35
36 this->setContextMenuPolicy(Qt::ActionsContextMenu);
37 this->setTransformationAnchor(AnchorUnderMouse);
38 this->scale(qreal(0.8), qreal(0.8));
39 this->setRubberBandSelectionMode(Qt::ContainsItemBoundingRect);
40 this->setDragMode(RubberBandDrag);
41 this->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
42 this->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
43
44 this->ctrl_pressed = false;
45 this->shift_pressed = false;
46 }
47
48
49 void PCBGraphicView::keyPressEvent(QKeyEvent *event)
50 {
51 switch (event->key()) {
52 case Qt::Key_Plus:
53 zoomIn();
54 break;
55 case Qt::Key_Minus:
56 zoomOut();
57 break;
58 case Qt::Key_Shift:
59 this->shift_pressed = true;
60 break;
61 case Qt::Key_Control:
62 this->ctrl_pressed = true;
63 break;
64 default:
65 QGraphicsView::keyPressEvent(event);
66 }
67 }
68
69 void PCBGraphicView::keyReleaseEvent(QKeyEvent *event)
70 {
71 switch (event->key()) {
72 case Qt::Key_Shift:
73 this->shift_pressed = false;
74 break;
75 case Qt::Key_Control:
76 this->ctrl_pressed = false;
77 break;
78 default:
79 QGraphicsView::keyReleaseEvent(event);
80 }
81 }
82
83 void PCBGraphicView::wheelEvent(QWheelEvent *event)
84 {
85
86 if (event->modifiers() & Qt::ControlModifier)
87 {
88 if (event->orientation()== Qt::Vertical)
89 scaleView(pow((double)2, event->delta() / 240.0));
90 }
91 else
92 {
93 if (event->modifiers() & Qt::ShiftModifier)
94 {
95 QWheelEvent* tempevent = new QWheelEvent(event->pos(),(event->delta()/10),event->buttons(),event->modifiers(),Qt::Horizontal);
96 QGraphicsView::wheelEvent(tempevent);
97 }
98 else
99 QGraphicsView::wheelEvent(event);
100 }
101 }
102
103
104
105 void PCBGraphicView::drawBackground(QPainter *painter, const QRectF &rect)
106 {
107 Q_UNUSED(rect);
108
109 // Shadow
110 QRectF sceneRect = this->sceneRect();
111 QRectF rightShadow(sceneRect.right(), sceneRect.top() + 20, 20, sceneRect.height());
112 QRectF bottomShadow(sceneRect.left() + 20, sceneRect.bottom(), sceneRect.width(), 20);
113 if (rightShadow.intersects(rect) || rightShadow.contains(rect))
114 painter->fillRect(rightShadow, Qt::darkGray);
115 if (bottomShadow.intersects(rect) || bottomShadow.contains(rect))
116 painter->fillRect(bottomShadow, Qt::darkGray);
117
118 // Fill
119 QLinearGradient gradient(sceneRect.topLeft(), sceneRect.bottomRight());
120 gradient.setColorAt(0, Qt::white);
121 gradient.setColorAt(1, Qt::lightGray);
122 painter->fillRect(rect.intersected(sceneRect), gradient);
123 painter->setBrush(Qt::NoBrush);
124 painter->drawRect(sceneRect);
125 }
126
127
128 void PCBGraphicView::scaleView(qreal scaleFactor)
129 {
130 qreal factor = transform().scale(scaleFactor, scaleFactor).mapRect(QRectF(0, 0, 1, 1)).width();
131 if (factor < 0.02 || factor > 1000)
132 return;
133 scale(scaleFactor, scaleFactor);
134 }
135
136
137 void PCBGraphicView::zoomIn()
138 {
139 scaleView(qreal(1.2));
140 }
141
142 void PCBGraphicView::zoomOut()
143 {
144 scaleView(1 / qreal(1.2));
145 }
@@ -0,0 +1,54
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the Kicad Tools Software
3 -- Copyright (C) 2015, Plasma Physics Laboratory - CNRS
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 2 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------*/
19 /*-- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
21 ----------------------------------------------------------------------------*/
22 #ifndef PCBGRAPHICVIEW_H
23 #define PCBGRAPHICVIEW_H
24
25 #include <QGraphicsView>
26 #include <QObject>
27 #include <QWidget>
28 #include <QKeyEvent>
29 #include <QPainter>
30 #include <QMap>
31
32 class PCBGraphicView : public QGraphicsView
33 {
34 public:
35 PCBGraphicView(QWidget *parent = 0);
36 void itemMoved();
37
38 public slots:
39 void zoomIn();
40 void zoomOut();
41
42 protected:
43 void keyPressEvent(QKeyEvent *event);
44 void keyReleaseEvent(QKeyEvent *event);
45 void wheelEvent(QWheelEvent *event);
46 void drawBackground(QPainter *painter, const QRectF &rect);
47
48 void scaleView(qreal scaleFactor);
49 private:
50 bool ctrl_pressed;
51 bool shift_pressed;
52 };
53
54 #endif // PCBGRAPHICVIEW_H
@@ -0,0 +1,52
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the Kicad Tools Software
3 -- Copyright (C) 2015, Plasma Physics Laboratory - CNRS
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 2 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------*/
19 /*-- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
21 ----------------------------------------------------------------------------*/
22 #include "pcbline.h"
23 #include <QPen>
24
25 PCBLine::PCBLine(QIlib::QIcadAbstractPcbLine *lineNode, QPointF offset,PCBContext* context)
26 :lineNode(lineNode),context(context)
27 {
28 init(offset);
29 }
30
31 PCBLine::PCBLine(QIlib::QIcadAbstractPcbLine *lineNode, PCBContext *context)
32 :lineNode(lineNode),context(context)
33 {
34 init(QPointF(0,0));
35 }
36
37 void PCBLine::init(QPointF offset)
38 {
39 this->setCacheMode(QGraphicsItem::DeviceCoordinateCache);
40 this->setFlags(ItemIsMovable|ItemIsSelectable|ItemIsFocusable);
41 QPointF startPos=(offset+lineNode->startPos());
42 QPointF stopPos=(offset+lineNode->stopPos());
43 this->setLine(startPos.x(),startPos.y(),stopPos.x(),stopPos.y());
44 QPen pen = this->pen();
45 pen.setWidthF(lineNode->width());
46 pen.setJoinStyle(Qt::RoundJoin);
47 pen.setCapStyle(Qt::RoundCap);
48 pen.setColor(context->layerColor(lineNode->layers().first()));
49 this->setZValue(-context->layer(lineNode->layers().first()));
50 this->setPen(pen);
51 setOpacity(0.6);
52 }
@@ -0,0 +1,42
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the Kicad Tools Software
3 -- Copyright (C) 2015, Plasma Physics Laboratory - CNRS
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 2 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------*/
19 /*-- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
21 ----------------------------------------------------------------------------*/
22 #ifndef PCBLINE_H
23 #define PCBLINE_H
24
25 #include <QObject>
26 #include <QGraphicsItem>
27 #include <QGraphicsLineItem>
28 #include <qicadpcb.h>
29 #include <pcbcontext.h>
30
31 class PCBLine: public QGraphicsLineItem
32 {
33 public:
34 PCBLine(QIlib::QIcadAbstractPcbLine* lineNode,QPointF offset,PCBContext* context);
35 PCBLine(QIlib::QIcadAbstractPcbLine* lineNode,PCBContext* context);
36 private:
37 void init(QPointF offset);
38 QIlib::QIcadAbstractPcbLine* lineNode;
39 PCBContext* context;
40 };
41
42 #endif // PCBLINE_H
@@ -0,0 +1,44
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the Kicad Tools Software
3 -- Copyright (C) 2015, Plasma Physics Laboratory - CNRS
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 2 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------*/
19 /*-- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
21 ----------------------------------------------------------------------------*/
22 #include "pcbmodule.h"
23 #include "pcbline.h"
24 #include "pcbrectpad.h"
25
26 PCBModule::PCBModule(QIlib::QIcadPcbModule *moduleNode, PCBContext *context)
27 :QGraphicsItemGroup(),context(context)
28 {
29 this->setCacheMode(QGraphicsItem::DeviceCoordinateCache);
30 this->setFlags(ItemIsMovable|ItemIsSelectable|ItemIsFocusable);
31 // this->setFlag(QGraphicsItem::ItemSendsGeometryChanges, true);
32 // this->addToGroup(new QGraphicsRectItem(0,0,2,2));
33 this->setPos(moduleNode->pos());
34 for(int i=0;i<moduleNode->fp_lines.count();i++)
35 {
36 this->addToGroup(new PCBLine((QIlib::QIcadAbstractPcbLine*)moduleNode->fp_lines.at(i),moduleNode->pos(),context));
37 }
38 for(int i=0;i<moduleNode->pads.count();i++)
39 {
40 this->addToGroup(new PCBRectPad((QIlib::QIcadPcbPad*)moduleNode->pads.at(i),moduleNode->pos(),context));
41 }
42 this->setRotation(moduleNode->angle());
43 }
44
@@ -0,0 +1,40
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the Kicad Tools Software
3 -- Copyright (C) 2015, Plasma Physics Laboratory - CNRS
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 2 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------*/
19 /*-- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
21 ----------------------------------------------------------------------------*/
22 #ifndef PCBMODULE_H
23 #define PCBMODULE_H
24
25 #include <QObject>
26 #include <QWidget>
27 #include <QGraphicsItemGroup>
28 #include <qicadpcb.h>
29 #include <pcbcontext.h>
30
31 class PCBModule : public QGraphicsItemGroup
32 {
33 public:
34 PCBModule(QIlib::QIcadPcbModule* moduleNode,PCBContext* context);
35 private:
36 QIlib::QIcadPcbModule* moduleNode;
37 PCBContext* context;
38 };
39
40 #endif // PCBMODULE_H
@@ -0,0 +1,80
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the Kicad Tools Software
3 -- Copyright (C) 2015, Plasma Physics Laboratory - CNRS
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 2 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------*/
19 /*-- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
21 ----------------------------------------------------------------------------*/
22 #include "pcbrectpad.h"
23 #include <QPen>
24
25 PCBRectPad::PCBRectPad(QIlib::QIcadPcbPad *padNode, PCBContext *context)
26 :QGraphicsItemGroup(),padNode(padNode),context(context)
27 {
28 this->init(QPointF(0.0,0.0));
29 }
30
31
32
33 PCBRectPad::PCBRectPad(QIlib::QIcadPcbPad *padNode, QPointF offset, PCBContext *context)
34 :QGraphicsItemGroup(),padNode(padNode),context(context)
35 {
36 this->init(offset);
37 }
38
39 void PCBRectPad::init( QPointF offset)
40 {
41 this->setCacheMode(QGraphicsItem::DeviceCoordinateCache);
42 offset-=QPointF(this->padNode->size().width()/2,this->padNode->size().height()/2);
43 if(this->padNode->shape()==QIlib::QIcadPcbPad::rectangle)
44 {
45 for(int i=0;i<this->padNode->layers().count();i++)
46 {
47 QGraphicsRectItem* rect = new QGraphicsRectItem();
48 QPen pen = rect->pen();
49 pen.setWidthF(0.01);
50 rect->setPen(pen);
51 QBrush brush = rect->brush();
52 brush.setStyle(Qt::SolidPattern);
53 brush.setColor(context->layerColor(this->padNode->layers().at(i)));
54 rect->setBrush(brush);
55 QRectF rec(this->padNode->pos()+offset,this->padNode->size());
56 rect->setRect(rec);
57 rect->setZValue(-context->layer(padNode->layers().at(i)));
58 this->addToGroup(rect);
59 }
60 }
61 if(this->padNode->shape()==QIlib::QIcadPcbPad::circle)
62 {
63 for(int i=0;i<this->padNode->layers().count();i++)
64 {
65 QGraphicsEllipseItem* ellipse = new QGraphicsEllipseItem();
66 QPen pen = ellipse->pen();
67 pen.setWidthF(0.01);
68 ellipse->setPen(pen);
69 QBrush brush = ellipse->brush();
70 brush.setStyle(Qt::SolidPattern);
71 brush.setColor(context->layerColor(this->padNode->layers().at(i)));
72 ellipse->setBrush(brush);
73 QRectF rec(this->padNode->pos()+offset,this->padNode->size());
74 ellipse->setRect(rec);
75 ellipse->setZValue(-context->layer(padNode->layers().at(i)));
76 this->addToGroup(ellipse);
77 }
78 }
79 setOpacity(0.6);
80 }
@@ -0,0 +1,48
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the Kicad Tools Software
3 -- Copyright (C) 2015, Plasma Physics Laboratory - CNRS
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 2 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------*/
19 /*-- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
21 ----------------------------------------------------------------------------*/
22 #ifndef PCBRECTPAD_H
23 #define PCBRECTPAD_H
24
25 #include <QObject>
26 #include <QWidget>
27 #include <QGraphicsRectItem>
28 #include <QGraphicsItemGroup>
29 #include <pcbcontext.h>
30 #include <qicadpcb.h>
31
32 class PCBRectPad : public QGraphicsItemGroup
33 {
34 public:
35 PCBRectPad(QIlib::QIcadPcbPad* padNode,PCBContext* context);
36 PCBRectPad(QIlib::QIcadPcbPad* padNode,QPointF offset,PCBContext* context);
37
38 private:
39 void init(QPointF offset);
40 QIlib::QIcadPcbPad* padNode;
41 QString name;
42 QPointF pos;
43 QRectF size;
44 QList<int> layers;
45 PCBContext* context;
46 };
47
48 #endif // PCBRECTPAD_H
@@ -0,0 +1,60
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the Kicad Tools Software
3 -- Copyright (C) 2015, Plasma Physics Laboratory - CNRS
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 2 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------*/
19 /*-- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
21 ----------------------------------------------------------------------------*/
22 #include "pcbvia.h"
23 #include <QPen>
24
25
26 PCBVia::PCBVia(QIlib::QIcadPcbVia *viaNode, PCBContext *context)
27 :QGraphicsItemGroup(),viaNode(viaNode),context(context)
28 {
29 this->init(QPointF(0.0,0.0));
30 }
31
32 PCBVia::PCBVia(QIlib::QIcadPcbVia *viaNode, QPointF offset, PCBContext *context)
33 :QGraphicsItemGroup(),viaNode(viaNode),context(context)
34 {
35 this->init(offset);
36 }
37
38 void PCBVia::init(QPointF offset)
39 {
40 this->setCacheMode(QGraphicsItem::DeviceCoordinateCache);
41 offset-=QPointF(this->viaNode->size().width()/2,this->viaNode->size().height()/2);
42
43 for(int i=0;i<this->viaNode->layers().count();i++)
44 {
45 QGraphicsEllipseItem* ellipse = new QGraphicsEllipseItem();
46 QPen pen = ellipse->pen();
47 pen.setWidthF(0.01);
48 ellipse->setPen(pen);
49 QBrush brush = ellipse->brush();
50 brush.setStyle(Qt::SolidPattern);
51 brush.setColor(context->layerColor(this->viaNode->layers().at(i)));
52 ellipse->setBrush(brush);
53 QRectF rec(this->viaNode->pos()+offset,this->viaNode->size());
54 ellipse->setRect(rec);
55 ellipse->setZValue(-context->layer(viaNode->layers().at(i)));
56 this->addToGroup(ellipse);
57 }
58
59 setOpacity(0.6);
60 }
@@ -0,0 +1,46
1 /*------------------------------------------------------------------------------
2 -- This file is a part of the Kicad Tools Software
3 -- Copyright (C) 2015, Plasma Physics Laboratory - CNRS
4 --
5 -- This program is free software; you can redistribute it and/or modify
6 -- it under the terms of the GNU General Public License as published by
7 -- the Free Software Foundation; either version 2 of the License, or
8 -- (at your option) any later version.
9 --
10 -- This program is distributed in the hope that it will be useful,
11 -- but WITHOUT ANY WARRANTY; without even the implied warranty of
12 -- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 -- GNU General Public License for more details.
14 --
15 -- You should have received a copy of the GNU General Public License
16 -- along with this program; if not, write to the Free Software
17 -- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 -------------------------------------------------------------------------------*/
19 /*-- Author : Alexis Jeandet
20 -- Mail : alexis.jeandet@member.fsf.org
21 ----------------------------------------------------------------------------*/
22 #ifndef PCBVIA_H
23 #define PCBVIA_H
24 #include <QObject>
25 #include <QWidget>
26 #include <QGraphicsRectItem>
27 #include <QGraphicsItemGroup>
28 #include <pcbcontext.h>
29 #include <qicadpcb.h>
30
31 class PCBVia: public QGraphicsItemGroup
32 {
33 public:
34 PCBVia(QIlib::QIcadPcbVia* viaNode,PCBContext* context);
35 PCBVia(QIlib::QIcadPcbVia* viaNode,QPointF offset,PCBContext* context);
36 private:
37 void init(QPointF offset);
38 QIlib::QIcadPcbVia* viaNode;
39 QString name;
40 QPointF pos;
41 QRectF size;
42 QList<int> layers;
43 PCBContext* context;
44 };
45
46 #endif // PCBVIA_H
This diff has been collapsed as it changes many lines, (776 lines changed) Show them Hide them
@@ -0,0 +1,776
1 (kicad_pcb (version 4) (host pcbnew "(after 2015-mar-04 BZR unknown)-product")
2
3 (general
4 (links 5)
5 (no_connects 0)
6 (area 125.75 89.15 189.850001 130.750001)
7 (thickness 1.6)
8 (drawings 6)
9 (tracks 11)
10 (zones 0)
11 (modules 6)
12 (nets 30)
13 )
14
15 (page A4)
16 (layers
17 (0 F.Cu signal)
18 (31 B.Cu signal)
19 (32 B.Adhes user)
20 (33 F.Adhes user)
21 (34 B.Paste user)
22 (35 F.Paste user)
23 (36 B.SilkS user)
24 (37 F.SilkS user)
25 (38 B.Mask user)
26 (39 F.Mask user)
27 (40 Dwgs.User user)
28 (41 Cmts.User user)
29 (42 Eco1.User user)
30 (43 Eco2.User user)
31 (44 Edge.Cuts user)
32 (45 Margin user)
33 (46 B.CrtYd user)
34 (47 F.CrtYd user)
35 (48 B.Fab user)
36 (49 F.Fab user)
37 )
38
39 (setup
40 (last_trace_width 0.25)
41 (trace_clearance 0.2)
42 (zone_clearance 0.508)
43 (zone_45_only yes)
44 (trace_min 0.2)
45 (segment_width 0.2)
46 (edge_width 0.1)
47 (via_size 0.6)
48 (via_drill 0.4)
49 (via_min_size 0.4)
50 (via_min_drill 0.3)
51 (uvia_size 0.3)
52 (uvia_drill 0.1)
53 (uvias_allowed no)
54 (uvia_min_size 0.2)
55 (uvia_min_drill 0.1)
56 (pcb_text_width 0.3)
57 (pcb_text_size 1.5 1.5)
58 (mod_edge_width 0.15)
59 (mod_text_size 1 1)
60 (mod_text_width 0.15)
61 (pad_size 1.5 1.5)
62 (pad_drill 0.6)
63 (pad_to_mask_clearance 0)
64 (aux_axis_origin 0 0)
65 (visible_elements FFFFFF7F)
66 (pcbplotparams
67 (layerselection 0x00030_80000001)
68 (usegerberextensions false)
69 (excludeedgelayer true)
70 (linewidth 0.100000)
71 (plotframeref false)
72 (viasonmask false)
73 (mode 1)
74 (useauxorigin false)
75 (hpglpennumber 1)
76 (hpglpenspeed 20)
77 (hpglpendiameter 15)
78 (hpglpenoverlay 2)
79 (psnegative false)
80 (psa4output false)
81 (plotreference true)
82 (plotvalue true)
83 (plotinvisibletext false)
84 (padsonsilk false)
85 (subtractmaskfromsilk false)
86 (outputformat 1)
87 (mirror false)
88 (drillshape 1)
89 (scaleselection 1)
90 (outputdirectory ""))
91 )
92
93 (net 0 "")
94 (net 1 "Net-(R101-Pad1)")
95 (net 2 "Net-(R101-Pad2)")
96 (net 3 "Net-(R102-Pad1)")
97 (net 4 "Net-(R103-Pad1)")
98 (net 5 "Net-(U101-Pad2)")
99 (net 6 "Net-(U101-Pad3)")
100 (net 7 "Net-(U101-Pad4)")
101 (net 8 "Net-(U101-Pad5)")
102 (net 9 "Net-(U101-Pad6)")
103 (net 10 "Net-(U101-Pad7)")
104 (net 11 "Net-(U101-Pad9)")
105 (net 12 "Net-(U101-Pad11)")
106 (net 13 "Net-(U101-Pad12)")
107 (net 14 "Net-(U101-Pad13)")
108 (net 15 "Net-(U101-Pad14)")
109 (net 16 "Net-(U101-Pad15)")
110 (net 17 "Net-(U101-Pad16)")
111 (net 18 "Net-(U101-Pad17)")
112 (net 19 "Net-(U101-Pad18)")
113 (net 20 "Net-(U101-Pad19)")
114 (net 21 "Net-(U101-Pad20)")
115 (net 22 "Net-(U101-Pad21)")
116 (net 23 "Net-(U101-Pad22)")
117 (net 24 "Net-(U101-Pad23)")
118 (net 25 "Net-(U101-Pad24)")
119 (net 26 "Net-(U101-Pad25)")
120 (net 27 "Net-(U101-Pad26)")
121 (net 28 "Net-(U101-Pad27)")
122 (net 29 "Net-(U101-Pad28)")
123
124 (net_class Default "Ceci est la Netclass par défaut"
125 (clearance 0.2)
126 (trace_width 0.25)
127 (via_dia 0.6)
128 (via_drill 0.4)
129 (uvia_dia 0.3)
130 (uvia_drill 0.1)
131 (add_net "Net-(R101-Pad1)")
132 (add_net "Net-(R101-Pad2)")
133 (add_net "Net-(R102-Pad1)")
134 (add_net "Net-(R103-Pad1)")
135 (add_net "Net-(U101-Pad11)")
136 (add_net "Net-(U101-Pad12)")
137 (add_net "Net-(U101-Pad13)")
138 (add_net "Net-(U101-Pad14)")
139 (add_net "Net-(U101-Pad15)")
140 (add_net "Net-(U101-Pad16)")
141 (add_net "Net-(U101-Pad17)")
142 (add_net "Net-(U101-Pad18)")
143 (add_net "Net-(U101-Pad19)")
144 (add_net "Net-(U101-Pad2)")
145 (add_net "Net-(U101-Pad20)")
146 (add_net "Net-(U101-Pad21)")
147 (add_net "Net-(U101-Pad22)")
148 (add_net "Net-(U101-Pad23)")
149 (add_net "Net-(U101-Pad24)")
150 (add_net "Net-(U101-Pad25)")
151 (add_net "Net-(U101-Pad26)")
152 (add_net "Net-(U101-Pad27)")
153 (add_net "Net-(U101-Pad28)")
154 (add_net "Net-(U101-Pad3)")
155 (add_net "Net-(U101-Pad4)")
156 (add_net "Net-(U101-Pad5)")
157 (add_net "Net-(U101-Pad6)")
158 (add_net "Net-(U101-Pad7)")
159 (add_net "Net-(U101-Pad9)")
160 )
161
162 (module Resistors_SMD:R_0603 (layer F.Cu) (tedit 5415CC62) (tstamp 5577DFA1)
163 (at 157 104.5 180)
164 (descr "Resistor SMD 0603, reflow soldering, Vishay (see dcrcw.pdf)")
165 (tags "resistor 0603")
166 (path /5577DF53)
167 (attr smd)
168 (fp_text reference R101 (at 0 -1.9 180) (layer F.SilkS)
169 (effects (font (size 1 1) (thickness 0.15)))
170 )
171 (fp_text value R (at 0 1.9 180) (layer F.Fab)
172 (effects (font (size 1 1) (thickness 0.15)))
173 )
174 (fp_line (start -1.3 -0.8) (end 1.3 -0.8) (layer F.CrtYd) (width 0.05))
175 (fp_line (start -1.3 0.8) (end 1.3 0.8) (layer F.CrtYd) (width 0.05))
176 (fp_line (start -1.3 -0.8) (end -1.3 0.8) (layer F.CrtYd) (width 0.05))
177 (fp_line (start 1.3 -0.8) (end 1.3 0.8) (layer F.CrtYd) (width 0.05))
178 (fp_line (start 0.5 0.675) (end -0.5 0.675) (layer F.SilkS) (width 0.15))
179 (fp_line (start -0.5 -0.675) (end 0.5 -0.675) (layer F.SilkS) (width 0.15))
180 (pad 1 smd rect (at -0.75 0 180) (size 0.5 0.9) (layers F.Cu F.Paste F.Mask)
181 (net 1 "Net-(R101-Pad1)"))
182 (pad 2 smd rect (at 0.75 0 180) (size 0.5 0.9) (layers F.Cu F.Paste F.Mask)
183 (net 2 "Net-(R101-Pad2)"))
184 (model Resistors_SMD.3dshapes/R_0603.wrl
185 (at (xyz 0 0 0))
186 (scale (xyz 1 1 1))
187 (rotate (xyz 0 0 0))
188 )
189 )
190
191 (module Resistors_SMD:R_0603 (layer F.Cu) (tedit 5415CC62) (tstamp 5577DFA7)
192 (at 168 116 270)
193 (descr "Resistor SMD 0603, reflow soldering, Vishay (see dcrcw.pdf)")
194 (tags "resistor 0603")
195 (path /5577E050)
196 (attr smd)
197 (fp_text reference R102 (at 0 -1.9 270) (layer F.SilkS)
198 (effects (font (size 1 1) (thickness 0.15)))
199 )
200 (fp_text value R (at 0 1.9 270) (layer F.Fab)
201 (effects (font (size 1 1) (thickness 0.15)))
202 )
203 (fp_line (start -1.3 -0.8) (end 1.3 -0.8) (layer F.CrtYd) (width 0.05))
204 (fp_line (start -1.3 0.8) (end 1.3 0.8) (layer F.CrtYd) (width 0.05))
205 (fp_line (start -1.3 -0.8) (end -1.3 0.8) (layer F.CrtYd) (width 0.05))
206 (fp_line (start 1.3 -0.8) (end 1.3 0.8) (layer F.CrtYd) (width 0.05))
207 (fp_line (start 0.5 0.675) (end -0.5 0.675) (layer F.SilkS) (width 0.15))
208 (fp_line (start -0.5 -0.675) (end 0.5 -0.675) (layer F.SilkS) (width 0.15))
209 (pad 1 smd rect (at -0.75 0 270) (size 0.5 0.9) (layers F.Cu F.Paste F.Mask)
210 (net 3 "Net-(R102-Pad1)"))
211 (pad 2 smd rect (at 0.75 0 270) (size 0.5 0.9) (layers F.Cu F.Paste F.Mask)
212 (net 2 "Net-(R101-Pad2)"))
213 (model Resistors_SMD.3dshapes/R_0603.wrl
214 (at (xyz 0 0 0))
215 (scale (xyz 1 1 1))
216 (rotate (xyz 0 0 0))
217 )
218 )
219
220 (module Resistors_SMD:R_0603 (layer F.Cu) (tedit 5415CC62) (tstamp 5577DFAD)
221 (at 170.5 116 270)
222 (descr "Resistor SMD 0603, reflow soldering, Vishay (see dcrcw.pdf)")
223 (tags "resistor 0603")
224 (path /5577E07A)
225 (attr smd)
226 (fp_text reference R103 (at 0 -1.9 270) (layer F.SilkS)
227 (effects (font (size 1 1) (thickness 0.15)))
228 )
229 (fp_text value R (at 0 1.9 270) (layer F.Fab)
230 (effects (font (size 1 1) (thickness 0.15)))
231 )
232 (fp_line (start -1.3 -0.8) (end 1.3 -0.8) (layer F.CrtYd) (width 0.05))
233 (fp_line (start -1.3 0.8) (end 1.3 0.8) (layer F.CrtYd) (width 0.05))
234 (fp_line (start -1.3 -0.8) (end -1.3 0.8) (layer F.CrtYd) (width 0.05))
235 (fp_line (start 1.3 -0.8) (end 1.3 0.8) (layer F.CrtYd) (width 0.05))
236 (fp_line (start 0.5 0.675) (end -0.5 0.675) (layer F.SilkS) (width 0.15))
237 (fp_line (start -0.5 -0.675) (end 0.5 -0.675) (layer F.SilkS) (width 0.15))
238 (pad 1 smd rect (at -0.75 0 270) (size 0.5 0.9) (layers F.Cu F.Paste F.Mask)
239 (net 4 "Net-(R103-Pad1)"))
240 (pad 2 smd rect (at 0.75 0 270) (size 0.5 0.9) (layers F.Cu F.Paste F.Mask)
241 (net 2 "Net-(R101-Pad2)"))
242 (model Resistors_SMD.3dshapes/R_0603.wrl
243 (at (xyz 0 0 0))
244 (scale (xyz 1 1 1))
245 (rotate (xyz 0 0 0))
246 )
247 )
248
249 (module SMD_Packages:PLCC-28 (layer F.Cu) (tedit 0) (tstamp 5577DFCD)
250 (at 168 104.5)
251 (descr "Support CMS Plcc 28 pins")
252 (tags "CMS PLCC")
253 (path /5577DF13)
254 (attr smd)
255 (fp_text reference U101 (at -0.254 -7.874) (layer F.SilkS)
256 (effects (font (size 1 1) (thickness 0.15)))
257 )
258 (fp_text value AD390JD (at 0 7.62) (layer F.Fab)
259 (effects (font (size 1 1) (thickness 0.15)))
260 )
261 (fp_line (start -8.89 7.62) (end -7.62 8.89) (layer F.SilkS) (width 0.15))
262 (fp_line (start -7.62 8.89) (end 8.89 8.89) (layer F.SilkS) (width 0.15))
263 (fp_line (start 8.89 8.89) (end 8.89 -8.89) (layer F.SilkS) (width 0.15))
264 (fp_line (start 8.89 -8.89) (end -8.89 -8.89) (layer F.SilkS) (width 0.15))
265 (fp_line (start -8.89 7.62) (end -8.89 -8.89) (layer F.SilkS) (width 0.15))
266 (fp_line (start -3.81 -4.064) (end 3.81 -4.064) (layer F.SilkS) (width 0.15))
267 (fp_line (start 3.81 -4.064) (end 3.81 3.81) (layer F.SilkS) (width 0.15))
268 (fp_line (start 3.81 3.81) (end -2.54 3.81) (layer F.SilkS) (width 0.15))
269 (fp_line (start -3.81 -4.064) (end -3.81 2.54) (layer F.SilkS) (width 0.15))
270 (fp_line (start -3.81 2.54) (end -2.54 3.81) (layer F.SilkS) (width 0.15))
271 (pad 1 smd rect (at -5.715 0) (size 2.032 0.762) (layers F.Cu F.Paste F.Mask)
272 (net 1 "Net-(R101-Pad1)"))
273 (pad 2 smd rect (at -5.715 1.27) (size 2.032 0.762) (layers F.Cu F.Paste F.Mask)
274 (net 5 "Net-(U101-Pad2)"))
275 (pad 3 smd rect (at -5.715 2.54) (size 2.032 0.762) (layers F.Cu F.Paste F.Mask)
276 (net 6 "Net-(U101-Pad3)"))
277 (pad 4 smd rect (at -5.715 3.81) (size 2.032 0.762) (layers F.Cu F.Paste F.Mask)
278 (net 7 "Net-(U101-Pad4)"))
279 (pad 5 smd rect (at -3.81 5.715) (size 0.762 2.032) (layers F.Cu F.Paste F.Mask)
280 (net 8 "Net-(U101-Pad5)"))
281 (pad 6 smd rect (at -2.54 5.715) (size 0.762 2.032) (layers F.Cu F.Paste F.Mask)
282 (net 9 "Net-(U101-Pad6)"))
283 (pad 7 smd rect (at -1.27 5.715) (size 0.762 2.032) (layers F.Cu F.Paste F.Mask)
284 (net 10 "Net-(U101-Pad7)"))
285 (pad 8 smd rect (at 0 5.715) (size 0.762 2.032) (layers F.Cu F.Paste F.Mask)
286 (net 3 "Net-(R102-Pad1)"))
287 (pad 9 smd rect (at 1.27 5.715) (size 0.762 2.032) (layers F.Cu F.Paste F.Mask)
288 (net 11 "Net-(U101-Pad9)"))
289 (pad 10 smd rect (at 2.54 5.715) (size 0.762 2.032) (layers F.Cu F.Paste F.Mask)
290 (net 4 "Net-(R103-Pad1)"))
291 (pad 11 smd rect (at 3.81 5.715) (size 0.762 2.032) (layers F.Cu F.Paste F.Mask)
292 (net 12 "Net-(U101-Pad11)"))
293 (pad 12 smd rect (at 5.715 3.81) (size 2.032 0.762) (layers F.Cu F.Paste F.Mask)
294 (net 13 "Net-(U101-Pad12)"))
295 (pad 13 smd rect (at 5.715 2.54) (size 2.032 0.762) (layers F.Cu F.Paste F.Mask)
296 (net 14 "Net-(U101-Pad13)"))
297 (pad 14 smd rect (at 5.715 1.27) (size 2.032 0.762) (layers F.Cu F.Paste F.Mask)
298 (net 15 "Net-(U101-Pad14)"))
299 (pad 15 smd rect (at 5.715 0) (size 2.032 0.762) (layers F.Cu F.Paste F.Mask)
300 (net 16 "Net-(U101-Pad15)"))
301 (pad 16 smd rect (at 5.715 -1.27) (size 2.032 0.762) (layers F.Cu F.Paste F.Mask)
302 (net 17 "Net-(U101-Pad16)"))
303 (pad 17 smd rect (at 5.715 -2.54) (size 2.032 0.762) (layers F.Cu F.Paste F.Mask)
304 (net 18 "Net-(U101-Pad17)"))
305 (pad 18 smd rect (at 5.715 -3.81) (size 2.032 0.762) (layers F.Cu F.Paste F.Mask)
306 (net 19 "Net-(U101-Pad18)"))
307 (pad 19 smd rect (at 3.81 -5.715) (size 0.762 2.032) (layers F.Cu F.Paste F.Mask)
308 (net 20 "Net-(U101-Pad19)"))
309 (pad 20 smd rect (at 2.54 -5.715) (size 0.762 2.032) (layers F.Cu F.Paste F.Mask)
310 (net 21 "Net-(U101-Pad20)"))
311 (pad 21 smd rect (at 1.27 -5.715) (size 0.762 2.032) (layers F.Cu F.Paste F.Mask)
312 (net 22 "Net-(U101-Pad21)"))
313 (pad 22 smd rect (at 0 -5.715) (size 0.762 2.032) (layers F.Cu F.Paste F.Mask)
314 (net 23 "Net-(U101-Pad22)"))
315 (pad 23 smd rect (at -1.27 -5.715) (size 0.762 2.032) (layers F.Cu F.Paste F.Mask)
316 (net 24 "Net-(U101-Pad23)"))
317 (pad 24 smd rect (at -2.54 -5.715) (size 0.762 2.032) (layers F.Cu F.Paste F.Mask)
318 (net 25 "Net-(U101-Pad24)"))
319 (pad 25 smd rect (at -3.81 -5.715) (size 0.762 2.032) (layers F.Cu F.Paste F.Mask)
320 (net 26 "Net-(U101-Pad25)"))
321 (pad 26 smd rect (at -5.715 -3.81) (size 2.032 0.762) (layers F.Cu F.Paste F.Mask)
322 (net 27 "Net-(U101-Pad26)"))
323 (pad 27 smd rect (at -5.715 -2.54) (size 2.032 0.762) (layers F.Cu F.Paste F.Mask)
324 (net 28 "Net-(U101-Pad27)"))
325 (pad 28 smd rect (at -5.715 -1.27) (size 2.032 0.762) (layers F.Cu F.Paste F.Mask)
326 (net 29 "Net-(U101-Pad28)"))
327 )
328
329 (module NF-Transformers_ETAL:NF-Transformer_P2781_ETAL (layer F.Cu) (tedit 0) (tstamp 557A29C0)
330 (at 188.5 83.25)
331 (descr "NF-Transformer, ETAL, P2781, SMD,")
332 (tags "NF-Transformer, ETAL, P2781, SMD,")
333 (attr smd)
334 (fp_text reference REF** (at 0 -7.00024) (layer F.SilkS)
335 (effects (font (size 1 1) (thickness 0.15)))
336 )
337 (fp_text value NF-Transformer_P2781_ETAL (at 0 7.50062) (layer F.Fab)
338 (effects (font (size 1 1) (thickness 0.15)))
339 )
340 (fp_line (start 6.49986 4.50088) (end 6.49986 4.0005) (layer F.SilkS) (width 0.15))
341 (fp_line (start 6.49986 -4.50088) (end 6.49986 -4.0005) (layer F.SilkS) (width 0.15))
342 (fp_line (start 2.9591 3.83032) (end 3.83032 3.83032) (layer F.SilkS) (width 0.15))
343 (fp_line (start 2.98958 2.8194) (end 3.43916 2.3495) (layer F.SilkS) (width 0.15))
344 (fp_line (start 3.43916 2.3495) (end 3.43916 3.83032) (layer F.SilkS) (width 0.15))
345 (fp_line (start 2.0193 2.30886) (end 2.25044 2.35966) (layer F.SilkS) (width 0.15))
346 (fp_line (start 2.25044 2.35966) (end 2.37998 2.55016) (layer F.SilkS) (width 0.15))
347 (fp_line (start 2.37998 2.55016) (end 2.4003 2.75844) (layer F.SilkS) (width 0.15))
348 (fp_line (start 2.4003 2.75844) (end 2.32918 2.89052) (layer F.SilkS) (width 0.15))
349 (fp_line (start 2.32918 2.89052) (end 2.159 2.97942) (layer F.SilkS) (width 0.15))
350 (fp_line (start 2.159 2.97942) (end 1.89992 2.98958) (layer F.SilkS) (width 0.15))
351 (fp_line (start 1.89992 2.98958) (end 1.66878 3.08864) (layer F.SilkS) (width 0.15))
352 (fp_line (start 1.66878 3.08864) (end 1.51892 3.3401) (layer F.SilkS) (width 0.15))
353 (fp_line (start 1.51892 3.3401) (end 1.52908 3.64998) (layer F.SilkS) (width 0.15))
354 (fp_line (start 1.52908 3.64998) (end 1.67894 3.7592) (layer F.SilkS) (width 0.15))
355 (fp_line (start 1.67894 3.7592) (end 1.8288 3.81) (layer F.SilkS) (width 0.15))
356 (fp_line (start 1.8288 3.81) (end 2.05994 3.83032) (layer F.SilkS) (width 0.15))
357 (fp_line (start 2.05994 3.83032) (end 2.28092 3.7592) (layer F.SilkS) (width 0.15))
358 (fp_line (start 2.28092 3.7592) (end 2.37998 3.57886) (layer F.SilkS) (width 0.15))
359 (fp_line (start 2.37998 3.57886) (end 2.39014 3.3782) (layer F.SilkS) (width 0.15))
360 (fp_line (start 2.39014 3.3782) (end 2.3495 3.21056) (layer F.SilkS) (width 0.15))
361 (fp_line (start 2.3495 3.21056) (end 2.23012 3.08864) (layer F.SilkS) (width 0.15))
362 (fp_line (start 2.23012 3.08864) (end 2.0193 3.0099) (layer F.SilkS) (width 0.15))
363 (fp_line (start 2.0193 3.0099) (end 1.7907 2.97942) (layer F.SilkS) (width 0.15))
364 (fp_line (start 1.7907 2.97942) (end 1.651 2.89052) (layer F.SilkS) (width 0.15))
365 (fp_line (start 1.651 2.89052) (end 1.56972 2.6797) (layer F.SilkS) (width 0.15))
366 (fp_line (start 1.56972 2.6797) (end 1.6002 2.51968) (layer F.SilkS) (width 0.15))
367 (fp_line (start 1.6002 2.51968) (end 1.6891 2.41046) (layer F.SilkS) (width 0.15))
368 (fp_line (start 1.6891 2.41046) (end 1.9304 2.32918) (layer F.SilkS) (width 0.15))
369 (fp_line (start 0.04064 2.31902) (end 1.02108 2.30886) (layer F.SilkS) (width 0.15))
370 (fp_line (start 1.02108 2.30886) (end 0.40894 3.83032) (layer F.SilkS) (width 0.15))
371 (fp_line (start -1.38938 2.51968) (end -1.24968 2.39014) (layer F.SilkS) (width 0.15))
372 (fp_line (start -1.24968 2.39014) (end -1.08966 2.32918) (layer F.SilkS) (width 0.15))
373 (fp_line (start -1.08966 2.32918) (end -0.83058 2.32918) (layer F.SilkS) (width 0.15))
374 (fp_line (start -0.83058 2.32918) (end -0.67056 2.39014) (layer F.SilkS) (width 0.15))
375 (fp_line (start -0.67056 2.39014) (end -0.51054 2.57048) (layer F.SilkS) (width 0.15))
376 (fp_line (start -0.51054 2.57048) (end -0.4699 2.75844) (layer F.SilkS) (width 0.15))
377 (fp_line (start -0.4699 2.75844) (end -0.51054 2.92862) (layer F.SilkS) (width 0.15))
378 (fp_line (start -0.51054 2.92862) (end -0.65024 3.0988) (layer F.SilkS) (width 0.15))
379 (fp_line (start -0.65024 3.0988) (end -1.45034 3.82016) (layer F.SilkS) (width 0.15))
380 (fp_line (start -1.45034 3.82016) (end -0.49022 3.83032) (layer F.SilkS) (width 0.15))
381 (fp_line (start -2.80924 3.85826) (end -2.8194 2.33934) (layer F.SilkS) (width 0.15))
382 (fp_line (start -2.8194 2.33934) (end -2.17932 2.35966) (layer F.SilkS) (width 0.15))
383 (fp_line (start -2.17932 2.35966) (end -1.99898 2.51968) (layer F.SilkS) (width 0.15))
384 (fp_line (start -1.99898 2.51968) (end -1.94056 2.80924) (layer F.SilkS) (width 0.15))
385 (fp_line (start -1.94056 2.80924) (end -1.99898 3.02006) (layer F.SilkS) (width 0.15))
386 (fp_line (start -1.99898 3.02006) (end -2.2098 3.12928) (layer F.SilkS) (width 0.15))
387 (fp_line (start -2.2098 3.12928) (end -2.44094 3.1496) (layer F.SilkS) (width 0.15))
388 (fp_line (start -2.44094 3.1496) (end -2.77114 3.12928) (layer F.SilkS) (width 0.15))
389 (fp_line (start 2.65938 -3.91668) (end 2.64922 -2.41808) (layer F.SilkS) (width 0.15))
390 (fp_line (start 2.64922 -2.41808) (end 3.36042 -2.41808) (layer F.SilkS) (width 0.15))
391 (fp_line (start 1.27 -2.82702) (end 1.92024 -2.82702) (layer F.SilkS) (width 0.15))
392 (fp_line (start 1.10998 -2.37744) (end 1.63068 -3.91668) (layer F.SilkS) (width 0.15))
393 (fp_line (start 1.63068 -3.91668) (end 2.13106 -2.40792) (layer F.SilkS) (width 0.15))
394 (fp_line (start 2.13106 -2.40792) (end 2.14884 -2.40792) (layer F.SilkS) (width 0.15))
395 (fp_line (start 0.40132 -3.8862) (end 0.40132 -2.41808) (layer F.SilkS) (width 0.15))
396 (fp_line (start -0.02032 -3.90652) (end 0.81026 -3.91668) (layer F.SilkS) (width 0.15))
397 (fp_line (start -1.17094 -3.16738) (end -0.71882 -3.16738) (layer F.SilkS) (width 0.15))
398 (fp_line (start -0.4699 -3.90652) (end -1.19888 -3.90652) (layer F.SilkS) (width 0.15))
399 (fp_line (start -1.19888 -3.90652) (end -1.19888 -2.39776) (layer F.SilkS) (width 0.15))
400 (fp_line (start -1.19888 -2.39776) (end -0.51054 -2.3876) (layer F.SilkS) (width 0.15))
401 (fp_line (start -2.9591 -2.41046) (end -2.09042 -2.42062) (layer F.SilkS) (width 0.15))
402 (fp_line (start -2.93878 -3.3909) (end -2.50952 -3.90906) (layer F.SilkS) (width 0.15))
403 (fp_line (start -2.50952 -3.90906) (end -2.49936 -2.43078) (layer F.SilkS) (width 0.15))
404 (fp_line (start -6.49986 -4.0005) (end -3.50012 -4.0005) (layer F.SilkS) (width 0.15))
405 (fp_line (start -6.49986 4.50088) (end -6.49986 4.0005) (layer F.SilkS) (width 0.15))
406 (fp_line (start -3.50012 -4.50088) (end -3.50012 4.50088) (layer F.SilkS) (width 0.15))
407 (fp_line (start -6.49986 -4.50088) (end -6.49986 -4.0005) (layer F.SilkS) (width 0.15))
408 (fp_line (start 6.49986 4.50088) (end -6.49986 4.50088) (layer F.SilkS) (width 0.15))
409 (fp_line (start -6.49986 -4.50088) (end 6.49986 -4.50088) (layer F.SilkS) (width 0.15))
410 (pad 1 smd rect (at -5.53974 -2.54) (size 2.49936 1.39954) (layers F.Cu F.Paste F.Mask))
411 (pad 2 smd rect (at -5.53974 0) (size 2.49936 1.39954) (layers F.Cu F.Paste F.Mask))
412 (pad 3 smd rect (at -5.53974 2.54) (size 2.49936 1.39954) (layers F.Cu F.Paste F.Mask))
413 (pad 4 smd rect (at 5.53974 2.54) (size 2.49936 1.39954) (layers F.Cu F.Paste F.Mask))
414 (pad 5 smd rect (at 5.53974 0) (size 2.5019 1.39954) (layers F.Cu F.Paste F.Mask))
415 (pad 6 smd rect (at 5.53974 -2.54) (size 2.49936 1.39954) (layers F.Cu F.Paste F.Mask))
416 (pad 7 smd oval (at -1.99898 0 90) (size 3.50012 1.39954) (layers F.Adhes))
417 (pad 7 smd oval (at 1.99898 0 90) (size 3.50012 1.39954) (layers F.Adhes))
418 (model NF-Transformers_ETAL.3dshapes/NF-Transformer_P2781_ETAL.wrl
419 (at (xyz 0 0 0))
420 (scale (xyz 0.3937 0.3937 0.3937))
421 (rotate (xyz 0 0 0))
422 )
423 )
424
425 (module NF-Transformers_ETAL:NF-Transformer_1-1_P1200_ETAL (layer F.Cu) (tedit 0) (tstamp 557A34AF)
426 (at 151.75 82)
427 (descr "NF-Transformer, 1:1, ETAL P1200,")
428 (tags "NF-Transformer, 1:1, ETAL P1200,")
429 (fp_text reference REF** (at -0.01016 -11.6205) (layer F.SilkS)
430 (effects (font (size 1 1) (thickness 0.15)))
431 )
432 (fp_text value NF-Transformer_1-1_P1200_ETAL (at -0.07112 12.05992) (layer F.Fab)
433 (effects (font (size 1 1) (thickness 0.15)))
434 )
435 (fp_line (start 5.80136 0.44958) (end 6.79196 0.44958) (layer F.SilkS) (width 0.15))
436 (fp_line (start 6.79196 0.44958) (end 6.30174 1.05918) (layer F.SilkS) (width 0.15))
437 (fp_line (start 6.30174 1.05918) (end 6.61162 1.0795) (layer F.SilkS) (width 0.15))
438 (fp_line (start 6.61162 1.0795) (end 6.7818 1.27) (layer F.SilkS) (width 0.15))
439 (fp_line (start 6.7818 1.27) (end 6.82244 1.5494) (layer F.SilkS) (width 0.15))
440 (fp_line (start 6.82244 1.5494) (end 6.75132 1.8288) (layer F.SilkS) (width 0.15))
441 (fp_line (start 6.75132 1.8288) (end 6.5913 1.97866) (layer F.SilkS) (width 0.15))
442 (fp_line (start 6.5913 1.97866) (end 6.37032 2.00914) (layer F.SilkS) (width 0.15))
443 (fp_line (start 6.37032 2.00914) (end 6.18998 1.98882) (layer F.SilkS) (width 0.15))
444 (fp_line (start 6.18998 1.98882) (end 6.02996 1.9685) (layer F.SilkS) (width 0.15))
445 (fp_line (start 6.02996 1.9685) (end 5.8801 1.85928) (layer F.SilkS) (width 0.15))
446 (fp_line (start -6.23062 1.01854) (end -6.25094 2.03962) (layer F.SilkS) (width 0.15))
447 (fp_line (start -6.61924 0.32004) (end -7.04088 1.52908) (layer F.SilkS) (width 0.15))
448 (fp_line (start -7.04088 1.52908) (end -5.969 1.50876) (layer F.SilkS) (width 0.15))
449 (fp_line (start -5.59308 -5.58038) (end -5.58292 -5.62102) (layer F.SilkS) (width 0.15))
450 (fp_line (start -5.58292 -5.62102) (end -5.58292 -5.61086) (layer F.SilkS) (width 0.15))
451 (fp_line (start -6.10108 -7.21106) (end -6.40334 -7.2009) (layer F.SilkS) (width 0.15))
452 (fp_line (start -6.40334 -7.2009) (end -6.61162 -7.17042) (layer F.SilkS) (width 0.15))
453 (fp_line (start -6.61162 -7.17042) (end -6.74116 -7.05104) (layer F.SilkS) (width 0.15))
454 (fp_line (start -6.74116 -7.05104) (end -6.95198 -6.8199) (layer F.SilkS) (width 0.15))
455 (fp_line (start -6.95198 -6.8199) (end -6.98246 -6.53034) (layer F.SilkS) (width 0.15))
456 (fp_line (start -6.98246 -6.53034) (end -7.01294 -6.1214) (layer F.SilkS) (width 0.15))
457 (fp_line (start -7.01294 -6.1214) (end -6.9215 -5.80136) (layer F.SilkS) (width 0.15))
458 (fp_line (start -6.9215 -5.80136) (end -6.76148 -5.67182) (layer F.SilkS) (width 0.15))
459 (fp_line (start -6.76148 -5.67182) (end -6.47192 -5.61086) (layer F.SilkS) (width 0.15))
460 (fp_line (start -6.47192 -5.61086) (end -6.28142 -5.6515) (layer F.SilkS) (width 0.15))
461 (fp_line (start -6.28142 -5.6515) (end -6.14172 -5.85216) (layer F.SilkS) (width 0.15))
462 (fp_line (start -6.14172 -5.85216) (end -6.1214 -6.1214) (layer F.SilkS) (width 0.15))
463 (fp_line (start -6.1214 -6.1214) (end -6.19252 -6.35) (layer F.SilkS) (width 0.15))
464 (fp_line (start -6.19252 -6.35) (end -6.39318 -6.53034) (layer F.SilkS) (width 0.15))
465 (fp_line (start -6.39318 -6.53034) (end -6.70306 -6.5405) (layer F.SilkS) (width 0.15))
466 (fp_line (start -6.70306 -6.5405) (end -6.8834 -6.47192) (layer F.SilkS) (width 0.15))
467 (fp_line (start 5.98932 -5.6007) (end 6.97992 -5.6007) (layer F.SilkS) (width 0.15))
468 (fp_line (start 5.95122 -6.56082) (end 6.47954 -7.05104) (layer F.SilkS) (width 0.15))
469 (fp_line (start 6.47954 -7.05104) (end 6.47954 -5.58038) (layer F.SilkS) (width 0.15))
470 (fp_line (start 5.90042 6.69036) (end 6.12902 6.78942) (layer F.SilkS) (width 0.15))
471 (fp_line (start 6.12902 6.78942) (end 6.25094 6.93928) (layer F.SilkS) (width 0.15))
472 (fp_line (start 6.25094 6.93928) (end 6.28904 7.13994) (layer F.SilkS) (width 0.15))
473 (fp_line (start 6.28904 7.13994) (end 6.28904 7.60984) (layer F.SilkS) (width 0.15))
474 (fp_line (start 6.28904 7.60984) (end 6.2611 7.8994) (layer F.SilkS) (width 0.15))
475 (fp_line (start 6.2611 7.8994) (end 6.18998 8.05942) (layer F.SilkS) (width 0.15))
476 (fp_line (start 6.18998 8.05942) (end 6.08076 8.17118) (layer F.SilkS) (width 0.15))
477 (fp_line (start 6.08076 8.17118) (end 5.98932 8.21944) (layer F.SilkS) (width 0.15))
478 (fp_line (start 5.98932 8.21944) (end 5.8801 8.2296) (layer F.SilkS) (width 0.15))
479 (fp_line (start 5.8801 8.2296) (end 5.75056 8.17118) (layer F.SilkS) (width 0.15))
480 (fp_line (start 5.75056 8.17118) (end 5.61086 8.06958) (layer F.SilkS) (width 0.15))
481 (fp_line (start 5.61086 8.06958) (end 5.52958 7.87908) (layer F.SilkS) (width 0.15))
482 (fp_line (start 5.52958 7.87908) (end 5.4991 7.52094) (layer F.SilkS) (width 0.15))
483 (fp_line (start 5.4991 7.52094) (end 5.4991 7.26948) (layer F.SilkS) (width 0.15))
484 (fp_line (start 5.4991 7.26948) (end 5.53974 7.03072) (layer F.SilkS) (width 0.15))
485 (fp_line (start 5.53974 7.03072) (end 5.6388 6.88086) (layer F.SilkS) (width 0.15))
486 (fp_line (start 5.6388 6.88086) (end 5.75056 6.74878) (layer F.SilkS) (width 0.15))
487 (fp_line (start 5.75056 6.74878) (end 5.85978 6.70052) (layer F.SilkS) (width 0.15))
488 (fp_line (start 4.42976 6.72084) (end 4.62026 6.7691) (layer F.SilkS) (width 0.15))
489 (fp_line (start 4.62026 6.7691) (end 4.81076 6.99008) (layer F.SilkS) (width 0.15))
490 (fp_line (start 4.81076 6.99008) (end 4.87934 7.29996) (layer F.SilkS) (width 0.15))
491 (fp_line (start 4.87934 7.29996) (end 4.86918 7.59968) (layer F.SilkS) (width 0.15))
492 (fp_line (start 4.86918 7.59968) (end 4.79044 7.9502) (layer F.SilkS) (width 0.15))
493 (fp_line (start 4.79044 7.9502) (end 4.6609 8.15086) (layer F.SilkS) (width 0.15))
494 (fp_line (start 4.6609 8.15086) (end 4.4704 8.2296) (layer F.SilkS) (width 0.15))
495 (fp_line (start 4.4704 8.2296) (end 4.24942 8.17118) (layer F.SilkS) (width 0.15))
496 (fp_line (start 4.24942 8.17118) (end 4.09956 7.98068) (layer F.SilkS) (width 0.15))
497 (fp_line (start 4.09956 7.98068) (end 4.03098 7.69112) (layer F.SilkS) (width 0.15))
498 (fp_line (start 4.03098 7.69112) (end 4.02082 7.31012) (layer F.SilkS) (width 0.15))
499 (fp_line (start 4.02082 7.31012) (end 4.09956 7.00024) (layer F.SilkS) (width 0.15))
500 (fp_line (start 4.09956 7.00024) (end 4.21894 6.77926) (layer F.SilkS) (width 0.15))
501 (fp_line (start 4.21894 6.77926) (end 4.37896 6.72084) (layer F.SilkS) (width 0.15))
502 (fp_line (start 2.51968 6.90118) (end 2.57048 6.84022) (layer F.SilkS) (width 0.15))
503 (fp_line (start 2.57048 6.84022) (end 2.77114 6.72084) (layer F.SilkS) (width 0.15))
504 (fp_line (start 2.77114 6.72084) (end 2.96926 6.70052) (layer F.SilkS) (width 0.15))
505 (fp_line (start 2.96926 6.70052) (end 3.18008 6.731) (layer F.SilkS) (width 0.15))
506 (fp_line (start 3.18008 6.731) (end 3.3401 6.85038) (layer F.SilkS) (width 0.15))
507 (fp_line (start 3.3401 6.85038) (end 3.429 7.04088) (layer F.SilkS) (width 0.15))
508 (fp_line (start 3.429 7.04088) (end 3.38074 7.29996) (layer F.SilkS) (width 0.15))
509 (fp_line (start 3.38074 7.29996) (end 2.55016 8.23976) (layer F.SilkS) (width 0.15))
510 (fp_line (start 2.55016 8.23976) (end 3.43916 8.23976) (layer F.SilkS) (width 0.15))
511 (fp_line (start 1.06934 8.20928) (end 1.96088 8.21944) (layer F.SilkS) (width 0.15))
512 (fp_line (start 1.06934 7.18058) (end 1.5494 6.74116) (layer F.SilkS) (width 0.15))
513 (fp_line (start 1.5494 6.74116) (end 1.55956 8.21944) (layer F.SilkS) (width 0.15))
514 (fp_line (start -0.34036 8.20928) (end -0.35052 6.731) (layer F.SilkS) (width 0.15))
515 (fp_line (start -0.35052 6.731) (end 0.1397 6.74116) (layer F.SilkS) (width 0.15))
516 (fp_line (start 0.1397 6.74116) (end 0.3302 6.78942) (layer F.SilkS) (width 0.15))
517 (fp_line (start 0.3302 6.78942) (end 0.51054 6.97992) (layer F.SilkS) (width 0.15))
518 (fp_line (start 0.51054 6.97992) (end 0.53086 7.22122) (layer F.SilkS) (width 0.15))
519 (fp_line (start 0.53086 7.22122) (end 0.4699 7.3406) (layer F.SilkS) (width 0.15))
520 (fp_line (start 0.4699 7.3406) (end 0.37084 7.43966) (layer F.SilkS) (width 0.15))
521 (fp_line (start 0.37084 7.43966) (end 0.24892 7.50062) (layer F.SilkS) (width 0.15))
522 (fp_line (start 0.24892 7.50062) (end -0.26924 7.50062) (layer F.SilkS) (width 0.15))
523 (fp_line (start -2.72034 6.65988) (end -2.72034 8.20928) (layer F.SilkS) (width 0.15))
524 (fp_line (start -2.72034 8.20928) (end -1.99898 8.2296) (layer F.SilkS) (width 0.15))
525 (fp_line (start -4.04114 7.79018) (end -3.51028 7.79018) (layer F.SilkS) (width 0.15))
526 (fp_line (start -4.26974 8.2296) (end -3.7592 6.70052) (layer F.SilkS) (width 0.15))
527 (fp_line (start -3.7592 6.70052) (end -3.24104 8.20928) (layer F.SilkS) (width 0.15))
528 (fp_line (start -5.44068 6.70052) (end -4.63042 6.70052) (layer F.SilkS) (width 0.15))
529 (fp_line (start -4.98094 8.20928) (end -4.98094 6.74116) (layer F.SilkS) (width 0.15))
530 (fp_line (start -6.55066 7.4295) (end -6.10108 7.4295) (layer F.SilkS) (width 0.15))
531 (fp_line (start -5.86994 6.70052) (end -6.61924 6.72084) (layer F.SilkS) (width 0.15))
532 (fp_line (start -6.61924 6.72084) (end -6.61924 8.24992) (layer F.SilkS) (width 0.15))
533 (fp_line (start -6.61924 8.24992) (end -5.92074 8.24992) (layer F.SilkS) (width 0.15))
534 (fp_line (start -1.40716 -6.77926) (end -0.7874 -6.79958) (layer F.SilkS) (width 0.15))
535 (fp_line (start 0.82042 -6.85038) (end 1.4605 -6.85038) (layer F.SilkS) (width 0.15))
536 (fp_line (start 0.09906 -6.91896) (end 0.02032 -6.91896) (layer F.SilkS) (width 0.15))
537 (fp_line (start 0.03048 -7.71906) (end -0.02032 -7.69874) (layer F.SilkS) (width 0.15))
538 (fp_line (start 0.67056 -7.87908) (end 1.17094 -8.30072) (layer F.SilkS) (width 0.15))
539 (fp_line (start 1.17094 -8.30072) (end 1.17094 -6.85038) (layer F.SilkS) (width 0.15))
540 (fp_line (start -1.56972 -7.82066) (end -1.03124 -8.30072) (layer F.SilkS) (width 0.15))
541 (fp_line (start -1.03124 -8.30072) (end -1.03124 -6.78942) (layer F.SilkS) (width 0.15))
542 (fp_line (start 4.82092 -4.0005) (end 3.0607 -4.04114) (layer F.SilkS) (width 0.15))
543 (fp_line (start 3.0607 -4.04114) (end 2.75082 -3.98018) (layer F.SilkS) (width 0.15))
544 (fp_line (start 2.75082 -3.98018) (end 2.42062 -3.78968) (layer F.SilkS) (width 0.15))
545 (fp_line (start 2.42062 -3.78968) (end 2.11074 -3.50012) (layer F.SilkS) (width 0.15))
546 (fp_line (start 2.11074 -3.50012) (end 1.98882 -3.10896) (layer F.SilkS) (width 0.15))
547 (fp_line (start 1.98882 -3.10896) (end 2.0193 -2.74066) (layer F.SilkS) (width 0.15))
548 (fp_line (start 2.0193 -2.74066) (end 2.16916 -2.35966) (layer F.SilkS) (width 0.15))
549 (fp_line (start 2.16916 -2.35966) (end 2.42062 -2.16916) (layer F.SilkS) (width 0.15))
550 (fp_line (start 2.42062 -2.16916) (end 2.88036 -1.96088) (layer F.SilkS) (width 0.15))
551 (fp_line (start 2.88036 -1.96088) (end 3.12928 -1.96088) (layer F.SilkS) (width 0.15))
552 (fp_line (start 3.12928 -1.96088) (end 2.64922 -1.86944) (layer F.SilkS) (width 0.15))
553 (fp_line (start 2.64922 -1.86944) (end 2.14884 -1.5494) (layer F.SilkS) (width 0.15))
554 (fp_line (start 2.14884 -1.5494) (end 2.00914 -1.23952) (layer F.SilkS) (width 0.15))
555 (fp_line (start 2.00914 -1.23952) (end 1.98882 -0.889) (layer F.SilkS) (width 0.15))
556 (fp_line (start 1.98882 -0.889) (end 2.11074 -0.5207) (layer F.SilkS) (width 0.15))
557 (fp_line (start 2.11074 -0.5207) (end 2.4003 -0.21082) (layer F.SilkS) (width 0.15))
558 (fp_line (start 2.4003 -0.21082) (end 2.72034 -0.02032) (layer F.SilkS) (width 0.15))
559 (fp_line (start 2.72034 -0.02032) (end 3.15976 0) (layer F.SilkS) (width 0.15))
560 (fp_line (start 3.15976 0) (end 2.6797 0.07112) (layer F.SilkS) (width 0.15))
561 (fp_line (start 2.6797 0.07112) (end 2.32918 0.26924) (layer F.SilkS) (width 0.15))
562 (fp_line (start 2.32918 0.26924) (end 2.11074 0.55118) (layer F.SilkS) (width 0.15))
563 (fp_line (start 2.11074 0.55118) (end 2.00914 0.87122) (layer F.SilkS) (width 0.15))
564 (fp_line (start 2.00914 0.87122) (end 2.0193 1.22936) (layer F.SilkS) (width 0.15))
565 (fp_line (start 2.0193 1.22936) (end 2.16916 1.57988) (layer F.SilkS) (width 0.15))
566 (fp_line (start 2.16916 1.57988) (end 2.43078 1.81102) (layer F.SilkS) (width 0.15))
567 (fp_line (start 2.43078 1.81102) (end 2.74066 1.97104) (layer F.SilkS) (width 0.15))
568 (fp_line (start 2.74066 1.97104) (end 2.97942 2.02946) (layer F.SilkS) (width 0.15))
569 (fp_line (start 2.97942 2.02946) (end 3.2004 2.02946) (layer F.SilkS) (width 0.15))
570 (fp_line (start 3.2004 2.02946) (end 2.46888 2.14884) (layer F.SilkS) (width 0.15))
571 (fp_line (start 2.46888 2.14884) (end 2.17932 2.4003) (layer F.SilkS) (width 0.15))
572 (fp_line (start 2.17932 2.4003) (end 2.03962 2.76098) (layer F.SilkS) (width 0.15))
573 (fp_line (start 2.03962 2.76098) (end 2.00914 3.08102) (layer F.SilkS) (width 0.15))
574 (fp_line (start 2.00914 3.08102) (end 2.11074 3.44932) (layer F.SilkS) (width 0.15))
575 (fp_line (start 2.11074 3.44932) (end 2.30886 3.68046) (layer F.SilkS) (width 0.15))
576 (fp_line (start 2.30886 3.68046) (end 2.5908 3.92938) (layer F.SilkS) (width 0.15))
577 (fp_line (start 2.5908 3.92938) (end 2.96926 4.0005) (layer F.SilkS) (width 0.15))
578 (fp_line (start 2.96926 4.0005) (end 4.89966 4.0005) (layer F.SilkS) (width 0.15))
579 (fp_line (start -5.00126 -4.0005) (end -2.99974 -4.0005) (layer F.SilkS) (width 0.15))
580 (fp_line (start -2.99974 -4.0005) (end -2.61874 -3.9497) (layer F.SilkS) (width 0.15))
581 (fp_line (start -2.61874 -3.9497) (end -2.32918 -3.73126) (layer F.SilkS) (width 0.15))
582 (fp_line (start -2.32918 -3.73126) (end -2.10058 -3.50012) (layer F.SilkS) (width 0.15))
583 (fp_line (start -2.10058 -3.50012) (end -2.04978 -3.2893) (layer F.SilkS) (width 0.15))
584 (fp_line (start -2.04978 -3.2893) (end -1.98882 -2.94894) (layer F.SilkS) (width 0.15))
585 (fp_line (start -1.98882 -2.94894) (end -2.04978 -2.51968) (layer F.SilkS) (width 0.15))
586 (fp_line (start -2.04978 -2.51968) (end -2.23012 -2.32918) (layer F.SilkS) (width 0.15))
587 (fp_line (start -2.23012 -2.32918) (end -2.44094 -2.18948) (layer F.SilkS) (width 0.15))
588 (fp_line (start -2.44094 -2.18948) (end -2.84988 -2.00914) (layer F.SilkS) (width 0.15))
589 (fp_line (start -2.84988 -2.00914) (end -3.0099 -2.00914) (layer F.SilkS) (width 0.15))
590 (fp_line (start -3.0099 -2.00914) (end -2.72034 -1.92024) (layer F.SilkS) (width 0.15))
591 (fp_line (start -2.72034 -1.92024) (end -2.4003 -1.81102) (layer F.SilkS) (width 0.15))
592 (fp_line (start -2.4003 -1.81102) (end -2.14122 -1.62052) (layer F.SilkS) (width 0.15))
593 (fp_line (start -2.14122 -1.62052) (end -2.0701 -1.3208) (layer F.SilkS) (width 0.15))
594 (fp_line (start -2.0701 -1.3208) (end -2.02946 -0.98044) (layer F.SilkS) (width 0.15))
595 (fp_line (start -2.02946 -0.98044) (end -2.0701 -0.6604) (layer F.SilkS) (width 0.15))
596 (fp_line (start -2.0701 -0.6604) (end -2.2098 -0.42926) (layer F.SilkS) (width 0.15))
597 (fp_line (start -2.2098 -0.42926) (end -2.30886 -0.2794) (layer F.SilkS) (width 0.15))
598 (fp_line (start -2.30886 -0.2794) (end -2.55016 -0.11938) (layer F.SilkS) (width 0.15))
599 (fp_line (start -2.55016 -0.11938) (end -2.78892 -0.02032) (layer F.SilkS) (width 0.15))
600 (fp_line (start -2.78892 -0.02032) (end -2.93878 -0.02032) (layer F.SilkS) (width 0.15))
601 (fp_line (start -2.93878 -0.02032) (end -2.66954 0.07112) (layer F.SilkS) (width 0.15))
602 (fp_line (start -2.66954 0.07112) (end -2.42062 0.20066) (layer F.SilkS) (width 0.15))
603 (fp_line (start -2.42062 0.20066) (end -2.16916 0.43942) (layer F.SilkS) (width 0.15))
604 (fp_line (start -2.16916 0.43942) (end -2.0701 0.6604) (layer F.SilkS) (width 0.15))
605 (fp_line (start -2.0701 0.6604) (end -2.00914 0.9398) (layer F.SilkS) (width 0.15))
606 (fp_line (start -2.00914 0.9398) (end -2.02946 1.20904) (layer F.SilkS) (width 0.15))
607 (fp_line (start -2.02946 1.20904) (end -2.10058 1.48082) (layer F.SilkS) (width 0.15))
608 (fp_line (start -2.10058 1.48082) (end -2.28092 1.6891) (layer F.SilkS) (width 0.15))
609 (fp_line (start -2.28092 1.6891) (end -2.44094 1.8288) (layer F.SilkS) (width 0.15))
610 (fp_line (start -2.44094 1.8288) (end -2.61874 1.92024) (layer F.SilkS) (width 0.15))
611 (fp_line (start -2.61874 1.92024) (end -2.94894 1.96088) (layer F.SilkS) (width 0.15))
612 (fp_line (start -2.94894 1.96088) (end -2.68986 2.03962) (layer F.SilkS) (width 0.15))
613 (fp_line (start -2.68986 2.03962) (end -2.42062 2.19964) (layer F.SilkS) (width 0.15))
614 (fp_line (start -2.42062 2.19964) (end -2.23012 2.44094) (layer F.SilkS) (width 0.15))
615 (fp_line (start -2.23012 2.44094) (end -2.10058 2.64922) (layer F.SilkS) (width 0.15))
616 (fp_line (start -2.10058 2.64922) (end -2.04978 2.88036) (layer F.SilkS) (width 0.15))
617 (fp_line (start -2.04978 2.88036) (end -2.04978 3.1496) (layer F.SilkS) (width 0.15))
618 (fp_line (start -2.04978 3.1496) (end -2.14122 3.46964) (layer F.SilkS) (width 0.15))
619 (fp_line (start -2.14122 3.46964) (end -2.2606 3.68046) (layer F.SilkS) (width 0.15))
620 (fp_line (start -2.2606 3.68046) (end -2.46888 3.88112) (layer F.SilkS) (width 0.15))
621 (fp_line (start -2.46888 3.88112) (end -2.74066 3.92938) (layer F.SilkS) (width 0.15))
622 (fp_line (start -2.74066 3.92938) (end -2.94894 3.98018) (layer F.SilkS) (width 0.15))
623 (fp_line (start -2.94894 3.98018) (end -3.0099 3.95986) (layer F.SilkS) (width 0.15))
624 (fp_line (start -3.0099 3.95986) (end -4.93014 3.9497) (layer F.SilkS) (width 0.15))
625 (fp_line (start 0 -5.99948) (end 0 5.99948) (layer F.SilkS) (width 0.15))
626 (fp_line (start 8.99922 -8.99922) (end -8.99922 -8.99922) (layer F.SilkS) (width 0.15))
627 (fp_line (start -8.99922 -8.99922) (end -8.99922 8.99922) (layer F.SilkS) (width 0.15))
628 (fp_line (start -8.99922 8.99922) (end 8.99922 8.99922) (layer F.SilkS) (width 0.15))
629 (fp_line (start 8.99922 8.99922) (end 8.99922 -8.99922) (layer F.SilkS) (width 0.15))
630 (pad 6 thru_hole circle (at -6.35 -3.81) (size 1.524 1.524) (drill 0.8128) (layers *.Cu *.Mask F.SilkS))
631 (pad 4 thru_hole circle (at -6.35 3.81) (size 1.524 1.524) (drill 0.8128) (layers *.Cu *.Mask F.SilkS))
632 (pad 1 thru_hole circle (at 6.35 -3.81) (size 1.524 1.524) (drill 0.8128) (layers *.Cu *.Mask F.SilkS))
633 (pad 3 thru_hole circle (at 6.35 3.81) (size 1.524 1.524) (drill 0.8128) (layers *.Cu *.Mask F.SilkS))
634 (model NF-Transformers_ETAL.3dshapes/NF-Transformer_1-1_P1200_ETAL.wrl
635 (at (xyz 0 0 0))
636 (scale (xyz 0.3937 0.3937 0.3937))
637 (rotate (xyz 0 0 0))
638 )
639 )
640
641 (target plus (at 126 82.75) (size 5) (width 0.1) (layer Edge.Cuts))
642 (target plus (at 198.25 93.75) (size 5) (width 0.1) (layer Edge.Cuts))
643 (dimension 7.5 (width 0.3) (layer F.SilkS)
644 (gr_text "7,500 mm" (at 168 90.65) (layer F.SilkS)
645 (effects (font (size 1.5 1.5) (thickness 0.3)))
646 )
647 (feature1 (pts (xy 171.75 98.75) (xy 171.75 89.3)))
648 (feature2 (pts (xy 164.25 98.75) (xy 164.25 89.3)))
649 (crossbar (pts (xy 164.25 92) (xy 171.75 92)))
650 (arrow1a (pts (xy 171.75 92) (xy 170.623496 92.586421)))
651 (arrow1b (pts (xy 171.75 92) (xy 170.623496 91.413579)))
652 (arrow2a (pts (xy 164.25 92) (xy 165.376504 92.586421)))
653 (arrow2b (pts (xy 164.25 92) (xy 165.376504 91.413579)))
654 )
655 (gr_text hello (at 181.75 101.25) (layer F.SilkS)
656 (effects (font (size 1.5 1.5) (thickness 0.3)))
657 )
658 (gr_arc (start 185.5 106) (end 189.75 107.5) (angle 174.5962086) (layer F.SilkS) (width 0.2))
659 (gr_circle (center 183 113) (end 186 115.75) (layer F.SilkS) (width 0.2))
660
661 (via (at 159.75 103.5) (size 0.6) (drill 0.4) (layers F.Cu B.Cu) (net 1))
662 (segment (start 160.036365 103.786365) (end 159.75 103.5) (width 0.25) (layer F.Cu) (net 1))
663 (segment (start 160.036365 104.5) (end 160.036365 103.786365) (width 0.25) (layer F.Cu) (net 1))
664 (segment (start 157.75 104.5) (end 160.036365 104.5) (width 0.25) (layer F.Cu) (net 1))
665 (segment (start 160.036365 104.5) (end 162.285 104.5) (width 0.25) (layer F.Cu) (net 1))
666 (segment (start 161.25 116.75) (end 170.5 116.75) (width 0.25) (layer F.Cu) (net 2))
667 (segment (start 156.25 111.75) (end 161.25 116.75) (width 0.25) (layer F.Cu) (net 2))
668 (segment (start 156.25 104.5) (end 156.25 111.75) (width 0.25) (layer F.Cu) (net 2))
669 (segment (start 168 115.25) (end 168 110.215) (width 0.25) (layer F.Cu) (net 3))
670 (segment (start 170.5 110.255) (end 170.54 110.215) (width 0.25) (layer F.Cu) (net 4))
671 (segment (start 170.5 115.25) (end 170.5 110.255) (width 0.25) (layer F.Cu) (net 4))
672
673 (zone (net 2) (net_name "Net-(R101-Pad2)") (layer F.Cu) (tstamp 0) (hatch edge 0.508)
674 (priority 1)
675 (connect_pads (clearance 0.508))
676 (min_thickness 0.254)
677 (fill yes (arc_segments 32) (thermal_gap 0.508) (thermal_bridge_width 0.508) (smoothing fillet) (radius 0.2))
678 (polygon
679 (pts
680 (xy 195 119.75) (xy 179.75 114.75) (xy 192.5 127.25) (xy 133.75 130) (xy 137.630288 117.262531)
681 (xy 124.5 106.5) (xy 142.197095 102.27149) (xy 145.25 92.25) (xy 169.536242 105.674556) (xy 182.5 110.25)
682 (xy 181.034023 112.030113)
683 )
684 )
685 (filled_polygon
686 (pts
687 (xy 193.120387 118.902543) (xy 193.118602 118.91578) (xy 193.114419 118.928464) (xy 193.107978 118.940164) (xy 193.099499 118.950484)
688 (xy 193.089272 118.959071) (xy 193.07764 118.965636) (xy 193.065001 118.969955) (xy 193.051785 118.97188) (xy 193.038439 118.971347)
689 (xy 193.019677 118.967062) (xy 180.597879 114.894341) (xy 180.542689 114.881941) (xy 180.480035 114.880102) (xy 180.418177 114.890227)
690 (xy 180.35938 114.911951) (xy 180.305798 114.944475) (xy 180.25939 114.98661) (xy 180.221859 115.036812) (xy 180.194574 115.093243)
691 (xy 180.178539 115.15384) (xy 180.174337 115.216379) (xy 180.182126 115.278576) (xy 180.201617 115.33815) (xy 180.232099 115.39292)
692 (xy 180.268515 115.436202) (xy 192.079136 127.015241) (xy 192.092092 127.030665) (xy 192.098855 127.042889) (xy 192.103146 127.056188)
693 (xy 192.104803 127.070062) (xy 192.103764 127.083994) (xy 192.100067 127.09747) (xy 192.093852 127.109985) (xy 192.085349 127.121071)
694 (xy 192.074874 127.130318) (xy 192.062819 127.13738) (xy 192.049632 127.141996) (xy 192.029695 127.144875) (xy 171.585 128.10186)
695 (xy 171.585 117.062542) (xy 171.585 117.03375) (xy 171.42625 116.875) (xy 170.627 116.875) (xy 170.627 117.47625)
696 (xy 170.78575 117.635) (xy 170.887458 117.635) (xy 171.012542 117.635) (xy 171.135223 117.610597) (xy 171.250785 117.56273)
697 (xy 171.354789 117.493237) (xy 171.443237 117.404789) (xy 171.51273 117.300785) (xy 171.560597 117.185223) (xy 171.585 117.062542)
698 (xy 171.585 128.10186) (xy 170.373 128.158592) (xy 170.373 117.47625) (xy 170.373 116.875) (xy 169.57375 116.875)
699 (xy 169.415 117.03375) (xy 169.415 117.062542) (xy 169.439403 117.185223) (xy 169.48727 117.300785) (xy 169.556763 117.404789)
700 (xy 169.645211 117.493237) (xy 169.749215 117.56273) (xy 169.864777 117.610597) (xy 169.987458 117.635) (xy 170.112542 117.635)
701 (xy 170.21425 117.635) (xy 170.373 117.47625) (xy 170.373 128.158592) (xy 169.085 128.218882) (xy 169.085 117.062542)
702 (xy 169.085 117.03375) (xy 168.92625 116.875) (xy 168.127 116.875) (xy 168.127 117.47625) (xy 168.28575 117.635)
703 (xy 168.387458 117.635) (xy 168.512542 117.635) (xy 168.635223 117.610597) (xy 168.750785 117.56273) (xy 168.854789 117.493237)
704 (xy 168.943237 117.404789) (xy 169.01273 117.300785) (xy 169.060597 117.185223) (xy 169.085 117.062542) (xy 169.085 128.218882)
705 (xy 167.873 128.275614) (xy 167.873 117.47625) (xy 167.873 116.875) (xy 167.07375 116.875) (xy 166.915 117.03375)
706 (xy 166.915 117.062542) (xy 166.939403 117.185223) (xy 166.98727 117.300785) (xy 167.056763 117.404789) (xy 167.145211 117.493237)
707 (xy 167.249215 117.56273) (xy 167.364777 117.610597) (xy 167.487458 117.635) (xy 167.612542 117.635) (xy 167.71425 117.635)
708 (xy 167.873 117.47625) (xy 167.873 128.275614) (xy 156.125 128.82552) (xy 156.125 105.42625) (xy 156.125 104.627)
709 (xy 156.125 104.373) (xy 156.125 103.57375) (xy 155.96625 103.415) (xy 155.937458 103.415) (xy 155.814777 103.439403)
710 (xy 155.699215 103.48727) (xy 155.595211 103.556763) (xy 155.506763 103.645211) (xy 155.43727 103.749215) (xy 155.389403 103.864777)
711 (xy 155.365 103.987458) (xy 155.365 104.112542) (xy 155.365 104.21425) (xy 155.52375 104.373) (xy 156.125 104.373)
712 (xy 156.125 104.627) (xy 155.52375 104.627) (xy 155.365 104.78575) (xy 155.365 104.887458) (xy 155.365 105.012542)
713 (xy 155.389403 105.135223) (xy 155.43727 105.250785) (xy 155.506763 105.354789) (xy 155.595211 105.443237) (xy 155.699215 105.51273)
714 (xy 155.814777 105.560597) (xy 155.937458 105.585) (xy 155.96625 105.585) (xy 156.125 105.42625) (xy 156.125 128.82552)
715 (xy 134.033461 129.859593) (xy 134.013543 129.858618) (xy 134.000107 129.855327) (xy 133.98754 129.84954) (xy 133.976304 129.84147)
716 (xy 133.966808 129.83141) (xy 133.959398 129.819728) (xy 133.954344 129.80685) (xy 133.951832 129.793246) (xy 133.951953 129.779412)
717 (xy 133.955915 129.759868) (xy 137.714318 117.4225) (xy 137.72476 117.373854) (xy 137.727122 117.318776) (xy 137.720211 117.264083)
718 (xy 137.704224 117.211325) (xy 137.679612 117.161996) (xy 137.647074 117.117494) (xy 137.611387 117.082826) (xy 124.896799 106.661033)
719 (xy 124.883072 106.647477) (xy 124.87544 106.636479) (xy 124.869962 106.624264) (xy 124.866825 106.611248) (xy 124.866135 106.597877)
720 (xy 124.867917 106.584609) (xy 124.87211 106.571897) (xy 124.87857 106.560172) (xy 124.887079 106.549833) (xy 124.897344 106.541238)
721 (xy 124.909013 106.534678) (xy 124.927282 106.528481) (xy 142.12052 102.420362) (xy 142.169092 102.404198) (xy 142.219015 102.377269)
722 (xy 142.26354 102.342131) (xy 142.301336 102.299835) (xy 142.331266 102.251651) (xy 142.350369 102.204158) (xy 145.29788 92.528636)
723 (xy 145.304847 92.511428) (xy 145.311723 92.500526) (xy 145.320419 92.491016) (xy 145.330662 92.483196) (xy 145.34213 92.477312)
724 (xy 145.354456 92.473552) (xy 145.367255 92.472034) (xy 145.380118 92.472806) (xy 145.392642 92.475844) (xy 145.409626 92.483346)
725 (xy 160.630928 100.897131) (xy 160.630928 101.071) (xy 160.639303 101.174043) (xy 160.688156 101.330278) (xy 160.656081 101.401611)
726 (xy 160.630928 101.579) (xy 160.630928 102.341) (xy 160.639303 102.444043) (xy 160.688156 102.600278) (xy 160.656081 102.671611)
727 (xy 160.630928 102.849) (xy 160.630928 103.183571) (xy 160.57955 103.05892) (xy 160.478079 102.906193) (xy 160.348875 102.776084)
728 (xy 160.19686 102.673549) (xy 160.027825 102.602493) (xy 159.848207 102.565623) (xy 159.664849 102.564343) (xy 159.484733 102.598701)
729 (xy 159.314722 102.66739) (xy 159.161291 102.767793) (xy 159.030283 102.896086) (xy 158.926689 103.047381) (xy 158.854454 103.215916)
730 (xy 158.816331 103.395272) (xy 158.813771 103.578617) (xy 158.84339 103.74) (xy 158.552421 103.74) (xy 158.477326 103.626566)
731 (xy 158.340792 103.510558) (xy 158.177389 103.437081) (xy 158 103.411928) (xy 157.5 103.411928) (xy 157.396957 103.420303)
732 (xy 157.225959 103.473773) (xy 157.076566 103.572674) (xy 157.002788 103.659505) (xy 156.993237 103.645211) (xy 156.904789 103.556763)
733 (xy 156.800785 103.48727) (xy 156.685223 103.439403) (xy 156.562542 103.415) (xy 156.53375 103.415) (xy 156.375 103.57375)
734 (xy 156.375 104.373) (xy 156.397 104.373) (xy 156.397 104.627) (xy 156.375 104.627) (xy 156.375 105.42625)
735 (xy 156.53375 105.585) (xy 156.562542 105.585) (xy 156.685223 105.560597) (xy 156.800785 105.51273) (xy 156.904789 105.443237)
736 (xy 156.993237 105.354789) (xy 157.001823 105.341938) (xy 157.022674 105.373434) (xy 157.159208 105.489442) (xy 157.322611 105.562919)
737 (xy 157.5 105.588072) (xy 158 105.588072) (xy 158.103043 105.579697) (xy 158.274041 105.526227) (xy 158.423434 105.427326)
738 (xy 158.539442 105.290792) (xy 158.553288 105.26) (xy 160.036365 105.26) (xy 160.649219 105.26) (xy 160.630928 105.389)
739 (xy 160.630928 106.151) (xy 160.639303 106.254043) (xy 160.688156 106.410278) (xy 160.656081 106.481611) (xy 160.630928 106.659)
740 (xy 160.630928 107.421) (xy 160.639303 107.524043) (xy 160.688156 107.680278) (xy 160.656081 107.751611) (xy 160.630928 107.929)
741 (xy 160.630928 108.691) (xy 160.639303 108.794043) (xy 160.692773 108.965041) (xy 160.791674 109.114434) (xy 160.928208 109.230442)
742 (xy 161.091611 109.303919) (xy 161.269 109.329072) (xy 163.170928 109.329072) (xy 163.170928 111.231) (xy 163.179303 111.334043)
743 (xy 163.232773 111.505041) (xy 163.331674 111.654434) (xy 163.468208 111.770442) (xy 163.631611 111.843919) (xy 163.809 111.869072)
744 (xy 164.571 111.869072) (xy 164.674043 111.860697) (xy 164.830278 111.811843) (xy 164.901611 111.843919) (xy 165.079 111.869072)
745 (xy 165.841 111.869072) (xy 165.944043 111.860697) (xy 166.100278 111.811843) (xy 166.171611 111.843919) (xy 166.349 111.869072)
746 (xy 167.111 111.869072) (xy 167.214043 111.860697) (xy 167.24 111.85258) (xy 167.24 114.447578) (xy 167.126566 114.522674)
747 (xy 167.010558 114.659208) (xy 166.937081 114.822611) (xy 166.911928 115) (xy 166.911928 115.5) (xy 166.920303 115.603043)
748 (xy 166.973773 115.774041) (xy 167.072674 115.923434) (xy 167.159505 115.997211) (xy 167.145211 116.006763) (xy 167.056763 116.095211)
749 (xy 166.98727 116.199215) (xy 166.939403 116.314777) (xy 166.915 116.437458) (xy 166.915 116.46625) (xy 167.07375 116.625)
750 (xy 167.873 116.625) (xy 167.873 116.603) (xy 168.127 116.603) (xy 168.127 116.625) (xy 168.92625 116.625)
751 (xy 169.085 116.46625) (xy 169.085 116.437458) (xy 169.060597 116.314777) (xy 169.01273 116.199215) (xy 168.943237 116.095211)
752 (xy 168.854789 116.006763) (xy 168.841938 115.998176) (xy 168.873434 115.977326) (xy 168.989442 115.840792) (xy 169.062919 115.677389)
753 (xy 169.088072 115.5) (xy 169.088072 115) (xy 169.079697 114.896957) (xy 169.026227 114.725959) (xy 168.927326 114.576566)
754 (xy 168.790792 114.460558) (xy 168.76 114.446711) (xy 168.76 111.85078) (xy 168.889 111.869072) (xy 169.651 111.869072)
755 (xy 169.74 111.861838) (xy 169.74 114.447578) (xy 169.626566 114.522674) (xy 169.510558 114.659208) (xy 169.437081 114.822611)
756 (xy 169.411928 115) (xy 169.411928 115.5) (xy 169.420303 115.603043) (xy 169.473773 115.774041) (xy 169.572674 115.923434)
757 (xy 169.659505 115.997211) (xy 169.645211 116.006763) (xy 169.556763 116.095211) (xy 169.48727 116.199215) (xy 169.439403 116.314777)
758 (xy 169.415 116.437458) (xy 169.415 116.46625) (xy 169.57375 116.625) (xy 170.373 116.625) (xy 170.373 116.603)
759 (xy 170.627 116.603) (xy 170.627 116.625) (xy 171.42625 116.625) (xy 171.585 116.46625) (xy 171.585 116.437458)
760 (xy 171.560597 116.314777) (xy 171.51273 116.199215) (xy 171.443237 116.095211) (xy 171.354789 116.006763) (xy 171.341938 115.998176)
761 (xy 171.373434 115.977326) (xy 171.489442 115.840792) (xy 171.562919 115.677389) (xy 171.588072 115.5) (xy 171.588072 115)
762 (xy 171.579697 114.896957) (xy 171.526227 114.725959) (xy 171.427326 114.576566) (xy 171.290792 114.460558) (xy 171.26 114.446711)
763 (xy 171.26 111.845108) (xy 171.429 111.869072) (xy 172.191 111.869072) (xy 172.294043 111.860697) (xy 172.465041 111.807227)
764 (xy 172.614434 111.708326) (xy 172.730442 111.571792) (xy 172.803919 111.408389) (xy 172.829072 111.231) (xy 172.829072 109.329072)
765 (xy 174.731 109.329072) (xy 174.834043 109.320697) (xy 175.005041 109.267227) (xy 175.154434 109.168326) (xy 175.270442 109.031792)
766 (xy 175.343919 108.868389) (xy 175.369072 108.691) (xy 175.369072 107.929) (xy 175.363957 107.866074) (xy 182.182469 110.272608)
767 (xy 182.200617 110.281048) (xy 182.211858 110.289199) (xy 182.221337 110.299345) (xy 182.228705 110.311115) (xy 182.233692 110.324073)
768 (xy 182.236113 110.337746) (xy 182.23588 110.351628) (xy 182.233002 110.36521) (xy 182.227583 110.377996) (xy 182.216399 110.394595)
769 (xy 181.085029 111.768399) (xy 181.052943 111.816173) (xy 181.028317 111.874998) (xy 181.015554 111.93748) (xy 181.015138 112.001253)
770 (xy 181.027085 112.063898) (xy 181.050943 112.12304) (xy 181.085807 112.17644) (xy 181.130357 112.222074) (xy 181.177773 112.254683)
771 (xy 193.078176 118.832796) (xy 193.094089 118.843619) (xy 193.103567 118.85303) (xy 193.111157 118.864021) (xy 193.1166 118.876216)
772 (xy 193.119712 118.889205) (xy 193.120387 118.902543)
773 )
774 )
775 )
776 )
@@ -2,8 +2,8
2 //%require "3.0"
2 //%require "3.0"
3 //%debug
3 //%debug
4 %defines
4 %defines
5 %define namespace "QIlib"
5 %define api.namespace {QIlib}
6 %define parser_class_name "lispLike_Parser"
6 %define parser_class_name {lispLike_Parser}
7
7
8 %code requires{
8 %code requires{
9 #include <QString>
9 #include <QString>
@@ -20,7 +20,12
20 -- Mail : alexis.jeandet@member.fsf.org
20 -- Mail : alexis.jeandet@member.fsf.org
21 ----------------------------------------------------------------------------*/
21 ----------------------------------------------------------------------------*/
22 const char* add_net_c = "(add_net";
22 const char* add_net_c = "(add_net";
23 const char* angle_c = "(angle";
23 const char* area_c = "(area";
24 const char* area_c = "(area";
25 const char* arrow1a_c = "(arrow1a";
26 const char* arrow1b_c = "(arrow1b";
27 const char* arrow2a_c = "(arrow2a";
28 const char* arrow2b_c = "(arrow2b";
24 const char* at_c = "(at";
29 const char* at_c = "(at";
25 const char* attr_c = "(attr";
30 const char* attr_c = "(attr";
26 const char* center_c = "(center";
31 const char* center_c = "(center";
@@ -28,15 +33,20 const char* clearance_c = "(clearan
28 const char* code_c = "(code";
33 const char* code_c = "(code";
29 const char* component_c = "(component";
34 const char* component_c = "(component";
30 const char* components_c = "(components";
35 const char* components_c = "(components";
36 const char* crossbar_c = "(crossbar";
31 const char* date_c = "(date";
37 const char* date_c = "(date";
32 const char* design_c = "(design";
38 const char* design_c = "(design";
39 const char* dimension_c = "(dimension";
33 const char* drawings_c = "(drawings";
40 const char* drawings_c = "(drawings";
41 const char* drill_c = "(drill";
34 const char* drillshape_c = "(drillshape";
42 const char* drillshape_c = "(drillshape";
35 const char* edge_width_c = "(edge_width";
43 const char* edge_width_c = "(edge_width";
36 const char* effects_c = "(effects";
44 const char* effects_c = "(effects";
37 const char* end_c = "(end";
45 const char* end_c = "(end";
38 const char* excludeedgelayer_c = "(excludeedgelayer";
46 const char* excludeedgelayer_c = "(excludeedgelayer";
39 const char* export_c = "(export";
47 const char* export_c = "(export";
48 const char* feature1_c = "(feature1";
49 const char* feature2_c = "(feature2";
40 const char* field_c = "(field";
50 const char* field_c = "(field";
41 const char* fields_c = "(fields";
51 const char* fields_c = "(fields";
42 const char* font_c = "(font";
52 const char* font_c = "(font";
@@ -44,6 +54,10 const char* fp_circle_c = "(fp_circ
44 const char* fp_line_c = "(fp_line";
54 const char* fp_line_c = "(fp_line";
45 const char* fp_text_c = "(fp_text";
55 const char* fp_text_c = "(fp_text";
46 const char* general_c = "(general";
56 const char* general_c = "(general";
57 const char* gr_arc_c = "(gr_arc";
58 const char* gr_circle_c = "(gr_circle";
59 const char* gr_line_c = "(gr_line";
60 const char* gr_text_c = "(gr_text";
47 const char* host_c = "(host";
61 const char* host_c = "(host";
48 const char* hpglpendiameter_c = "(hpglpendiameter";
62 const char* hpglpendiameter_c = "(hpglpendiameter";
49 const char* hpglpennumber_c = "(hpglpennumber";
63 const char* hpglpennumber_c = "(hpglpennumber";
@@ -52,6 +66,7 const char* hpglpenspeed_c = "(hpgl
52 const char* kicad_pcb_c = "(kicad_pcb";
66 const char* kicad_pcb_c = "(kicad_pcb";
53 const char* last_trace_width_c = "(last_trace_width";
67 const char* last_trace_width_c = "(last_trace_width";
54 const char* layers_c = "(layers";
68 const char* layers_c = "(layers";
69 const char* layer_c = "(layer";
55 const char* layerselection_c = "(layerselection";
70 const char* layerselection_c = "(layerselection";
56 const char* lib_c = "(lib";
71 const char* lib_c = "(lib";
57 const char* libpart_c = "(libpart";
72 const char* libpart_c = "(libpart";
@@ -103,9 +118,11 const char* ref_c = "(ref";
103 const char* rotate = "(rota";
118 const char* rotate = "(rota";
104 const char* scale_c = "(scale";
119 const char* scale_c = "(scale";
105 const char* scaleselection_c = "(scaleselection";
120 const char* scaleselection_c = "(scaleselection";
121 const char* segment_c = "(segment";
106 const char* segment_width_c = "(segment_width";
122 const char* segment_width_c = "(segment_width";
107 const char* setup_c = "(setup";
123 const char* setup_c = "(setup";
108 const char* sheetpath_c = "(sheetpath";
124 const char* sheetpath_c = "(sheetpath";
125 const char* size_c = "(size";
109 const char* source_c = "(source";
126 const char* source_c = "(source";
110 const char* start_c = "(start";
127 const char* start_c = "(start";
111 const char* subtractmaskfromsilk_c = "(subtractmaskfromsilk";
128 const char* subtractmaskfromsilk_c = "(subtractmaskfromsilk";
@@ -131,6 +148,7 const char* uvia_size_c = "(uvia_si
131 const char* uvias_allowed_c = "(uvias_allowed";
148 const char* uvias_allowed_c = "(uvias_allowed";
132 const char* value_c = "(value";
149 const char* value_c = "(value";
133 const char* version_c = "(version";
150 const char* version_c = "(version";
151 const char* via_c = "(via";
134 const char* via_dia_c = "(via_dia";
152 const char* via_dia_c = "(via_dia";
135 const char* via_drill_c = "(via_drill";
153 const char* via_drill_c = "(via_drill";
136 const char* via_min_drill_c = "(via_min_drill";
154 const char* via_min_drill_c = "(via_min_drill";
@@ -142,6 +160,7 const char* width_c = "(width";
142 const char* xyz = "(x";
160 const char* xyz = "(x";
143 const char* zone_45_only_c = "(zone_45_only";
161 const char* zone_45_only_c = "(zone_45_only";
144 const char* zone_clearance_c = "(zone_clearance";
162 const char* zone_clearance_c = "(zone_clearance";
163 const char* zone_c = "(zone";
145 const char* zones_c = "(zones";
164 const char* zones_c = "(zones";
146
165
147
166
@@ -30,7 +30,12 namespace QIlib{
30 namespace Lexique
30 namespace Lexique
31 {
31 {
32 extern "C" const char* add_net_c;
32 extern "C" const char* add_net_c;
33 extern "C" const char* angle_c;
33 extern "C" const char* area_c;
34 extern "C" const char* area_c;
35 extern "C" const char* arrow1a_c;
36 extern "C" const char* arrow1b_c;
37 extern "C" const char* arrow2a_c;
38 extern "C" const char* arrow2b_c;
34 extern "C" const char* at_c;
39 extern "C" const char* at_c;
35 extern "C" const char* attr_c;
40 extern "C" const char* attr_c;
36 extern "C" const char* center_c;
41 extern "C" const char* center_c;
@@ -38,15 +43,20 extern "C" const char* clearance_c;
38 extern "C" const char* code_c;
43 extern "C" const char* code_c;
39 extern "C" const char* component_c;
44 extern "C" const char* component_c;
40 extern "C" const char* components_c;
45 extern "C" const char* components_c;
46 extern "C" const char* crossbar_c;
41 extern "C" const char* date_c;
47 extern "C" const char* date_c;
42 extern "C" const char* design_c;
48 extern "C" const char* design_c;
49 extern "C" const char* dimension_c;
43 extern "C" const char* drawings_c;
50 extern "C" const char* drawings_c;
51 extern "C" const char* drill_c;
44 extern "C" const char* drillshape_c;
52 extern "C" const char* drillshape_c;
45 extern "C" const char* edge_width_c;
53 extern "C" const char* edge_width_c;
46 extern "C" const char* effects_c;
54 extern "C" const char* effects_c;
47 extern "C" const char* end_c;
55 extern "C" const char* end_c;
48 extern "C" const char* excludeedgelayer_c;
56 extern "C" const char* excludeedgelayer_c;
49 extern "C" const char* export_c;
57 extern "C" const char* export_c;
58 extern "C" const char* feature1_c;
59 extern "C" const char* feature2_c;
50 extern "C" const char* field_c;
60 extern "C" const char* field_c;
51 extern "C" const char* fields_c;
61 extern "C" const char* fields_c;
52 extern "C" const char* font_c;
62 extern "C" const char* font_c;
@@ -54,6 +64,10 extern "C" const char* fp_circle_c;
54 extern "C" const char* fp_line_c;
64 extern "C" const char* fp_line_c;
55 extern "C" const char* fp_text_c;
65 extern "C" const char* fp_text_c;
56 extern "C" const char* general_c;
66 extern "C" const char* general_c;
67 extern "C" const char* gr_arc_c;
68 extern "C" const char* gr_circle_c;
69 extern "C" const char* gr_line_c;
70 extern "C" const char* gr_text_c;
57 extern "C" const char* host_c;
71 extern "C" const char* host_c;
58 extern "C" const char* hpglpendiameter_c;
72 extern "C" const char* hpglpendiameter_c;
59 extern "C" const char* hpglpennumber_c;
73 extern "C" const char* hpglpennumber_c;
@@ -62,6 +76,7 extern "C" const char* hpglpenspeed_c;
62 extern "C" const char* kicad_pcb_c;
76 extern "C" const char* kicad_pcb_c;
63 extern "C" const char* last_trace_width_c;
77 extern "C" const char* last_trace_width_c;
64 extern "C" const char* layers_c;
78 extern "C" const char* layers_c;
79 extern "C" const char* layer_c;
65 extern "C" const char* layerselection_c;
80 extern "C" const char* layerselection_c;
66 extern "C" const char* lib_c;
81 extern "C" const char* lib_c;
67 extern "C" const char* libpart_c;
82 extern "C" const char* libpart_c;
@@ -113,9 +128,11 extern "C" const char* ref_c;
113 extern "C" const char* rotate;
128 extern "C" const char* rotate;
114 extern "C" const char* scale_c;
129 extern "C" const char* scale_c;
115 extern "C" const char* scaleselection_c;
130 extern "C" const char* scaleselection_c;
131 extern "C" const char* segment_c;
116 extern "C" const char* segment_width_c;
132 extern "C" const char* segment_width_c;
117 extern "C" const char* setup_c;
133 extern "C" const char* setup_c;
118 extern "C" const char* sheetpath_c;
134 extern "C" const char* sheetpath_c;
135 extern "C" const char* size_c;
119 extern "C" const char* source_c;
136 extern "C" const char* source_c;
120 extern "C" const char* start_c;
137 extern "C" const char* start_c;
121 extern "C" const char* subtractmaskfromsilk_c;
138 extern "C" const char* subtractmaskfromsilk_c;
@@ -141,6 +158,7 extern "C" const char* uvia_size_c;
141 extern "C" const char* uvias_allowed_c;
158 extern "C" const char* uvias_allowed_c;
142 extern "C" const char* value_c;
159 extern "C" const char* value_c;
143 extern "C" const char* version_c;
160 extern "C" const char* version_c;
161 extern "C" const char* via_c;
144 extern "C" const char* via_dia_c;
162 extern "C" const char* via_dia_c;
145 extern "C" const char* via_drill_c;
163 extern "C" const char* via_drill_c;
146 extern "C" const char* via_min_drill_c;
164 extern "C" const char* via_min_drill_c;
@@ -152,6 +170,7 extern "C" const char* width_c;
152 extern "C" const char* xyz;
170 extern "C" const char* xyz;
153 extern "C" const char* zone_45_only_c;
171 extern "C" const char* zone_45_only_c;
154 extern "C" const char* zone_clearance_c;
172 extern "C" const char* zone_clearance_c;
173 extern "C" const char* zone_c;
155 extern "C" const char* zones_c;
174 extern "C" const char* zones_c;
156 }
175 }
157 }
176 }
This diff has been collapsed as it changes many lines, (922 lines changed) Show them Hide them
@@ -48,10 +48,19 QIlib::QIcadPcbRoot::QIcadPcbRoot(QIlib:
48
48
49 void QIlib::QIcadPcbRoot::setNode(QIlib::AbstractNode *node)
49 void QIlib::QIcadPcbRoot::setNode(QIlib::AbstractNode *node)
50 {
50 {
51 this->p_node = node;
52 this->clrNets();
51 this->clrNets();
52 this->clrModules();
53 this->clrDimensions();
54 this->clrLines();
55 this->clrSegments();
56 this->clrVias();
57 this->clrArcs();
58 this->clrCircles();
59 this->clrTexts();
60 this->clrZones();
53 if(node->name==QIlib::Lexique::kicad_pcb_c)
61 if(node->name==QIlib::Lexique::kicad_pcb_c)
54 {
62 {
63 this->p_node = node;
55 for(int i=0;i<node->nodes.count();i++)
64 for(int i=0;i<node->nodes.count();i++)
56 {
65 {
57 if(node->nodes.at(i)->name==QIlib::Lexique::version_c)
66 if(node->nodes.at(i)->name==QIlib::Lexique::version_c)
@@ -82,6 +91,42 void QIlib::QIcadPcbRoot::setNode(QIlib:
82 {
91 {
83 this->apendNet(node->nodes.at(i));
92 this->apendNet(node->nodes.at(i));
84 }
93 }
94 if(node->nodes.at(i)->name==QIlib::Lexique::module_c)
95 {
96 this->apendModule(node->nodes.at(i));
97 }
98 if(node->nodes.at(i)->name==QIlib::Lexique::gr_line_c)
99 {
100 this->apendLine(node->nodes.at(i));
101 }
102 if(node->nodes.at(i)->name==QIlib::Lexique::dimension_c)
103 {
104 this->apendDimension(node->nodes.at(i));
105 }
106 if(node->nodes.at(i)->name==QIlib::Lexique::via_c)
107 {
108 this->apendVia(node->nodes.at(i));
109 }
110 if(node->nodes.at(i)->name==QIlib::Lexique::segment_c)
111 {
112 this->apendSegment(node->nodes.at(i));
113 }
114 if(node->nodes.at(i)->name==QIlib::Lexique::gr_text_c)
115 {
116 this->apendText(node->nodes.at(i));
117 }
118 if(node->nodes.at(i)->name==QIlib::Lexique::gr_arc_c)
119 {
120 this->apendArc(node->nodes.at(i));
121 }
122 if(node->nodes.at(i)->name==QIlib::Lexique::gr_circle_c)
123 {
124 this->apendCircle(node->nodes.at(i));
125 }
126 if(node->nodes.at(i)->name==QIlib::Lexique::zone_c)
127 {
128 this->apendZone(node->nodes.at(i));
129 }
85 }
130 }
86 }
131 }
87 }
132 }
@@ -105,6 +150,176 void QIlib::QIcadPcbRoot::apendNet(QIlib
105 }
150 }
106 }
151 }
107
152
153 void QIlib::QIcadPcbRoot::clrModules()
154 {
155 while(modules.count())
156 {
157 QIcadPcbModule* module;
158 module = modules.last();
159 modules.removeLast();
160 delete module;
161 }
162 }
163
164 void QIlib::QIcadPcbRoot::apendModule(QIlib::AbstractNode *node)
165 {
166 if(node->name==QIlib::Lexique::module_c)
167 {
168 this->modules.append(new QIcadPcbModule(node));
169 }
170 }
171
172 void QIlib::QIcadPcbRoot::clrDimensions()
173 {
174 while(dimensions.count())
175 {
176 QIcadPcbDimension* dimension;
177 dimension = dimensions.last();
178 dimensions.removeLast();
179 delete dimension;
180 }
181 }
182
183 void QIlib::QIcadPcbRoot::apendDimension(QIlib::AbstractNode *node)
184 {
185 if(node->name==QIlib::Lexique::dimension_c)
186 {
187 this->dimensions.append(new QIcadPcbDimension(node));
188 }
189 }
190
191 void QIlib::QIcadPcbRoot::apendLine(QIlib::AbstractNode *node)
192 {
193 if(node->name==QIlib::Lexique::gr_line_c)
194 {
195 this->lines.append(new QIcadPcbLine(node));
196 }
197 }
198
199 void QIlib::QIcadPcbRoot::clrLines()
200 {
201 while(lines.count())
202 {
203 QIcadPcbLine* line;
204 line = lines.last();
205 lines.removeLast();
206 delete line;
207 }
208 }
209
210 void QIlib::QIcadPcbRoot::clrSegments()
211 {
212 while(segments.count())
213 {
214 QIcadPcbSegment* segment;
215 segment = segments.last();
216 segments.removeLast();
217 delete segment;
218 }
219 }
220
221 void QIlib::QIcadPcbRoot::apendSegment(QIlib::AbstractNode *node)
222 {
223 if(node->name==QIlib::Lexique::segment_c)
224 {
225 this->segments.append(new QIcadPcbSegment(node));
226 }
227 }
228
229 void QIlib::QIcadPcbRoot::clrVias()
230 {
231 while(vias.count())
232 {
233 QIcadPcbVia* via;
234 via = vias.last();
235 vias.removeLast();
236 delete via;
237 }
238 }
239
240 void QIlib::QIcadPcbRoot::apendVia(QIlib::AbstractNode *node)
241 {
242 if(node->name==QIlib::Lexique::via_c)
243 {
244 this->vias.append(new QIcadPcbVia(node));
245 }
246 }
247
248 void QIlib::QIcadPcbRoot::clrArcs()
249 {
250 while(arcs.count())
251 {
252 QIcadPcbArc* arc;
253 arc = arcs.last();
254 arcs.removeLast();
255 delete arc;
256 }
257 }
258
259 void QIlib::QIcadPcbRoot::apendArc(QIlib::AbstractNode *node)
260 {
261 if(node->name==QIlib::Lexique::gr_arc_c)
262 {
263 this->arcs.append(new QIcadPcbArc(node));
264 }
265 }
266
267 void QIlib::QIcadPcbRoot::clrCircles()
268 {
269 while(circles.count())
270 {
271 QIcadPcbCircle* circle;
272 circle = circles.last();
273 circles.removeLast();
274 delete circle;
275 }
276 }
277
278 void QIlib::QIcadPcbRoot::apendCircle(QIlib::AbstractNode *node)
279 {
280 if(node->name==QIlib::Lexique::gr_circle_c)
281 {
282 this->circles.append(new QIcadPcbCircle(node));
283 }
284 }
285
286 void QIlib::QIcadPcbRoot::clrTexts()
287 {
288 while(texts.count())
289 {
290 QIcadPcbText* text;
291 text = texts.last();
292 texts.removeLast();
293 delete text;
294 }
295 }
296
297 void QIlib::QIcadPcbRoot::apendText(QIlib::AbstractNode *node)
298 {
299 if(node->name==QIlib::Lexique::gr_text_c)
300 {
301 this->texts.append(new QIcadPcbText(node));
302 }
303 }
304
305 void QIlib::QIcadPcbRoot::clrZones()
306 {
307 while(zones.count())
308 {
309 QIcadPcbZone* zone;
310 zone = zones.last();
311 zones.removeLast();
312 delete zone;
313 }
314 }
315
316 void QIlib::QIcadPcbRoot::apendZone(QIlib::AbstractNode *node)
317 {
318 if(node->name==QIlib::Lexique::zone_c)
319 {
320 this->zones.append(new QIcadPcbZone(node));
321 }
322 }
108
323
109 QIlib::QIcadPcbGeneralInfo::QIcadPcbGeneralInfo(QIlib::AbstractNode *node)
324 QIlib::QIcadPcbGeneralInfo::QIcadPcbGeneralInfo(QIlib::AbstractNode *node)
110 :QIcadAbstractNodeWrapper(node)
325 :QIcadAbstractNodeWrapper(node)
@@ -114,7 +329,49 QIlib::QIcadPcbGeneralInfo::QIcadPcbGene
114
329
115 void QIlib::QIcadPcbGeneralInfo::setNode(QIlib::AbstractNode *node)
330 void QIlib::QIcadPcbGeneralInfo::setNode(QIlib::AbstractNode *node)
116 {
331 {
117 this->p_node = node;
332 if(node->name==QIlib::Lexique::general_c)
333 {
334 this->p_node = node;
335 for(int i=0;i<node->nodes.count();i++)
336 {
337 if(node->nodes.at(i)->name==QIlib::Lexique::links_c)
338 {
339 this->links.setNode(node->nodes.at(i));
340 }
341 if(node->nodes.at(i)->name==QIlib::Lexique::no_connect_c)
342 {
343 this->no_connections.setNode(node->nodes.at(i));
344 }
345 if(node->nodes.at(i)->name==QIlib::Lexique::area_c)
346 {
347 this->area.setNode(node->nodes.at(i));
348 }
349 if(node->nodes.at(i)->name==QIlib::Lexique::thickness_c)
350 {
351 this->thickness.setNode(node->nodes.at(i));
352 }
353 if(node->nodes.at(i)->name==QIlib::Lexique::drawings_c)
354 {
355 this->drawings.setNode(node->nodes.at(i));
356 }
357 if(node->nodes.at(i)->name==QIlib::Lexique::tracks_c)
358 {
359 this->tracks.setNode(node->nodes.at(i));
360 }
361 if(node->nodes.at(i)->name==QIlib::Lexique::zones_c)
362 {
363 this->zones.setNode(node->nodes.at(i));
364 }
365 if(node->nodes.at(i)->name==QIlib::Lexique::modules_c)
366 {
367 this->modules.setNode(node->nodes.at(i));
368 }
369 if(node->nodes.at(i)->name==QIlib::Lexique::nets_c)
370 {
371 this->nets.setNode(node->nodes.at(i));
372 }
373 }
374 }
118 }
375 }
119
376
120
377
@@ -127,18 +384,73 QIlib::QIcadPcbLayers::QIcadPcbLayers(QI
127 void QIlib::QIcadPcbLayers::setNode(QIlib::AbstractNode *node)
384 void QIlib::QIcadPcbLayers::setNode(QIlib::AbstractNode *node)
128 {
385 {
129 this->p_node = node;
386 this->p_node = node;
387 if(node->name==QIlib::Lexique::layers_c)
388 {
389 this->clrLayers();
390 for(int i=0;i<node->nodes.count();i++)
391 {
392 this->apendLayer(node->nodes.at(i));
393 }
394 }
395 }
396
397 void QIlib::QIcadPcbLayers::clrLayers()
398 {
399 while(layers.count())
400 {
401 QIcadPcbLayer* layer;
402 layer = layers.last();
403 layers.removeLast();
404 delete layer;
405 }
406 }
407
408 void QIlib::QIcadPcbLayers::apendLayer(QIlib::AbstractNode *node)
409 {
410 this->layers.append(new QIcadPcbLayer(node));
130 }
411 }
131
412
132
413
133 QIlib::QIcadPcbLine::QIcadPcbLine(QIlib::AbstractNode *node)
414 QIlib::QIcadPcbLine::QIcadPcbLine(QIlib::AbstractNode *node)
134 :QIcadAbstractNodeWrapper(node)
415 :QIcadAbstractPcbLine(node)
135 {
416 {
136 this->setNode(node);
417 this->setNode(node);
137 }
418 }
138
419
420
139 void QIlib::QIcadPcbLine::setNode(QIlib::AbstractNode *node)
421 void QIlib::QIcadPcbLine::setNode(QIlib::AbstractNode *node)
140 {
422 {
141 this->p_node = node;
423 if(node->name==QIlib::Lexique::gr_line_c)
424 {
425 this->p_node = node;
426 for(int i=0;i<node->nodes.count();i++)
427 {
428 if(node->nodes.at(i)->name==QIlib::Lexique::start_c)
429 {
430 this->p_startpos = nodeTo2DCoords(node->nodes.at(i));
431 this->start.setNode(node->nodes.at(i));
432 }
433 if(node->nodes.at(i)->name==QIlib::Lexique::end_c)
434 {
435 this->p_stoppos = nodeTo2DCoords(node->nodes.at(i));
436 this->end.setNode(node->nodes.at(i));
437 }
438 if(node->nodes.at(i)->name==QIlib::Lexique::angle_c)
439 {
440 this->angle.setNode(node->nodes.at(i));
441 }
442 if(node->nodes.at(i)->name==QIlib::Lexique::layer_c)
443 {
444 this->p_layers = node->nodes.at(i)->Values;
445 this->layer.setNode(node->nodes.at(i));
446 }
447 if(node->nodes.at(i)->name==QIlib::Lexique::width_c)
448 {
449 this->p_width = nodeValueToDouble(node->nodes.at(i));
450 this->width.setNode(node->nodes.at(i));
451 }
452 }
453 }
142 }
454 }
143
455
144
456
@@ -148,9 +460,152 QIlib::QIcadPcbModule::QIcadPcbModule(QI
148 this->setNode(node);
460 this->setNode(node);
149 }
461 }
150
462
463 const QPointF &QIlib::QIcadPcbModule::pos()
464 {
465 return p_pos;
466 }
467
468 double QIlib::QIcadPcbModule::angle()
469 {
470 return p_angle;
471 }
472
151 void QIlib::QIcadPcbModule::setNode(QIlib::AbstractNode *node)
473 void QIlib::QIcadPcbModule::setNode(QIlib::AbstractNode *node)
152 {
474 {
153 this->p_node = node;
475 this->clrPads();
476 if(node->name==QIlib::Lexique::module_c)
477 {
478 this->p_node = node;
479 for(int i=0;i<node->nodes.count();i++)
480 {
481 if(node->nodes.at(i)->name==QIlib::Lexique::layer_c)
482 {
483 this->layer.setNode(node->nodes.at(i));
484 }
485 if(node->nodes.at(i)->name==QIlib::Lexique::tedit_c)
486 {
487 this->tedit.setNode(node->nodes.at(i));
488 }
489 if(node->nodes.at(i)->name==QIlib::Lexique::tstamp_c)
490 {
491 this->tstamp.setNode(node->nodes.at(i));
492 }
493 if(node->nodes.at(i)->name==QIlib::Lexique::at_c)
494 {
495 this->at.setNode(node->nodes.at(i));
496 QStringList coords=node->nodes.at(i)->Values;
497 p_pos = nodeTo2DCoords(node->nodes.at(i));
498 if(coords.count()==3)
499 {
500 p_angle = coords.at(2).toDouble();
501 }
502 }
503 if(node->nodes.at(i)->name==QIlib::Lexique::tags_c)
504 {
505 this->tags.setNode(node->nodes.at(i));
506 }
507 if(node->nodes.at(i)->name==QIlib::Lexique::path_c)
508 {
509 this->path.setNode(node->nodes.at(i));
510 }
511 if(node->nodes.at(i)->name==QIlib::Lexique::attr_c)
512 {
513 this->attr.setNode(node->nodes.at(i));
514 }
515 if(node->nodes.at(i)->name==QIlib::Lexique::pad_c)
516 {
517 this->apendPad(node->nodes.at(i));
518 }
519 if(node->nodes.at(i)->name==QIlib::Lexique::fp_line_c)
520 {
521 this->apendLine(node->nodes.at(i));
522 }
523 if(node->nodes.at(i)->name==QIlib::Lexique::fp_text_c)
524 {
525 this->apendText(node->nodes.at(i));
526 }
527 if(node->nodes.at(i)->name==QIlib::Lexique::fp_circle_c)
528 {
529 this->apendCircle(node->nodes.at(i));
530 }
531 }
532 }
533 }
534
535 void QIlib::QIcadPcbModule::clrPads()
536 {
537 while(pads.count())
538 {
539 QIcadPcbPad* pad;
540 pad = pads.last();
541 pads.removeLast();
542 delete pad;
543 }
544 }
545
546 void QIlib::QIcadPcbModule::apendPad(QIlib::AbstractNode *node)
547 {
548 if(node->name==QIlib::Lexique::pad_c)
549 {
550 this->pads.append(new QIcadPcbPad(node));
551 }
552 }
553
554 void QIlib::QIcadPcbModule::clrTexts()
555 {
556 while(fp_texts.count())
557 {
558 QIcadPcbFPText* text;
559 text = fp_texts.last();
560 fp_texts.removeLast();
561 delete text;
562 }
563 }
564
565 void QIlib::QIcadPcbModule::apendText(QIlib::AbstractNode *node)
566 {
567 if(node->name==QIlib::Lexique::fp_text_c)
568 {
569 this->fp_texts.append(new QIcadPcbFPText(node));
570 }
571 }
572
573 void QIlib::QIcadPcbModule::clrLines()
574 {
575 while(fp_lines.count())
576 {
577 QIcadPcbFPLine* line;
578 line = fp_lines.last();
579 fp_lines.removeLast();
580 delete line;
581 }
582 }
583
584 void QIlib::QIcadPcbModule::apendLine(QIlib::AbstractNode *node)
585 {
586 if(node->name==QIlib::Lexique::fp_line_c)
587 {
588 this->fp_lines.append(new QIcadPcbFPLine(node));
589 }
590 }
591
592 void QIlib::QIcadPcbModule::clrCircles()
593 {
594 while(fp_circles.count())
595 {
596 QIcadPcbFPCircle* circle;
597 circle = fp_circles.last();
598 fp_circles.removeLast();
599 delete circle;
600 }
601 }
602
603 void QIlib::QIcadPcbModule::apendCircle(QIlib::AbstractNode *node)
604 {
605 if(node->name==QIlib::Lexique::fp_circle_c)
606 {
607 this->fp_circles.append(new QIcadPcbFPCircle(node));
608 }
154 }
609 }
155
610
156
611
@@ -162,7 +617,49 QIlib::QIcadPcbDimension::QIcadPcbDimens
162
617
163 void QIlib::QIcadPcbDimension::setNode(QIlib::AbstractNode *node)
618 void QIlib::QIcadPcbDimension::setNode(QIlib::AbstractNode *node)
164 {
619 {
165 this->p_node = node;
620 if(node->name==QIlib::Lexique::dimension_c)
621 {
622 this->p_node = node;
623 for(int i=0;i<node->nodes.count();i++)
624 {
625 if(node->nodes.at(i)->name==QIlib::Lexique::width_c)
626 {
627 this->width.setNode(node->nodes.at(i));
628 }
629 if(node->nodes.at(i)->name==QIlib::Lexique::layer_c)
630 {
631 this->layer.setNode(node->nodes.at(i));
632 }
633 if(node->nodes.at(i)->name==QIlib::Lexique::gr_text_c)
634 {
635 this->gr_text.setNode(node->nodes.at(i));
636 }
637 if(node->nodes.at(i)->name==QIlib::Lexique::feature1_c)
638 {
639 this->feature1.setNode(node->nodes.at(i));
640 }
641 if(node->nodes.at(i)->name==QIlib::Lexique::crossbar_c)
642 {
643 this->crossbar.setNode(node->nodes.at(i));
644 }
645 if(node->nodes.at(i)->name==QIlib::Lexique::arrow1a_c)
646 {
647 this->arrow1a.setNode(node->nodes.at(i));
648 }
649 if(node->nodes.at(i)->name==QIlib::Lexique::arrow1b_c)
650 {
651 this->arrow1b.setNode(node->nodes.at(i));
652 }
653 if(node->nodes.at(i)->name==QIlib::Lexique::arrow2a_c)
654 {
655 this->arrow2a.setNode(node->nodes.at(i));
656 }
657 if(node->nodes.at(i)->name==QIlib::Lexique::arrow2b_c)
658 {
659 this->arrow2b.setNode(node->nodes.at(i));
660 }
661 }
662 }
166 }
663 }
167
664
168
665
@@ -178,15 +675,33 void QIlib::QIcadPcbModuleModel::setNode
178 }
675 }
179
676
180
677
181 QIlib::QIcadPcbFpText::QIcadPcbFpText(QIlib::AbstractNode *node)
678 QIlib::QIcadPcbFPText::QIcadPcbFPText(QIlib::AbstractNode *node)
182 :QIcadAbstractNodeWrapper(node)
679 :QIcadAbstractNodeWrapper(node)
183 {
680 {
184 this->setNode(node);
681 this->setNode(node);
185 }
682 }
186
683
187 void QIlib::QIcadPcbFpText::setNode(QIlib::AbstractNode *node)
684 void QIlib::QIcadPcbFPText::setNode(QIlib::AbstractNode *node)
188 {
685 {
189 this->p_node = node;
686 if(node->name==QIlib::Lexique::pad_c)
687 {
688 this->p_node = node;
689 for(int i=0;i<node->nodes.count();i++)
690 {
691 if(node->nodes.at(i)->name==QIlib::Lexique::at_c)
692 {
693 this->at.setNode(node->nodes.at(i));
694 }
695 if(node->nodes.at(i)->name==QIlib::Lexique::layer_c)
696 {
697 this->layer.setNode(node->nodes.at(i));
698 }
699 if(node->nodes.at(i)->name==QIlib::Lexique::effects_c)
700 {
701 this->effects.setNode(node->nodes.at(i));
702 }
703 }
704 }
190 }
705 }
191
706
192
707
@@ -251,14 +766,44 void QIlib::QIcadPcbPlotParams::setNode(
251
766
252
767
253 QIlib::QIcadPcbSegment::QIcadPcbSegment(QIlib::AbstractNode *node)
768 QIlib::QIcadPcbSegment::QIcadPcbSegment(QIlib::AbstractNode *node)
254 :QIcadAbstractNodeWrapper(node)
769 :QIcadAbstractPcbLine(node)
255 {
770 {
256 this->setNode(node);
771 this->setNode(node);
257 }
772 }
258
773
259 void QIlib::QIcadPcbSegment::setNode(QIlib::AbstractNode *node)
774 void QIlib::QIcadPcbSegment::setNode(QIlib::AbstractNode *node)
260 {
775 {
261 this->p_node = node;
776 if(node->name==QIlib::Lexique::segment_c)
777 {
778 this->p_node = node;
779 for(int i=0;i<node->nodes.count();i++)
780 {
781 if(node->nodes.at(i)->name==QIlib::Lexique::start_c)
782 {
783 this->p_startpos = nodeTo2DCoords(node->nodes.at(i));
784 this->start.setNode(node->nodes.at(i));
785 }
786 if(node->nodes.at(i)->name==QIlib::Lexique::end_c)
787 {
788 this->p_stoppos = nodeTo2DCoords(node->nodes.at(i));
789 this->end.setNode(node->nodes.at(i));
790 }
791 if(node->nodes.at(i)->name==QIlib::Lexique::width_c)
792 {
793 this->p_width = nodeValueToDouble(node->nodes.at(i));
794 this->width.setNode(node->nodes.at(i));
795 }
796 if(node->nodes.at(i)->name==QIlib::Lexique::layer_c)
797 {
798 this->p_layers = node->nodes.at(i)->Values;
799 this->layer.setNode(node->nodes.at(i));
800 }
801 if(node->nodes.at(i)->name==QIlib::Lexique::net_c)
802 {
803 this->net.setNode(node->nodes.at(i));
804 }
805 }
806 }
262 }
807 }
263
808
264
809
@@ -270,5 +815,358 QIlib::QIcadPcbVia::QIcadPcbVia(QIlib::A
270
815
271 void QIlib::QIcadPcbVia::setNode(QIlib::AbstractNode *node)
816 void QIlib::QIcadPcbVia::setNode(QIlib::AbstractNode *node)
272 {
817 {
273 this->p_node = node;
818 if(node->name==QIlib::Lexique::via_c)
819 {
820 this->p_node = node;
821 for(int i=0;i<node->nodes.count();i++)
822 {
823 if(node->nodes.at(i)->name==QIlib::Lexique::at_c)
824 {
825 this->at.setNode(node->nodes.at(i));
826 p_pos = nodeTo2DCoords(node->nodes.at(i));
827 }
828 if(node->nodes.at(i)->name==QIlib::Lexique::size_c)
829 {
830 this->sizeNode.setNode(node->nodes.at(i));
831 p_size = nodeTo2DSize(node->nodes.at(i));
832 }
833 if(node->nodes.at(i)->name==QIlib::Lexique::drill_c)
834 {
835 this->drillNode.setNode(node->nodes.at(i));
836 p_drill = nodeValueToDouble(node->nodes.at(i));
837 }
838 if(node->nodes.at(i)->name==QIlib::Lexique::layers_c)
839 {
840 this->layersNode.setNode(node->nodes.at(i));
841 p_layers = node->nodes.at(i)->Values;
842 }
843 if(node->nodes.at(i)->name==QIlib::Lexique::net_c)
844 {
845 this->net.setNode(node->nodes.at(i));
846 }
847 if(node->nodes.at(i)->name==QIlib::Lexique::tstamp_c)
848 {
849 this->tstamp.setNode(node->nodes.at(i));
850 }
851 }
852 }
853 }
854
855
856 QIlib::QIcadPcbPad::QIcadPcbPad(QIlib::AbstractNode *node)
857 :QIcadAbstractNodeWrapper(node)
858 {
859 this->setNode(node);
860 }
861
862 void QIlib::QIcadPcbPad::setNode(QIlib::AbstractNode *node)
863 {
864 if(node->name==QIlib::Lexique::pad_c)
865 {
866 this->p_node = node;
867 if(p_node->Values.count()>=3)
868 {
869 if(!this->p_node->Values.at((2)).compare("rect"))
870 {
871 this->p_shape = rectangle;
872 }
873 else
874 if(!this->p_node->Values.at((2)).compare("circle"))
875 {
876 this->p_shape = circle;
877 }
878
879 }
880 for(int i=0;i<node->nodes.count();i++)
881 {
882 if(node->nodes.at(i)->name==QIlib::Lexique::at_c)
883 {
884 this->at.setNode(node->nodes.at(i));
885 this->p_pos = nodeTo2DCoords(node->nodes.at(i));
886 }
887 if(node->nodes.at(i)->name==QIlib::Lexique::size_c)
888 {
889 this->sizeNode.setNode(node->nodes.at(i));
890 this->p_size = nodeTo2DSize(node->nodes.at(i));
891 }
892 if(node->nodes.at(i)->name==QIlib::Lexique::layers_c)
893 {
894 this->layer.setNode(node->nodes.at(i));
895 this->p_layers = node->nodes.at(i)->Values;
896 }
897 if(node->nodes.at(i)->name==QIlib::Lexique::net_c)
898 {
899 this->netNode.setNode(node->nodes.at(i));
900 }
901 if(node->nodes.at(i)->name==QIlib::Lexique::drill_c)
902 {
903 this->drillNode.setNode(node->nodes.at(i));
904 this->p_drill = nodeValueToDouble(node->nodes.at(i));
905 }
906 }
907 }
908 }
909
910
911 QIlib::QIcadPcbFPLine::QIcadPcbFPLine(QIlib::AbstractNode *node)
912 :QIcadAbstractPcbLine(node)
913 {
914 this->setNode(node);
915 }
916
917 void QIlib::QIcadPcbFPLine::setNode(QIlib::AbstractNode *node)
918 {
919 if(node->name==QIlib::Lexique::fp_line_c)
920 {
921 this->p_node = node;
922 for(int i=0;i<node->nodes.count();i++)
923 {
924 if(node->nodes.at(i)->name==QIlib::Lexique::start_c)
925 {
926 this->p_startpos = nodeTo2DCoords(node->nodes.at(i));
927 this->start.setNode(node->nodes.at(i));
928 }
929 if(node->nodes.at(i)->name==QIlib::Lexique::end_c)
930 {
931 this->p_stoppos = nodeTo2DCoords(node->nodes.at(i));
932 this->end.setNode(node->nodes.at(i));
933 }
934 if(node->nodes.at(i)->name==QIlib::Lexique::layer_c)
935 {
936 this->p_layers = node->nodes.at(i)->Values;
937 this->layer.setNode(node->nodes.at(i));
938 }
939 if(node->nodes.at(i)->name==QIlib::Lexique::width_c)
940 {
941 this->p_width = nodeValueToDouble(node->nodes.at(i));
942 this->width.setNode(node->nodes.at(i));
943 }
944 }
945 }
946 }
947
948
949 QIlib::QIcadPcbFPCircle::QIcadPcbFPCircle(QIlib::AbstractNode *node)
950 :QIcadAbstractNodeWrapper(node)
951 {
952 this->setNode(node);
953 }
954
955 void QIlib::QIcadPcbFPCircle::setNode(QIlib::AbstractNode *node)
956 {
957 if(node->name==QIlib::Lexique::fp_circle_c)
958 {
959 this->p_node = node;
960 for(int i=0;i<node->nodes.count();i++)
961 {
962 if(node->nodes.at(i)->name==QIlib::Lexique::center_c)
963 {
964 this->center.setNode(node->nodes.at(i));
965 }
966 if(node->nodes.at(i)->name==QIlib::Lexique::end_c)
967 {
968 this->end.setNode(node->nodes.at(i));
969 }
970 if(node->nodes.at(i)->name==QIlib::Lexique::layer_c)
971 {
972 this->layer.setNode(node->nodes.at(i));
973 }
974 if(node->nodes.at(i)->name==QIlib::Lexique::width_c)
975 {
976 this->width.setNode(node->nodes.at(i));
977 }
978 }
979 }
980 }
981
982
983 QIlib::QIcadPcbText::QIcadPcbText(QIlib::AbstractNode *node)
984 :QIcadAbstractNodeWrapper(node)
985 {
986 this->setNode(node);
274 }
987 }
988
989 void QIlib::QIcadPcbText::setNode(QIlib::AbstractNode *node)
990 {
991 if(node->name==QIlib::Lexique::gr_text_c)
992 {
993 this->p_node = node;
994 for(int i=0;i<node->nodes.count();i++)
995 {
996 if(node->nodes.at(i)->name==QIlib::Lexique::at_c)
997 {
998 this->at.setNode(node->nodes.at(i));
999 }
1000 if(node->nodes.at(i)->name==QIlib::Lexique::layer_c)
1001 {
1002 this->layer.setNode(node->nodes.at(i));
1003 }
1004 if(node->nodes.at(i)->name==QIlib::Lexique::width_c)
1005 {
1006 this->width.setNode(node->nodes.at(i));
1007 }
1008 if(node->nodes.at(i)->name==QIlib::Lexique::effects_c)
1009 {
1010 this->effects.setNode(node->nodes.at(i));
1011 }
1012 }
1013 }
1014 }
1015
1016
1017 QIlib::QIcadPcbCircle::QIcadPcbCircle(QIlib::AbstractNode *node)
1018 :QIcadAbstractNodeWrapper(node)
1019 {
1020 this->setNode(node);
1021 }
1022
1023 void QIlib::QIcadPcbCircle::setNode(QIlib::AbstractNode *node)
1024 {
1025 if(node->name==QIlib::Lexique::gr_circle_c)
1026 {
1027 this->p_node = node;
1028 for(int i=0;i<node->nodes.count();i++)
1029 {
1030 if(node->nodes.at(i)->name==QIlib::Lexique::center_c)
1031 {
1032 this->center.setNode(node->nodes.at(i));
1033 }
1034 if(node->nodes.at(i)->name==QIlib::Lexique::end_c)
1035 {
1036 this->end.setNode(node->nodes.at(i));
1037 }
1038 if(node->nodes.at(i)->name==QIlib::Lexique::layer_c)
1039 {
1040 this->layer.setNode(node->nodes.at(i));
1041 }
1042 if(node->nodes.at(i)->name==QIlib::Lexique::width_c)
1043 {
1044 this->width.setNode(node->nodes.at(i));
1045 }
1046 }
1047 }
1048 }
1049
1050
1051 QIlib::QIcadPcbArc::QIcadPcbArc(QIlib::AbstractNode *node)
1052 :QIcadAbstractNodeWrapper(node)
1053 {
1054 this->setNode(node);
1055 }
1056
1057 void QIlib::QIcadPcbArc::setNode(QIlib::AbstractNode *node)
1058 {
1059 if(node->name==QIlib::Lexique::gr_arc_c)
1060 {
1061 this->p_node = node;
1062 for(int i=0;i<node->nodes.count();i++)
1063 {
1064 if(node->nodes.at(i)->name==QIlib::Lexique::start_c)
1065 {
1066 this->start.setNode(node->nodes.at(i));
1067 }
1068 if(node->nodes.at(i)->name==QIlib::Lexique::end_c)
1069 {
1070 this->end.setNode(node->nodes.at(i));
1071 }
1072 if(node->nodes.at(i)->name==QIlib::Lexique::angle_c)
1073 {
1074 this->angle.setNode(node->nodes.at(i));
1075 }
1076 if(node->nodes.at(i)->name==QIlib::Lexique::layer_c)
1077 {
1078 this->layer.setNode(node->nodes.at(i));
1079 }
1080 if(node->nodes.at(i)->name==QIlib::Lexique::width_c)
1081 {
1082 this->width.setNode(node->nodes.at(i));
1083 }
1084 }
1085 }
1086 }
1087
1088
1089 QIlib::QIcadPcbZone::QIcadPcbZone(QIlib::AbstractNode *node)
1090 :QIcadAbstractNodeWrapper(node)
1091 {
1092 this->setNode(node);
1093 }
1094
1095 void QIlib::QIcadPcbZone::setNode(QIlib::AbstractNode *node)
1096 {
1097 if(node->name==QIlib::Lexique::zone_c)
1098 {
1099 this->p_node = node;
1100 }
1101 }
1102
1103
1104 const QPointF QIlib::nodeTo2DCoords(QIlib::AbstractNode *node)
1105 {
1106 QPointF point;
1107 QStringList coords=node->Values;
1108 if(coords.count()>=2)
1109 {
1110 point.setX(coords.at(0).toDouble());
1111 point.setY(coords.at(1).toDouble());
1112 }
1113 return point;
1114 }
1115
1116
1117 double QIlib::nodeValueToDouble(QIlib::AbstractNode *node, int index)
1118 {
1119 if(node->Values.count()>index)
1120 {
1121 return node->Values.at(index).toDouble();
1122 }
1123 return 0.0;
1124 }
1125
1126
1127 int QIlib::nodeValueToInt(QIlib::AbstractNode *node, int index)
1128 {
1129 if(node->Values.count()>index)
1130 {
1131 return node->Values.at(index).toInt();
1132 }
1133 return 0;
1134 }
1135
1136
1137 QIlib::QIcadPcbLayer::QIcadPcbLayer(QIlib::AbstractNode *node)
1138 :QIcadAbstractNodeWrapper(node)
1139 {
1140 this->p_index = QString(this->p_node->name).remove('(').toInt();
1141 if(this->p_node->Values.count()>=1)
1142 {
1143 this->p_name = this->p_node->Values.at(0);
1144 }
1145 if(this->p_node->Values.count()>=2)
1146 {
1147 QString typestr=this->p_node->Values.at(1);
1148 this->p_type = none;
1149 if(!typestr.compare("signal"))
1150 {
1151 this->p_type = signal;
1152 }
1153 else
1154 if(!typestr.compare("user"))
1155 {
1156 this->p_type = user;
1157 }
1158 }
1159 }
1160
1161
1162 const QSizeF QIlib::nodeTo2DSize(QIlib::AbstractNode *node)
1163 {
1164 QSizeF size;
1165 QStringList sz=node->Values;
1166 if(sz.count()>=2)
1167 {
1168 size.setWidth(sz.at(0).toDouble());
1169 size.setHeight(sz.at(1).toDouble());
1170 }
1171 return size;
1172 }
@@ -27,9 +27,53
27 #include <QFile>
27 #include <QFile>
28 #include <parsers/lispLike_driver.h>
28 #include <parsers/lispLike_driver.h>
29 #include <qicadlisplikelexique.h>
29 #include <qicadlisplikelexique.h>
30 #include <QPointF>
31 #include <QRectF>
30
32
31 namespace QIlib{
33 namespace QIlib{
32
34
35 const QPointF nodeTo2DCoords(QIlib::AbstractNode* node);
36 const QSizeF nodeTo2DSize(QIlib::AbstractNode* node);
37 double nodeValueToDouble(QIlib::AbstractNode* node,int index=0);
38 int nodeValueToInt(QIlib::AbstractNode* node,int index=0);
39
40 class QIcadAbstractPcbLine : public QIcadAbstractNodeWrapper
41 {
42 public:
43 QIcadAbstractPcbLine(QIlib::AbstractNode* node)
44 :QIcadAbstractNodeWrapper(node)
45 {}
46 QIcadAbstractPcbLine(){}
47 virtual const QPointF& startPos(){return p_startpos;}
48 virtual const QPointF& stopPos(){return p_stoppos;}
49 virtual double width(){return p_width;}
50 virtual const QStringList& layers(){return p_layers;}
51 protected:
52 double p_width;
53 QPointF p_startpos;
54 QPointF p_stoppos;
55 QStringList p_layers;
56 };
57
58 class QIcadPcbLayer : public QIcadAbstractNodeWrapper
59 {
60 public:
61 typedef enum
62 {
63 signal,
64 user,
65 none
66 }layetType_t;
67 QIcadPcbLayer(QIlib::AbstractNode* node);
68 QIcadPcbLayer(){}
69 int index(){return p_index;}
70 const QString& name(){return p_name;}
71 layetType_t type(){return p_type;}
72 protected:
73 int p_index;
74 QString p_name;
75 layetType_t p_type;
76 };
33
77
34 class QIcadPcbPlotParams : public QIcadAbstractNodeWrapper
78 class QIcadPcbPlotParams : public QIcadAbstractNodeWrapper
35 {
79 {
@@ -99,7 +143,6 public:
99 void setNode(QIlib::AbstractNode* node);
143 void setNode(QIlib::AbstractNode* node);
100 };
144 };
101
145
102
103 class QIcadPcbNetClass : public QIcadAbstractNodeWrapper
146 class QIcadPcbNetClass : public QIcadAbstractNodeWrapper
104 {
147 {
105 public:
148 public:
@@ -133,13 +176,14 public:
133 void setNode(QIlib::AbstractNode* node);
176 void setNode(QIlib::AbstractNode* node);
134 };
177 };
135
178
136 class QIcadPcbFpText : public QIcadAbstractNodeWrapper
179 class QIcadPcbFPText : public QIcadAbstractNodeWrapper
137 {
180 {
138 public:
181 public:
139 QIcadPcbFpText(QIlib::AbstractNode* node);
182 QIcadPcbFPText(QIlib::AbstractNode* node);
140 QIcadPcbFpText(){}
183 QIcadPcbFPText(){}
141 QIcadAbstractNodeWrapper at;
184 QIcadAbstractNodeWrapper at;
142 QIcadAbstractNodeWrapper layer;
185 QIcadAbstractNodeWrapper layer;
186 QIcadPcbFpTextEffects effects;
143 void setNode(QIlib::AbstractNode* node);
187 void setNode(QIlib::AbstractNode* node);
144 };
188 };
145
189
@@ -154,7 +198,6 public:
154 void setNode(QIlib::AbstractNode* node);
198 void setNode(QIlib::AbstractNode* node);
155 };
199 };
156
200
157
158 class QIcadPcbDimension : public QIcadAbstractNodeWrapper
201 class QIcadPcbDimension : public QIcadAbstractNodeWrapper
159 {
202 {
160 public:
203 public:
@@ -173,11 +216,66 public:
173 void setNode(QIlib::AbstractNode* node);
216 void setNode(QIlib::AbstractNode* node);
174 };
217 };
175
218
219 class QIcadPcbPad : public QIcadAbstractNodeWrapper
220 {
221 public:
222 typedef enum
223 {
224 rectangle,
225 circle
226 }padShape;
227 QIcadPcbPad(QIlib::AbstractNode* node);
228 QIcadPcbPad(){}
229 QIcadAbstractNodeWrapper at;
230 QIcadAbstractNodeWrapper sizeNode;
231 QIcadAbstractNodeWrapper layer;
232 QIcadAbstractNodeWrapper netNode;
233 QIcadAbstractNodeWrapper drillNode;
234 const QStringList& layers(){return p_layers;}
235 const QSizeF& size(){return p_size;}
236 const QPointF& pos(){return p_pos;}
237 double drill(){return p_drill;}
238 padShape shape(){return p_shape;}
239 void setNode(QIlib::AbstractNode* node);
240 private:
241 padShape p_shape;
242 double p_drill;
243 QSizeF p_size;
244 QPointF p_pos;
245 QStringList p_layers;
246 };
247
248 class QIcadPcbFPLine : public QIcadAbstractPcbLine
249 {
250 public:
251 QIcadPcbFPLine(QIlib::AbstractNode* node);
252 QIcadPcbFPLine(){}
253 QIcadAbstractNodeWrapper start;
254 QIcadAbstractNodeWrapper end;
255 QIcadAbstractNodeWrapper layer;
256 QIcadAbstractNodeWrapper width;
257 void setNode(QIlib::AbstractNode* node);
258 };
259
260 class QIcadPcbFPCircle : public QIcadAbstractNodeWrapper
261 {
262 public:
263 QIcadPcbFPCircle(QIlib::AbstractNode* node);
264 QIcadPcbFPCircle(){}
265 QIcadAbstractNodeWrapper center;
266 QIcadAbstractNodeWrapper end;
267 QIcadAbstractNodeWrapper layer;
268 QIcadAbstractNodeWrapper width;
269 void setNode(QIlib::AbstractNode* node);
270 };
271
176 class QIcadPcbModule : public QIcadAbstractNodeWrapper
272 class QIcadPcbModule : public QIcadAbstractNodeWrapper
177 {
273 {
178 public:
274 public:
179 QIcadPcbModule(QIlib::AbstractNode* node);
275 QIcadPcbModule(QIlib::AbstractNode* node);
180 QIcadPcbModule(){}
276 QIcadPcbModule(){}
277 const QPointF& pos();
278 double angle();
181 QIcadAbstractNodeWrapper layer;
279 QIcadAbstractNodeWrapper layer;
182 QIcadAbstractNodeWrapper tedit;
280 QIcadAbstractNodeWrapper tedit;
183 QIcadAbstractNodeWrapper tstamp;
281 QIcadAbstractNodeWrapper tstamp;
@@ -186,14 +284,26 public:
186 QIcadAbstractNodeWrapper tags;
284 QIcadAbstractNodeWrapper tags;
187 QIcadAbstractNodeWrapper path;
285 QIcadAbstractNodeWrapper path;
188 QIcadAbstractNodeWrapper attr;
286 QIcadAbstractNodeWrapper attr;
189 QList<QIcadAbstractNodeWrapper*> fp_texts;
287 QList<QIcadPcbFPText*> fp_texts;
190 QList<QIcadAbstractNodeWrapper*> fp_lines;
288 QList<QIcadPcbFPLine*> fp_lines;
191 QList<QIcadAbstractNodeWrapper*> pads;
289 QList<QIcadPcbFPCircle*> fp_circles;
290 QList<QIcadPcbPad*> pads;
192 QIcadPcbModuleModel model;
291 QIcadPcbModuleModel model;
193 void setNode(QIlib::AbstractNode* node);
292 void setNode(QIlib::AbstractNode* node);
293 void clrPads();
294 void apendPad(QIlib::AbstractNode* node);
295 void clrTexts();
296 void apendText(QIlib::AbstractNode* node);
297 void clrLines();
298 void apendLine(QIlib::AbstractNode* node);
299 void clrCircles();
300 void apendCircle(QIlib::AbstractNode* node);
301 private:
302 QPointF p_pos;
303 double p_angle;
194 };
304 };
195
305
196 class QIcadPcbSegment : public QIcadAbstractNodeWrapper
306 class QIcadPcbSegment : public QIcadAbstractPcbLine
197 {
307 {
198 public:
308 public:
199 QIcadPcbSegment(QIlib::AbstractNode* node);
309 QIcadPcbSegment(QIlib::AbstractNode* node);
@@ -205,20 +315,31 public:
205 QIcadAbstractNodeWrapper net;
315 QIcadAbstractNodeWrapper net;
206 void setNode(QIlib::AbstractNode* node);
316 void setNode(QIlib::AbstractNode* node);
207 };
317 };
318
208 class QIcadPcbVia : public QIcadAbstractNodeWrapper
319 class QIcadPcbVia : public QIcadAbstractNodeWrapper
209 {
320 {
210 public:
321 public:
211 QIcadPcbVia(QIlib::AbstractNode* node);
322 QIcadPcbVia(QIlib::AbstractNode* node);
212 QIcadPcbVia(){}
323 QIcadPcbVia(){}
213 QIcadAbstractNodeWrapper at;
324 QIcadAbstractNodeWrapper at;
214 QIcadAbstractNodeWrapper size;
325 QIcadAbstractNodeWrapper sizeNode;
215 QIcadAbstractNodeWrapper drill;
326 QIcadAbstractNodeWrapper drillNode;
216 QIcadAbstractNodeWrapper layer;
327 QIcadAbstractNodeWrapper layersNode;
217 QIcadAbstractNodeWrapper net;
328 QIcadAbstractNodeWrapper net;
329 QIcadAbstractNodeWrapper tstamp;
218 void setNode(QIlib::AbstractNode* node);
330 void setNode(QIlib::AbstractNode* node);
331 const QStringList& layers(){return p_layers;}
332 const QSizeF& size(){return p_size;}
333 const QPointF& pos(){return p_pos;}
334 double drill(){return p_drill;}
335 private:
336 double p_drill;
337 QSizeF p_size;
338 QPointF p_pos;
339 QStringList p_layers;
219 };
340 };
220
341
221 class QIcadPcbLine : public QIcadAbstractNodeWrapper
342 class QIcadPcbLine : public QIcadAbstractPcbLine
222 {
343 {
223 public:
344 public:
224 QIcadPcbLine(QIlib::AbstractNode* node);
345 QIcadPcbLine(QIlib::AbstractNode* node);
@@ -231,13 +352,60 public:
231 void setNode(QIlib::AbstractNode* node);
352 void setNode(QIlib::AbstractNode* node);
232 };
353 };
233
354
355 class QIcadPcbZone : public QIcadAbstractNodeWrapper
356 {
357 public:
358 QIcadPcbZone(QIlib::AbstractNode* node);
359 QIcadPcbZone(){}
360 void setNode(QIlib::AbstractNode* node);
361 };
362
363 class QIcadPcbArc : public QIcadAbstractNodeWrapper
364 {
365 public:
366 QIcadPcbArc(QIlib::AbstractNode* node);
367 QIcadPcbArc(){}
368 QIcadAbstractNodeWrapper start;
369 QIcadAbstractNodeWrapper end;
370 QIcadAbstractNodeWrapper angle;
371 QIcadAbstractNodeWrapper layer;
372 QIcadAbstractNodeWrapper width;
373 void setNode(QIlib::AbstractNode* node);
374 };
375
376 class QIcadPcbCircle : public QIcadAbstractNodeWrapper
377 {
378 public:
379 QIcadPcbCircle(QIlib::AbstractNode* node);
380 QIcadPcbCircle(){}
381 QIcadAbstractNodeWrapper center;
382 QIcadAbstractNodeWrapper end;
383 QIcadAbstractNodeWrapper layer;
384 QIcadAbstractNodeWrapper width;
385 void setNode(QIlib::AbstractNode* node);
386 };
387
388 class QIcadPcbText : public QIcadAbstractNodeWrapper
389 {
390 public:
391 QIcadPcbText(QIlib::AbstractNode* node);
392 QIcadPcbText(){}
393 QIcadAbstractNodeWrapper at;
394 QIcadAbstractNodeWrapper layer;
395 QIcadAbstractNodeWrapper width;
396 QIcadPcbFpTextEffects effects;
397 void setNode(QIlib::AbstractNode* node);
398 };
399
234 class QIcadPcbLayers : public QIcadAbstractNodeWrapper
400 class QIcadPcbLayers : public QIcadAbstractNodeWrapper
235 {
401 {
236 public:
402 public:
237 QIcadPcbLayers(QIlib::AbstractNode* node);
403 QIcadPcbLayers(QIlib::AbstractNode* node);
238 QIcadPcbLayers(){}
404 QIcadPcbLayers(){}
239 QList<QIcadAbstractNodeWrapper*> layers;
405 QList<QIcadPcbLayer*> layers;
240 void setNode(QIlib::AbstractNode* node);
406 void setNode(QIlib::AbstractNode* node);
407 void clrLayers();
408 void apendLayer(QIlib::AbstractNode* node);
241 };
409 };
242
410
243 class QIcadPcbGeneralInfo : public QIcadAbstractNodeWrapper
411 class QIcadPcbGeneralInfo : public QIcadAbstractNodeWrapper
@@ -273,19 +441,31 public:
273 QList<QIcadPcbLine*> lines;
441 QList<QIcadPcbLine*> lines;
274 QList<QIcadPcbSegment*> segments;
442 QList<QIcadPcbSegment*> segments;
275 QList<QIcadPcbVia*> vias;
443 QList<QIcadPcbVia*> vias;
444 QList<QIcadPcbArc*> arcs;
445 QList<QIcadPcbCircle*> circles;
446 QList<QIcadPcbText*> texts;
447 QList<QIcadPcbZone*> zones;
276 void setNode(QIlib::AbstractNode* node);
448 void setNode(QIlib::AbstractNode* node);
277 void clrNets();
449 void clrNets();
278 void apendNet(QIlib::AbstractNode* node);
450 void apendNet(QIlib::AbstractNode* node);
279 void setModules(QIlib::AbstractNode* node);
451 void clrModules();
280 void apendModules(QIlib::AbstractNode* node);
452 void apendModule(QIlib::AbstractNode* node);
281 void setDimensions(QIlib::AbstractNode* node);
453 void clrDimensions();
282 void apendDimensions(QIlib::AbstractNode* node);
454 void apendDimension(QIlib::AbstractNode* node);
283 void setLines(QIlib::AbstractNode* node);
455 void apendLine(QIlib::AbstractNode* node);
284 void apendLines(QIlib::AbstractNode* node);
456 void clrLines();
285 void setSegments(QIlib::AbstractNode* node);
457 void clrSegments();
286 void apendSegments(QIlib::AbstractNode* node);
458 void apendSegment(QIlib::AbstractNode* node);
287 void setVias(QIlib::AbstractNode* node);
459 void clrVias();
288 void apendVias(QIlib::AbstractNode* node);
460 void apendVia(QIlib::AbstractNode* node);
461 void clrArcs();
462 void apendArc(QIlib::AbstractNode* node);
463 void clrCircles();
464 void apendCircle(QIlib::AbstractNode* node);
465 void clrTexts();
466 void apendText(QIlib::AbstractNode* node);
467 void clrZones();
468 void apendZone(QIlib::AbstractNode* node);
289 };
469 };
290
470
291 class QIcadPcb : private lispLike_Driver
471 class QIcadPcb : private lispLike_Driver
@@ -19,7 +19,9 LIBS += -L../../bin -lQIlib
19 FILESTOCOPY.files += \
19 FILESTOCOPY.files += \
20 $${PWD}/../testFiles/netlist1.net \
20 $${PWD}/../testFiles/netlist1.net \
21 $${PWD}/../testFiles/netlist2.net \
21 $${PWD}/../testFiles/netlist2.net \
22 $${PWD}/../testFiles/pcb1.kicad_pcb
22 $${PWD}/../testFiles/pcb1.kicad_pcb\
23 $${PWD}/../testFiles/pcb2.kicad_pcb\
24 $${PWD}/../testFiles/pcb3.kicad_pcb
23
25
24 FILESTOCOPY.path = $${DESTDIR}
26 FILESTOCOPY.path = $${DESTDIR}
25
27
@@ -3,7 +3,8
3 TEMPLATE = subdirs
3 TEMPLATE = subdirs
4 CONFIG += ordered release
4 CONFIG += ordered release
5
5
6 SUBDIRS += dumpLispLikeFiles
6 SUBDIRS += dumpLispLikeFiles \
7 PCBView
7
8
8
9
9
10
@@ -12,7 +13,8 OTHER_FILES += \
12 testFiles/netlist1.net \
13 testFiles/netlist1.net \
13 testFiles/netlist2.net \
14 testFiles/netlist2.net \
14 testFiles/pcb1.kicad_pcb \
15 testFiles/pcb1.kicad_pcb \
15 testFiles/pcb2.kicad_pcb
16 testFiles/pcb2.kicad_pcb \
17 testFiles/pcb3.kicad_pcb
16
18
17
19
18
20
General Comments 0
You need to be logged in to leave comments. Login now