Запуск модуля FreeCAD Drawing_dimensioning или TechDrawGui из скрипта Python - PullRequest
0 голосов
/ 16 декабря 2018

Примечание. Я не запускаю скрипт в консоли python внутри FreeCAD.Это все в скрипте Python в Docker-контейнере с установленным FreeCAD.

Я пытаюсь создать SVG-страницу страницы, созданной FreeCAD, в скрипте Python.У меня нет проблем с просмотром фигуры, но я не могу понять, как добавить размеры и сохранить их в SVG.Насколько я могу судить, есть несколько вариантов, которые можно подобрать ...

  1. Использование старого модуля рисования (и Drawing_dimensioning):

Я могу сделать SVGстраницы с видами моей фигуры, но не может добавить размеры.Модуль Drawing_dimensioning идеально подходит, если я использовал полный графический интерфейс FreeCAD.Однако я не могу использовать этот модуль из скрипта Python.Когда я импортирую его, я получаю следующую ошибку:

  File "/usr/lib/freecad/Mod/drawingDimensioning/core.py", line 184, in <module>
FreeCADGui.addCommand('dd_help', helpCommand())
AttributeError: 'module' object has no attribute 'addCommand'

Я пробовал многие из исправлений этой ошибки, но не могу найти какие-либо решения, которые работают.Это как-то связано с drawDimensioning, имеющим FreeCADGui в качестве зависимости?FreeCADGui отсутствует addCommand ()?Если вам известен другой подход, пожалуйста, прокомментируйте.

Более новый модуль TechDraw:

Насколько я могу судить, это работает (хотя с меньшим количеством функций, чем Drawing_dimensioning).НО я не могу использовать модуль TechDrawGui из командной строки.Модуль TechDrawGui необходим для сохранения страницы TechDraw в SVG.Я получаю эту ошибку, когда делаю:

  File "/app/main_process.py", line 14, in <module>
import Part, Drawing, FreeCADGui, TechDrawGui
ImportError: Cannot load Gui module in console application.

Я могу, однако, импортировать модуль FreeCADGui без каких-либо проблем.Импортирование и использование модуля TechDraw тоже выглядит нормально.

Спасибо за чтение.Если вы считаете, что у вас есть метод создания измерений на странице и сохранения в SVG всего из Python, пожалуйста, дайте мне знать!

1 Ответ

0 голосов
/ 16 декабря 2018

Да, вы правы.Во время работы FreeCAD внутри Docker-контейнера (или скомпилированного без GUI) многие функции рабочих мест, для которых требуется выполнение GUI, будут недоступны.Однако вы можете исправить их, углубившись в кодовую базу FreeCAD, создать проблему на https://www.freecadweb.org/tracker/my_view_page.php или решить вашу проблему с помощью основных функций FreeCAD.

Что касается вашей проблемы, у меня есть решение: https://gist.github.com/amrit3701/8f67c8ea06c74a64bca08a0a48560556

В приведенном выше примере создается файл SVG куба с его размерами.Для создания измерений я использовал функцию Draft.makeDimension, а для создания представления (содержимое SVG) объекта Part (т.е. куба) я использовал Drawing::FeatureViewPart объект.

Вывод файла SVG после запуска main.py вссылка выше ouput.svg

...