Mesh Scripting/jp

はじめに

まず、メッシュモジュールをインポートする必要があります:

import Mesh

これで、FreeCADのC++ Meshカーネルの関数を容易に使うことができるMeshモジュールとMeshクラスへのアクセス権限があります。

作成と読み込み

空のメッシュオブジェクトを作成するには、標準のコンストラクタを使用します。

mesh = Mesh.Mesh()

また、ファイルからオブジェクトを作成することができます

mesh = Mesh.Mesh('D:/temp/Something.stl')

(互換性のあるファイルタイプのリストは'Meshes'で見ることができます。ここ) または頂点座標で記述された三角形の集合体から作成します。

planarMesh = [
# triangle 1
[-0.5000,-0.5000,0.0000],[0.5000,0.5000,0.0000],[-0.5000,0.5000,0.0000],
#triangle 2
[-0.5000,-0.5000,0.0000],[0.5000,-0.5000,0.0000],[0.5000,0.5000,0.0000],
]
planarMeshObject = Mesh.Mesh(planarMesh)

メッシュカーネルは、一致する点やエッジをソートすることによってトポロジー的に正しいデータ構造を作成する手助けをします。

後でメッシュデータを表示してテストし、メッシュデータを調べることができます。

モデリング

PythonスクリプトのBuildRegularGeoms.pyを使用すると、正常なジオメトリを作成することができます。

import BuildRegularGeoms

このスクリプトは、球・楕円・円柱・ドーナツ形・円錐と同様にシンプルな回転体を定義するためのメソッドを提供します。そしてそれはまた、単純な立方体を作成するためのメソッドを持っています。 ドーナツ形状を作成するには、例えば以下のように行うことができます。

t = BuildRegularGeoms.Toroid(8.0, 2.0, 50) # list with several thousands triangles
m = Mesh.Mesh(t)

最初の2つのパラメータはドーナツ形の半径を定義し、3番目のパラメータは形状を構成する三角形状のサブサンプリング係数です。この値が高いほど、より滑らかになり、低いと粗くなります。 Meshクラスは、モデリングの目的で使用できるブール関数のセットを提供します。それは、和・積と2つのメッシュオブジェクトの差を提供します。

m1, m2              # are the input mesh objects
m3 = Mesh.Mesh(m1)  # create a copy of m1
m3.unite(m2)        # union of m1 and m2, the result is stored in m3
m4 = Mesh.Mesh(m1)
m4.intersect(m2)    # intersection of m1 and m2
m5 = Mesh.Mesh(m1)
m5.difference(m2)   # the difference of m1 and m2
m6 = Mesh.Mesh(m2)
m6.difference(m1)   # the difference of m2 and m1, usually the result is different to m5

最後に、その完全な例は、球とシリンダの交点を計算します。

import Mesh, BuildRegularGeoms
sphere = Mesh.Mesh( BuildRegularGeoms.Sphere(5.0, 50) )
cylinder = Mesh.Mesh( BuildRegularGeoms.Cylinder(2.0, 10.0, True, 1.0, 50) )
diff = sphere
diff.difference(cylinder)
d = FreeCAD.newDocument()
d.addObject("Mesh::Feature","Diff_Sphere_Cylinder").Mesh=diff
d.recompute()

調査とテスト

独自のアルゴリズムを書く

エクスポート

Pythonのモジュールにメッシュを書くことができます:

m.write("D:/Develop/Projekte/FreeCAD/FreeCAD_0.7/Mod/Mesh/SavedMesh.py")
import SavedMesh
m2 = Mesh.Mesh(SavedMesh.faces)

GUI関連

雑記

メッシュ関連スクリプトの広範な(ハードな使い方)のソースは、メッシュモジュールのユニットテストスクリプトです。 このユニットテストでは文字通りすべてのメソッドが呼び出され、すべてのプロパティ/属性が微調整されています。 そして十分な情報がほしいときは、Unit Test moduleを見てください。


Online version: "http://www.freecadweb.org/wiki/index.php?title=Mesh_Scripting/jp&oldid=211360"

Navigation menu