Question

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
  • FreeCAD (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?

Was it helpful?

Solution

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.

OTHER TIPS

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

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.

CQParts is a really important part of what makes cadquery useful. It is an analogue of procedure so you design one wheel etc.

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)

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' )
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top