Python module for parametric CAD

筅森魡賤 提交于 2019-12-31 08:30:19

问题


I am looking for a CAD module for python. This is what i've found, correct me if I'm wrong:

  • PythonCAD:
    • file types: DWG,DXF,SVG
    • oriented: click in a window
    • last maintained: 2012-06-15
    • documented: poor and dirty
  • PythonOCC:
    • file types: STEP, IGES, STL (import/export)
    • oriented: scripts
    • last maintained: 2013-01-12
    • documented: good and clear
    • Installation is such a pain
  • Free-CAD (python wrapping)
    • file types: ?
    • oriented: click in a window and python scripting importable from python
    • last maintained: jan 2013
    • documented: very well

Well, it seems the python bindings for FreeCad is the best but are there other things out there?


回答1:


I found that Freecad is the best solution. The python bindings lets you design parts in a comprehensive way.

myShape = Part.makeBox(2,2,2)
myShape.translate(Base.Vector(2,0,0))

From simple geometries you can use boolean operations:

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)

The only downpoint is the installation with mac os, I could not compile it on snow leaopard (because too much dependencies on unsustained libraries).

But pythonocc has the same problem and what i don't like is the minimal documentation and the synthax which is too much opencascade like and not to much pythonistic.




回答2:


occmodel is a small self-contained library which gives a high level access to the OpenCASCADE modelling kernel.




回答3:


PythonOCC is probably the most feature complete. Here are some more:

CADDD - uses PythonOCC, has GUI in Qt.

NURBS - Python module for working with NURBS.

lolcad - looks very good but it was not updated for quite some time.

And of cource, you can try to use Blender, which has build-in Python interpreter and there are plugins for architecture and precision modeling (like this)




回答4:


have a view at Salome. The code looks like 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' )



回答5:


CADquery is a plug currently for FreeCad that I have used and worked better than scripting OpenScad in Python. The developers are currently moving from FreeCad to Python OCC for Version 2 but I am currently plugging away with V1.



来源:https://stackoverflow.com/questions/14519057/python-module-for-parametric-cad

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!