空間モデル化する時ちょっと使いたい
Open系の電磁界解析やCFDもそうだけど、Mesh切るやつとかはかなり進んできていて、CADでモデル化できるのも多いんですが、CADで、寸法追うよりも、おじさんとしては、線状のモデルだと簡単なベクトルで交点求めたり。。平面で切った断面を調べてみたりとかしたくなります。昔はそういうのを各自でライブラリ作ってもってたんですが。。 今だと。。 ライブラリあるかな? と探してみました。
CADではFreeCADなら。。このあたりが参考になりそう。
で、FreeCADにはそういう便利なライブラリーはなさそうで。。Vector Mathで外積・内積とかで計算させるのかな?たぶんもっと探せばあるのかも?
Blenderなら、ずばりのAPIがありますね。
Blenderの方が豊富にあってわりと整然と揃えられていそうですね。FreeCADはそれぞれのWorkBenchで作られているので、相互のデータ構造なども少し違うんですね。。
でもこれらを使おうと思うと。。 CADのデータ構造を理解しないと行けなさそうなので、ちょっとおいておく(笑) いつかやらなきゃいけなさそうな時がくるかもだけど(笑)
もっとシンプルなやつないかな?と探してみました。
SympyのGeometry
Sympyという、昔で言うところのAlgebraとかの数式をそのまま扱うようなツールの中に、Geometoryを扱えるモジュールがあるみたいです。
入れようかな?って思ったけど。。Live.sympy.orgで動かせるみたいなのでちょっとみてみたけど。。
3Dには対応してなさそうなので。。次に。。
Geometry3D
結局こういうシンプルなのが。。わかりやすいかな??
ドキュメントはこちら。。Intersection(交点もある)
インストールは、Anacondaからはできないので、Anacondaで環境を一つ作っておいて、コンソールから、
pip install Geometry3D
で。。AnacondaからJupyterLabを動かして
from Geometry3D import * cph0 = Parallelepiped(origin(),x_unit_vector(),y_unit_vector(),z_unit_vector()) p = Plane(Point(0.5,0.5,0.5),Vector(1,1,1)) cpg = intersection(cph0,p) r = Renderer() r.add((cph0,'r',1),normal_length = 0) r.add((cpg,'b',1),normal_length=0) r.show()
立方体と、平面を切った交点(交線)を求めるとかが簡単にできて、Matplotlibで表示できますね。
ただ、ちょっといろいろなことすると。。重いですけど。。
これ使おうっと。。
コメントを残していただけるとありがたいです