rhinoceros - Módulo Python para CAD paramétrico
rhinoceros 2016 (6)
Estoy buscando un modulo CAD para python. Esto es lo que he encontrado, corríjame si me equivoco:
- PythonCAD :
- Tipos de archivos: DWG, DXF, SVG
- Orientado: clic en una ventana.
- Última actualización: 2012-06-15
- documentado: pobre y sucio
- PythonOCC :
- Tipos de archivos: STEP, IGES, STL (importar / exportar)
- orientado: scripts
- última actualización: 2013-01-12
- documentado: bueno y claro
- La instalación es un dolor
- Free-CAD (envoltura de pitón)
- tipos de archivo: ?
- orientado: haga clic en una ventana y las secuencias de comandos de Python se pueden importar desde Python
- Último mantenimiento: enero 2013
- documentado: muy bien
Bueno, parece que los enlaces de python para FreeCad son los mejores, pero ¿hay otras cosas por ahí?
Encontré que Freecad es la mejor solución. Los enlaces de python le permiten diseñar piezas de una manera integral.
myShape = Part.makeBox(2,2,2)
myShape.translate(Base.Vector(2,0,0))
Desde geometrías simples puedes usar operaciones booleanas:
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)
El único punto negativo es la instalación con mac os, no pude compilarlo en snow leaopard (porque hay demasiadas dependencias en bibliotecas no sustentadas).
Pero Pythonocc tiene el mismo problema y lo que no me gusta es la documentación mínima y el synthax, que es demasiado opencascade y no demasiado pitón.
PythonOCC es probablemente la característica más completa. Aquí hay algunos más:
CADDD - usa PythonOCC, tiene GUI en Qt.
NURBS - Módulo Python para trabajar con NURBS.
lolcad - se ve muy bien pero no se actualizó hace bastante tiempo.
Y, por supuesto, puedes intentar usar Blender, que tiene un intérprete de Python incorporado y hay complementos para la arquitectura y el modelado de precisión (como este )
tener una vista en Salome . El código se ve así:
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'' )
occmodel es una pequeña biblioteca independiente que proporciona un acceso de alto nivel al kernel de modelado de OpenCASCADE.
Pascale es una nueva biblioteca profesional de Python para CAD paramétrico. La biblioteca incluye un IDE y un visor integrados, y hay una versión de prueba gratuita y limitada de 90 días disponible que se ejecuta en la nube. Hay bastante buena documentación con varios ejemplos disponibles.
Aquí hay algunos ejemplos de código de una placa con un agujero, creado en su centro:
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)
Revelación completa: soy un desarrollador para Pascale.
CADquery es un complemento actualmente para FreeCad que he usado y funcionó mejor que las secuencias de comandos OpenScad en Python. Los desarrolladores actualmente se están moviendo de FreeCad a Python OCC para la versión 2, pero actualmente me estoy conectando con V1.