Модуль Python для параметрического САПР
Я ищу CAD-модуль для python. Вот что я нашел, поправьте меня, если я ошибаюсь:
PythonCAD :
- типы файлов: DWG, DXF, SVG
- ориентированный: щелчок в окне
- последнее сохранение: 2012-06-15
- документально: бедный и грязный
PythonOCC :
- типы файлов: STEP, IGES, STL (импорт / экспорт)
- ориентированные: скрипты
- последнее сохранение: 2013-01-12
- документально: хорошо и ясно
- Установка-это такая боль
Free-CAD (Python wrapping)
- типы файлов:?
- ориентированный: щелкните в окне и Python scripting импортируется из python
- последнее обслуживание: январь 2013
- документировано: очень хорошо
Ну, похоже, что привязки python для FreeCad являются лучшими, но есть ли другие вещи?
4 ответов:
Я обнаружил, что Freecad-это лучшее решение. Привязки python позволяют создавать детали всеобъемлющим образом.
myShape = Part.makeBox(2,2,2) myShape.translate(Base.Vector(2,0,0))Из простых геометрий можно использовать булевы операции:
cylinder1 = Part.makeCylinder(3,10,Base.Vector(0,0,0),Base.Vector(1,0,0)) cylinder2 = Part.makeCylinder(3,10,Base.Vector(5,0,-5),Base.Vector(0,0,1)) common = cylinder1.common(cylinder2)Единственным недостатком является установка с mac os, я не смог скомпилировать ее на snow leaopard (потому что слишком много зависимостей от неустойчивых библиотек).
Но у pythonocc та же проблема, и мне не нравится минимальная документация и synthax, который слишком много opencascade вроде и не сильно питонистичен.
Occmodel - это небольшая автономная библиотека, предоставляющая высокоуровневый доступ к ядру моделирования OpenCASCADE.
PythonOCC, вероятно, является наиболее полной функцией. Вот еще несколько:
CADDD - использует PythonOCC, имеет графический интерфейс в Qt.
NURBS - модуль Python для работы с NURBS.
Lolcad - выглядит очень хорошо, но он не обновлялся в течение довольно долгого времени.
И конечно, вы можете попробовать использовать Blender, который имеет встроенный интерпретатор Python и есть плагины для архитектуры и точного моделирования (например, this)
Есть вид на Саломею. Код выглядит следующим образом:
import sys import salome salome.salome_init() theStudy = salome.myStudy import salome_notebook notebook = salome_notebook.NoteBook(theStudy) sys.path.insert( 0, r'/tmp') ### ### GEOM component ### import GEOM from salome.geom import geomBuilder import math import SALOMEDS geompy = geomBuilder.New(theStudy) O = geompy.MakeVertex(0, 0, 0) OX = geompy.MakeVectorDXDYDZ(1, 0, 0) OY = geompy.MakeVectorDXDYDZ(0, 1, 0) OZ = geompy.MakeVectorDXDYDZ(0, 0, 1) Vertex_1 = geompy.MakeVertex(0, 0, 0) Vertex_2 = geompy.MakeVertex(0, 2, 0) Vertex_3 = geompy.MakeVertex(2, 2, 0) Line_1 = geompy.MakeLineTwoPnt(Vertex_2, Vertex_3) Line_1_vertex_2 = geompy.GetSubShape(Line_1, [2]) Line_1_vertex_3 = geompy.GetSubShape(Line_1, [3]) Curve_1 = geompy.MakeInterpol([Line_1_vertex_2, Line_1_vertex_3, Vertex_1], True, False) geompy.addToStudy( O, 'O' ) geompy.addToStudy( OX, 'OX' ) geompy.addToStudy( OY, 'OY' ) geompy.addToStudy( OZ, 'OZ' ) geompy.addToStudy( Vertex_1, 'Vertex_1' ) geompy.addToStudy( Vertex_2, 'Vertex_2' ) geompy.addToStudy( Vertex_3, 'Vertex_3' ) geompy.addToStudy( Line_1, 'Line_1' ) geompy.addToStudyInFather( Line_1, Line_1_vertex_2, 'Line_1:vertex_2' ) geompy.addToStudyInFather( Line_1, Line_1_vertex_3, 'Line_1:vertex_3' ) geompy.addToStudy( Curve_1, 'Curve_1' )
Comments