web-dev-qa-db-ja.com

Pythonパラメトリック用モジュールCAD

CAD=モジュールを探しています。これは私が見つけたものです。間違っている場合は修正してください:

  • PythonCAD
    • ファイルタイプ:DWG、DXF、SVG
    • 指向:ウィンドウ内をクリック
    • 最終更新日:2012年6月15日
    • 文書化:貧しく汚い
  • PythonOCC
    • ファイルタイプ:STEP、IGES、STL(インポート/エクスポート)
    • 指向:スクリプト
    • 最終更新日:2013-01-12
    • 文書化:明確
    • インストールはとても面倒です
  • Free-CAD(python wrapping)
    • ファイルタイプ: ?
    • 指向:ウィンドウをクリックし、pythonスクリプトをPythonからインポート可能
    • 最終更新:2013年1月
    • 文書化:非常によく

まあ、それはpython FreeCadのバインディングが最良のようですが、他に何かありますか?

20
Mermoz

Freecadが最良のソリューションであることがわかりました。 python bindingsを使用すると、包括的な方法でパーツを設計できます。

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でのインストールです。snowleaopardでコンパイルできませんでした(非持続ライブラリへの依存が多すぎるため)。

しかし、pythonoccにも同じ問題があり、私が気に入らないのは、最小限のドキュメントと、Pythonにはあまりにも多く、あまりオープンカスケードではないSynthaxです。

8
Mermoz

occmodel は、OpenCASCADEモデリングカーネルへの高レベルのアクセスを提供する小さな自己完結型ライブラリです。

5
Volodimir Kopey

PythonOCCは、おそらく最も完全な機能です。ここにいくつかあります:

[〜#〜] caddd [〜#〜] -PythonOCCを使用し、QtにGUIがあります。

[〜#〜] nurbs [〜#〜] -Python NURBSを操作するためのモジュール。

lolcad -非常によく見えますが、しばらく更新されていません。

そしてもちろん、組み込みのPythonインタープリターがあり、アーキテクチャと精密モデリング用のプラグイン( this など)があるBlenderを使用することもできます)

3
Ecir Hana

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

CADquery は、現在FreeCad用のプラグインであり、PythonでOpenScadをスクリプト化するよりも使用してうまく機能しました。開発者は現在FreeCadからPython OCC for Version 2に移行していますが、現在はV1にプラグインしています。

1
hum3

Pascale は新しいプロフェッショナルグレードですPythonパラメトリックCAD用のライブラリです。このライブラリには、統合された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の開発者です。

0
Ammon