marmni / freecad-pcb Goto Github PK
View Code? Open in Web Editor NEWFreeCAD-PCB
FreeCAD-PCB
Sorry, but I didn't see any description of what this module can do ?? what is it's purpose ?
In simple terms the setstate function that has worked fine in Python up to 3.10.x nolonger works in 3.11.x and above therefore the core code of FreeCAD had to be updated see http://github.com/FreeCAD/FreeCAD/commit/fbe2fef
Example error taken from Sheetmetal Wb but applies to many parts of this workbench:
File "/usr/lib/python3.11/json/encoder.py", line 180, in default
raise TypeError(f'Object of type {o.__class__.__name__} '
<class 'TypeError'>: Object of type FeaturePython is not JSON serializable
17:04:02 PropertyPythonObject::toString(): failed for <class 'SheetMetalCmd.SMViewProviderFlat'>
17:04:02 pyException: Traceback (most recent call last):
File "/usr/lib/python3.11/json/__init__.py", line 231, in dumps
return _default_encoder.encode(obj)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/json/encoder.py", line 200, in encode
chunks = self.iterencode(o, _one_shot=True)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.11/json/encoder.py", line 258, in iterencode
return _iterencode(o, 0)
^^^^^^^^^^^^^^^^^
The lines in question:
/home/username/.local/share/FreeCAD/Mod/pcb/sqlalchemy/sql/util.py:957: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/sqlalchemy/sql/elements.py:1319: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/sqlalchemy/sql/elements.py:3407: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/sqlalchemy/sql/selectable.py:1887: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/sqlalchemy/sql/schema.py:4240: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/sqlalchemy/sql/base.py:614: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/sqlalchemy/orm/util.py:665: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/sqlalchemy/orm/state.py:472: def __setstate__(self, state_dict):
/home/username/.local/share/FreeCAD/Mod/pcb/sqlalchemy/orm/collections.py:760: def __setstate__(self, d):
/home/username/.local/share/FreeCAD/Mod/pcb/sqlalchemy/orm/events.py:507: :class:`.InstanceState.__setstate__`, containing the state
/home/username/.local/share/FreeCAD/Mod/pcb/sqlalchemy/orm/strategy_options.py:514: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/sqlalchemy/orm/strategy_options.py:653: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/sqlalchemy/util/_collections.py:205: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/sqlalchemy/util/_collections.py:339: # dict subclass (seems to ignore __setstate__?)
/home/username/.local/share/FreeCAD/Mod/pcb/sqlalchemy/util/langhelpers.py:643: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/sqlalchemy/util/langhelpers.py:745: "__setstate__",
/home/username/.local/share/FreeCAD/Mod/pcb/sqlalchemy/ext/mutable.py:187:(and also restore them on __setstate__)::
/home/username/.local/share/FreeCAD/Mod/pcb/sqlalchemy/ext/mutable.py:195: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/sqlalchemy/ext/mutable.py:340:Below we define both a ``__getstate__`` and a ``__setstate__`` that package up
/home/username/.local/share/FreeCAD/Mod/pcb/sqlalchemy/ext/mutable.py:349: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/sqlalchemy/ext/mutable.py:745: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/sqlalchemy/ext/mutable.py:779: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/sqlalchemy/ext/mutable.py:942: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/sqlalchemy/ext/associationproxy.py:937: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/sqlalchemy/ext/associationproxy.py:987: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/sqlalchemy/engine/result.py:27: # __setstate__.
/home/username/.local/share/FreeCAD/Mod/pcb/sqlalchemy/engine/result.py:41: obj.__setstate__(state)
/home/username/.local/share/FreeCAD/Mod/pcb/sqlalchemy/engine/result.py:143: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/sqlalchemy/engine/result.py:732: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/sqlalchemy/cextension/resultproxy.c:54: tmp = PyObject_CallMethod((PyObject *)obj, "__setstate__", "O", state);
/home/username/.local/share/FreeCAD/Mod/pcb/sqlalchemy/cextension/resultproxy.c:64: "__setstate__ for BaseRowProxy subclasses must set values "
/home/username/.local/share/FreeCAD/Mod/pcb/PCBboard.py:128: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/PCBboard.py:268: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/PCBobjects.py:137: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/PCBobjects.py:299: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/PCBobjects.py:387: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/PCBobjects.py:664: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/PCBobjects.py:1458: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/PCBobjects.py:1536: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/PCBobjects.py:1598: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/command/PCBexplode.py:542: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/command/PCBexplode.py:612: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/command/PCBannotations.py:440: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/command/PCBannotations.py:864: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/command/PCBassembly.py:413: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/command/PCBassembly.py:439: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/command/PCBassembly.py:555: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/command/PCBassembly.py:603: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/command/PCBglue.py:209: def __setstate__(self, state):
/home/username/.local/share/FreeCAD/Mod/pcb/command/PCBglue.py:345: def __setstate__(self, state):
We cannot use this workbench with realthunder's LinkDaily/LinkStage editions. Upon loading, there's an invalid error that says:
PCB Workbench: Error. Incompatible FreeCAD version. Supported FreeCAD versions: 0.18-0.19.
This has been going on for over a year. realthunder's branch is mostly kept up-to-date with FreeCAD master, which is currently 0.20. But this was not working even with older 0.19 mainline in FreeCAD master.
This is the only Workbench that prevents itself from loading with an erroneous check for a version.
Suggestions:
I had hoped to use this workbench / program to input *.BRD's into FreeCAD, view them and export as *.STEP files. I had to upgrade FreeCAD to V0.19 before the Add-in Manager would show available workbenches. I then installed the PCB workbench. But the first time I tried to open an Eagle *.BRD, I received the following error messages. Is there anything I can do to fix this? Please keep it simple as I have ZERO programming experience.
14:33:41 Traceback (most recent call last):
File "", line 1, in
File "C:\Users\jimc\AppData\Roaming\FreeCAD\Mod\pcb\PCBbrd.py", line 40, in
from PCBconf import *
File "C:\Users\jimc\AppData\Roaming\FreeCAD\Mod\pcb\PCBconf.py", line 31, in
from PCBfunctions import getFromSettings_Color_1, getFromSettings_Color
File "C:\Users\jimc\AppData\Roaming\FreeCAD\Mod\pcb\PCBfunctions.py", line 43, in
from PCBdataBase import dataBase
File "C:\Users\jimc\AppData\Roaming\FreeCAD\Mod\pcb\PCBdataBase.py", line 36, in
from sqlalchemy.ext.declarative import declarative_base
File "C:\Users\jimc\AppData\Roaming\FreeCAD\Mod\pcb\sqlalchemy_init_.py", line 9, in
from .sql import (
File "C:\Users\jimc\AppData\Roaming\FreeCAD\Mod\pcb\sqlalchemy\sql_init_.py", line 8, in
from .expression import (
File "C:\Users\jimc\AppData\Roaming\FreeCAD\Mod\pcb\sqlalchemy\sql\expression.py", line 33, in
from .visitors import Visitable
File "C:\Users\jimc\AppData\Roaming\FreeCAD\Mod\pcb\sqlalchemy\sql\visitors.py", line 28, in
from .. import util
File "C:\Users\jimc\AppData\Roaming\FreeCAD\Mod\pcb\sqlalchemy\util_init_.py", line 8, in
from .compat import callable, cmp, reduce,
File "C:\Users\jimc\AppData\Roaming\FreeCAD\Mod\pcb\sqlalchemy\util\compat.py", line 172, in
time_func = time.clock
<class 'AttributeError'>: module 'time' has no attribute 'clock'
Hi,
maybe I'm stupid, but I cannot creat a new PCB with freecad 18.4 and last BCB-Adon.
Is there any tutorila or Howto?
I need at frist an PCB-Layot for a HF-Design that ist not possile to be done in KiCAD.
Best regards
Frank
OS: Linux OpenSUSE 15.2 64bit
FreeCAD version 0.19
FreeCAD-PCB installed from Add-on Manager
I try to load PCB file and I get SEGV signal. Why?
Before upgrade to 15.2 I had FreeCAD 0.16 perfectly working.
Thank you in advance for any help.
Program received signal SIGSEGV, Segmentation fault.
#0 /lib64/libc.so.6(+0x394a0) [0x7f3adb8124a0]
#1 /usr/lib64/libexpat.so.1(XML_SetHashSalt+0x1b) [0x7f3aca4e846b]
#2 /usr/lib64/python3.6/lib-dynload/pyexpat.cpython-36m-x86_64-linux-gnu.so(+0x472f) [0x7f3a212ee72f]
#3 /usr/lib64/libpython3.6m.so.1.0(_PyCFunction_FastCallDict+0x90) [0x7f3adda7ab00]
#4 /usr/lib64/libpython3.6m.so.1.0(_PyCFunction_FastCallKeywords+0x50) [0x7f3adda7aec0]
#5 /usr/lib64/libpython3.6m.so.1.0(+0x12a582) [0x7f3addaec582]
#6 /usr/lib64/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x262e) [0x7f3addaef29e]
#7 /usr/lib64/libpython3.6m.so.1.0(+0x12a18f) [0x7f3addaec18f]
#8 /usr/lib64/libpython3.6m.so.1.0(+0x12a465) [0x7f3addaec465]
#9 /usr/lib64/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x3d75) [0x7f3addaf09e5]
#10 /usr/lib64/libpython3.6m.so.1.0(+0x12a18f) [0x7f3addaec18f]
#11 /usr/lib64/libpython3.6m.so.1.0(+0x12a465) [0x7f3addaec465]
#12 /usr/lib64/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x3d75) [0x7f3addaf09e5]
#13 /usr/lib64/libpython3.6m.so.1.0(+0x12a18f) [0x7f3addaec18f]
#14 /usr/lib64/libpython3.6m.so.1.0(+0x12a465) [0x7f3addaec465]
#15 /usr/lib64/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x3d75) [0x7f3addaf09e5]
#16 /usr/lib64/libpython3.6m.so.1.0(+0x129fe6) [0x7f3addaebfe6]
#17 /usr/lib64/libpython3.6m.so.1.0(+0x12a25f) [0x7f3addaec25f]
#18 /usr/lib64/libpython3.6m.so.1.0(+0x12a465) [0x7f3addaec465]
#19 /usr/lib64/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x3d75) [0x7f3addaf09e5]
#20 /usr/lib64/libpython3.6m.so.1.0(+0x129fe6) [0x7f3addaebfe6]
#21 /usr/lib64/libpython3.6m.so.1.0(+0x12a25f) [0x7f3addaec25f]
#22 /usr/lib64/libpython3.6m.so.1.0(+0x12a465) [0x7f3addaec465]
#23 /usr/lib64/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x3d75) [0x7f3addaf09e5]
#24 /usr/lib64/libpython3.6m.so.1.0(+0x12a18f) [0x7f3addaec18f]
#25 /usr/lib64/libpython3.6m.so.1.0(+0x12a465) [0x7f3addaec465]
#26 /usr/lib64/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x3d75) [0x7f3addaf09e5]
#27 /usr/lib64/libpython3.6m.so.1.0(+0x12a18f) [0x7f3addaec18f]
#28 /usr/lib64/libpython3.6m.so.1.0(+0x12a465) [0x7f3addaec465]
#29 /usr/lib64/libpython3.6m.so.1.0(_PyEval_EvalFrameDefault+0x3d75) [0x7f3addaf09e5]
#30 /usr/lib64/libpython3.6m.so.1.0(+0x129fe6) [0x7f3addaebfe6]
#31 /usr/lib64/libpython3.6m.so.1.0(PyEval_EvalCode+0x23) [0x7f3addaec123]
#32 /usr/lib64/libpython3.6m.so.1.0(+0x153a70) [0x7f3addb15a70]
#33 /usr/lib64/libpython3.6m.so.1.0(PyRun_StringFlags+0x75) [0x7f3addb17555]
#34 0x7f3addf776d4 in Base::InterpreterSingleton::runString[abi:cxx11](char const*) from /usr/lib64/FreeCAD/lib/libFreeCADBase.so+0x64
#35 0x7f3adee698bc in Gui::Command::_runCommand(char const*, int, Gui::Command::DoCmd_Type, char const*) from /usr/lib64/FreeCAD/lib/libFreeCADGui.so+0x8c
#36 0x7f3adee69a8f in Gui::Command::_doCommand(char const*, int, Gui::Command::DoCmd_Type, char const*, ...) from /usr/lib64/FreeCAD/lib/libFreeCADGui.so+0xff
#37 0x7f3aded985ec in Gui::Application::open(char const*, char const*) from /usr/lib64/FreeCAD/lib/libFreeCADGui.so+0x18c
#38 0x7f3adee7581c in StdCmdOpen::activated(int) from /usr/lib64/FreeCAD/lib/libFreeCADGui.so+0x55c
#39 0x7f3adee6d896 in Gui::Command::invoke(int, Gui::Command::TriggerSource) from /usr/lib64/FreeCAD/lib/libFreeCADGui.so+0x2f6
#40 0x7f3adc45fe35 in QMetaObject::activate(QObject*, int, int, void**) from /usr/lib64/libQt5Core.so.5+0x835
#41 0x7f3add2af822 in QAction::triggered(bool) from /usr/lib64/libQt5Widgets.so.5+0x42
#42 0x7f3add2b1e3c in QAction::activate(QAction::ActionEvent) from /usr/lib64/libQt5Widgets.so.5+0xcc
#43 /usr/lib64/libQt5Widgets.so.5(+0x30e03c) [0x7f3add42803c]
#44 /usr/lib64/libQt5Widgets.so.5(+0x31563b) [0x7f3add42f63b]
#45 0x7f3add4304b3 in QMenu::mouseReleaseEvent(QMouseEvent*) from /usr/lib64/libQt5Widgets.so.5+0x1b3
#46 0x7f3add2f6238 in QWidget::event(QEvent*) from /usr/lib64/libQt5Widgets.so.5+0x1c8
#47 0x7f3add43277b in QMenu::event(QEvent*) from /usr/lib64/libQt5Widgets.so.5+0xbb
#48 0x7f3add2b5f2c in QApplicationPrivate::notify_helper(QObject*, QEvent*) from /usr/lib64/libQt5Widgets.so.5+0x9c
#49 0x7f3add2be418 in QApplication::notify(QObject*, QEvent*) from /usr/lib64/libQt5Widgets.so.5+0x11c8
#50 0x7f3adee36978 in Gui::GUIApplication::notify(QObject*, QEvent*) from /usr/lib64/FreeCAD/lib/libFreeCADGui.so+0x88
#51 0x7f3adc430328 in QCoreApplication::notifyInternal2(QObject*, QEvent*) from /usr/lib64/libQt5Core.so.5+0x118
#52 0x7f3add2bca0f in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) from /usr/lib64/libQt5Widgets.so.5+0x1df
#53 /usr/lib64/libQt5Widgets.so.5(+0x1f75f4) [0x7f3add3115f4]
#54 /usr/lib64/libQt5Widgets.so.5(+0x1f9d6a) [0x7f3add313d6a]
#55 0x7f3add2b5f2c in QApplicationPrivate::notify_helper(QObject*, QEvent*) from /usr/lib64/libQt5Widgets.so.5+0x9c
#56 0x7f3add2bd540 in QApplication::notify(QObject*, QEvent*) from /usr/lib64/libQt5Widgets.so.5+0x2f0
#57 0x7f3adee36978 in Gui::GUIApplication::notify(QObject*, QEvent*) from /usr/lib64/FreeCAD/lib/libFreeCADGui.so+0x88
#58 0x7f3adc430328 in QCoreApplication::notifyInternal2(QObject*, QEvent*) from /usr/lib64/libQt5Core.so.5+0x118
#59 0x7f3adca37465 in QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) from /usr/lib64/libQt5Gui.so.5+0x745
#60 0x7f3adca387b5 in QGuiApplicationPrivate::processWindowSystemEvent(QWindowSystemInterfacePrivate::WindowSystemEvent*) from /usr/lib64/libQt5Gui.so.5+0x135
#61 0x7f3adca1223b in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) from /usr/lib64/libQt5Gui.so.5+0xbb
#62 /usr/lib64/libQt5XcbQpa.so.5(+0x721da) [0x7f3acd3581da]
#63 /usr/lib64/libglib-2.0.so.0(g_main_context_dispatch+0x154) [0x7f3ad6848624]
#64 /usr/lib64/libglib-2.0.so.0(+0x529c0) [0x7f3ad68489c0]
#65 /usr/lib64/libglib-2.0.so.0(g_main_context_iteration+0x2c) [0x7f3ad6848a4c]
#66 0x7f3adc48d3af in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) from /usr/lib64/libQt5Core.so.5+0x5f
#67 0x7f3adc42e57a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) from /usr/lib64/libQt5Core.so.5+0x13a
#68 0x7f3adc437780 in QCoreApplication::exec() from /usr/lib64/libQt5Core.so.5+0x90
#69 0x7f3adeda3ef1 in Gui::Application::runApplication() from /usr/lib64/FreeCAD/lib/libFreeCADGui.so+0x15f1
#70 /usr/lib64/FreeCAD/bin/FreeCAD(+0x38a4) [0x55ebf9a618a4]
#71 /lib64/libc.so.6(__libc_start_main+0xea) [0x7f3adb7fd34a]
#72 /usr/lib64/FreeCAD/bin/FreeCAD(+0x45aa) [0x55ebf9a625aa]
When I try to just upload a .brd file, the following error pops up:
no element found: line 1, column 11
Traceback (most recent call last):
File "", line 1, in
File "C:\Users\Iklon\AppData\Roaming\FreeCAD\Mod\pcb\PCBbrd.py", line 72, in open
importBRD(filename, wersjaFormatu[0])
File "C:\Users\Iklon\AppData\Roaming\FreeCAD\Mod\pcb\PCBbrd.py", line 241, in importBRD
plytka = plytkaPCB.generate(doc, groupBRD, filename)
File "C:\Users\Iklon\AppData\Roaming\FreeCAD\Mod\pcb\formats\eagle.py", line 422, in generate
board = self.getPCB()
File "C:\Users\Iklon\AppData\Roaming\FreeCAD\Mod\pcb\formats\eagle.py", line 374, in getPCB
for j in self.getWires(self.libraries[i['library']][i['package']], 20, [i['x'], i['y']]):
<type 'exceptions.KeyError'>: ('rcl" library_urn="urn:adsk.eagle:library:334',)
Cannot open pcb file
19:33:38 Traceback (most recent call last):
File "", line 1, in
File "C:\Users\user\AppData\Roaming\FreeCAD\Mod\pcb\PCBbrd.py", line 63, in open
wersjaFormatu = wersjaFormatuF(filename)
File "C:\Users\user\AppData\Roaming\FreeCAD\Mod\pcb\PCBbrd.py", line 188, in wersjaFormatuF
projektBRD = builtins.open(filename, "r").read()
File "C:\Program Files\FreeCAD 0.19\bin\lib\encodings\cp1251.py", line 23, in decode
return codecs.charmap_decode(input,self.errors,decoding_table)[0]
<class 'UnicodeDecodeError'>: 'charmap' codec can't decode byte 0x98 in position 3066: character maps to
OS: Windows 10 Version 2009
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.19.24267 +148 (Git)
Build type: Release
Branch: Branch_0.19.4
Hash: 476ecf091941bead59b14e44afa6064d5a66afa3
Python version: 3.8.6+
Qt version: 5.15.2
Coin version: 4.0.1
OCC version: 7.5.3
Locale: English/United States (en_US)
The same error with 0.20.2
When using FreeCAD 0.18 build 16110 and FC_0.18 PY_3.6 the board edges are not importin from KiCAD.
When I try to open a pcb (no matter which one)
I get the following error:
Traceback (most recent call last): File "<string>", line 1, in <module> File "/Applications/FreeCAD.app/Contents/Resources/Mod/PCB/PCBbrd.py", line 70, in open importBRD(filename, wersjaFormatu[0]) File "/Applications/FreeCAD.app/Contents/Resources/Mod/PCB/PCBbrd.py", line 230, in importBRD plytkaPCB = mainPCB(wersjaFormatu, filename) File "/Applications/FreeCAD.app/Contents/Resources/Mod/PCB/formats/PCBmainForms.py", line 94, in __init__ self.wersjaFormatu = KiCadv4_PCB(filename, self) File "/Applications/FreeCAD.app/Contents/Resources/Mod/PCB/formats/kicad_v4.py", line 101, in __init__ KiCadv3_PCB.__init__(self, filename, parent) File "/Applications/FreeCAD.app/Contents/Resources/Mod/PCB/formats/kicad_v3.py", line 95, in __init__ self.dialogMAIN = dialogMAIN(self.fileName) File "/Applications/FreeCAD.app/Contents/Resources/Mod/PCB/formats/kicad_v3.py", line 57, in __init__ self.layersNames = self.getLayersNames() File "/Applications/FreeCAD.app/Contents/Resources/Mod/PCB/formats/kicad_v3.py", line 81, in getLayersNames dane[106] = {"name": softLayers[self.databaseType][106]["name"], "color": softLayers[self.databaseType][106]["color"]} <class 'KeyError'>: ('name',)
And I have to clue what it could be. Do someone knows where this comes from?
I'm working on OSX with this versions:
I am planning to use Free CAD software for importing PCB files. My electrical CAD team uses Allegro software for rooting and placement. My doubt here is after installing PCB workbench, can I import files to Free CAD software and convert them to step files? My electrical CAD team can provide board files in IDF(emn, emp) and allegro .brd file format.
Hello,
Not sure that it is a bug but I found no way to hide in the model the display of NAME and VALUE of parts from the settings in the database with the last version of FreeCAD-PCB. The "display" setting set to False change nothing. The behaviour is the same with FC0.19 or 0.20.2 either on Windows or Linux
here below some screenshots
Thank in advance for your answer and also for this great workbench extension!!
Best regards
I came across this addon trying to use a CNC to make a PCB design but I'm having trouble importing a PCB from KiCAD to get started.
The screenshot above shows the PCB in KiCAD's 3D viewer. However when I import into FreeCAD all I get are the traces. No pads, no holes, no board:
I tried various combinations of import options, first select all then picking just layers I want, but nothing seems to help. I'm running KiCAD 6.0.9 and FreeCAD 0.20.2. KiCAD PCB file attached below in case there's something wrong with that:
Midfield Box V2.zip
Hello all,
Thanks for the FC0.18 branch unfortunately it seems that the database conversion failed (according to some post on sourceforge, I suppose there is one...) for me.
The created database.db file is empty. If I create a new component, all it's OK.
No specific error message in the report windows.
I tried "FreeCAD-PCB_database" without success.
Best regards,
OS: Windows 10
Word size of OS: 64-bit
Word size of FreeCAD: 64-bit
Version: 0.18.4 (GitTag)
Build type: Release
Branch: releases/FreeCAD-0-18
Hash: 980bf9060e28555fecd9e3462f68ca74007b70f8
Python version: 3.6.6
Qt version: 5.6.2
Coin version: 4.0.0a
OCC version: 7.3.0
Locale: French/France (fr_FR)
Hi
I think great idea for EDA software to 'outsource' 3D part to proper CAD tools. Even though there's rudimentary support for 3D viewing within Horizon EDA, have you considered supporting that program?
In an Eagle design, I can create global attributes
Then on the PCB, I can place some text, perhaps in the top document layer, that references the attribute.
This is basically the same as the Name and Value on a component - other than where in the .brd structure it is.
FreeCAD-PCB does not dereference the attribute, so the silk screen on the PCB looks like this:
In the .brd XML, here's the global attributes definition:
...
</libraries>
<attributes>
<attribute name="PRODUCT" value="Power Supply"/>
<attribute name="VERSION" value="0.1"/>
</attributes>
<variantdefs>
...
And actually upward in the file is the reference to these attributes:
...
<board>
<plain>
<wire x1="0" y1="0" x2="127" y2="0" width="0" layer="20"/>
<wire x1="127" y1="0" x2="127" y2="76" width="0" layer="20"/>
<wire x1="127" y1="76" x2="0" y2="76" width="0" layer="20"/>
<wire x1="0" y1="76" x2="0" y2="0" width="0" layer="20"/>
<hole x="5.6" y="5.6" drill="3.8"/>
<hole x="5.6" y="70.4" drill="3.8"/>
<hole x="121.4" y="70.4" drill="3.8"/>
<hole x="121.4" y="5.6" drill="3.8"/>
<text x="16.8" y="6.6" size="1.778" layer="21">>PRODUCT</text>
<text x="16.7" y="3" size="1.778" layer="21">>VERSION</text>
</plain>
<libraries>
...
Is this an easy enhancement?
I am competent in software, but have never authored Python, so I find it esaier to read than to write. I was browsing into eagle.py, and in my version, starting at line 149:
def getPCB(self, borderObject):
dane = self.getSection('plain')
for i in self.getWires(dane, 20):
It looks like it could use an iterator like:
for i in self.getTexts(dane, 20):
But from here I'm a bit out of my area of expertise, and I don't see a method for debugging other than FreeCAD.Console.PrintWarning, so I think it will take me some time to stumble up against a few dead-ends before I find a path forward.
Hi, I wanted to test the FreeCAD-PCB-FC_0.18 version, but the message comes immediately:
`Traceback (most recent call last):
File "", line 120, in InitApplications
File "", line 176, in
ImportError: No module named PCBcheckFreeCADVersion
During initialization the error No module named PCBcheckFreeCADVersion occurred in F:\FreeCAD18\Mod\PCB\InitGui.py
Please look into the log file for further information
global name 'PCBcheckFreeCADVersion' is not defined
Traceback (most recent call last):
File "", line 115, in Initialize`
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.