Модуль Python для параметрического CAD - программирование
Подтвердить что ты не робот

Модуль Python для параметрического CAD

Я ищу модуль САПР для python. Это то, что я нашел, исправьте меня, если я ошибаюсь:

  • PythonCAD:
    • типы файлов: DWG, DXF, SVG
    • ориентированный: щелкните в окне
    • Последнее обновление: 2012-06-15
    • документировано: плохое и грязное
  • PythonOCC:
    • типы файлов: STEP, IGES, STL (импорт/экспорт)
    • ориентированный: скрипты
    • Последнее обновление: 2013-01-12
    • задокументировано: хорошо и ясно
    • Установка - такая боль.
  • Free-CAD (упаковка на python)
    • типы файлов:?
    • ориентированный: щелкните в окне и скрипты python, импортируемые из python
    • Последнее обновление: jan 2013
    • задокументировано: очень хорошо

Ну, похоже, что привязки python для FreeCad являются лучшими, но есть ли другие вещи там?

4b9b3361

Ответ 1

Я обнаружил, что 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, я не смог скомпилировать его на снежном leaopard (потому что слишком много зависимостей от неустойчивых библиотек).

Но pythonocc имеет ту же проблему и что мне не нравится - это минимальная документация и синтаксис, который слишком много написан, как и не много pythonistic.

Ответ 2

occmodel - небольшая автономная библиотека, которая обеспечивает высокий уровень доступа к ядру моделирования OpenCASCADE.

Ответ 3

PythonOCC, вероятно, является самой полнофункциональной функцией. Вот еще несколько:

CADDD - использует PythonOCC, имеет графический интерфейс в Qt.

NURBS - модуль Python для работы с NURBS.

lolcad - выглядит очень хорошо, но в течение некоторого времени он не обновлялся.

И в курсе вы можете попробовать использовать Blender, у которого есть встроенный интерпретатор Python, и есть плагины для архитектуры и точного моделирования (например, this)

Ответ 4

имеют вид Salome. Код выглядит следующим образом:

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' )

Ответ 5

Pascale - это новая библиотека Python профессионального уровня для параметрических САПР. Библиотека поставляется с интегрированной IDE и программой просмотра, и в облаке доступна бесплатная ограниченная 90-дневная пробная версия. Есть довольно хорошая документация с несколькими доступными примерами.

Вот пример кода пластины с отверстием, созданным в ее центре:

import pascale
import aerion_tools

# Plate creation
length = 1
width = 2
height = .1
plate = pascale.body.Cuboid.from_bounding_box_corners(pascale.ORIGIN, (length, width, height))

# Cylinder creation at plate center
diameter = .5
center_btm = (plate.centroid.x, plate.centroid.y, 0)
center_top = (plate.centroid.x, plate.centroid.y, height)
cylinder = pascale.body.Cylinder.from_centers_radius(center_btm, center_top, diameter / 2)

# Subtract the plate from the cylinder
plate_with_hole = plate - cylinder

# Get a geometric property from the body object and print it
print 'volume: ' + str(plate_with_hole.volume)

aerion_tools.viewer.show(plate_with_hole)

Полное раскрытие: я разработчик для Pascale.