Python Script ノードで intersectwith 関数は使えないでしょうか。

buf_fa
Advocate
Advocate

Python Script ノードで intersectwith 関数は使えないでしょうか。

buf_fa
Advocate
Advocate

intersectwith 関数を使おうとすると、エラーになります。

 

                points = []
                line = Line3d(obj.StartPoint, obj.EndPoint)
                intersection_result = line.IntersectWith(plane)

0 件のいいね
返信
解決済み
637件の閲覧回数
9件の返信
返信 (9)

katsuhisa.shibataJUJVG
Collaborator
Collaborator

planeは何クラスで,エラーはどういうエラーでしょうか。

buf_fa
Advocate
Advocate

コメントありがとうございます。

planeのクラスはよくわかっていません。

エラーは No method match ・・・でした。

もう少し、勉強してみます。

0 件のいいね

katsuhisa.shibataJUJVG
Collaborator
Collaborator
解決済み

print(type(plane))

してみてください。

AutoCADのヘルプ で リソース の下の 開発用ドキュメント を押し,右上の日本語を英語にして Managed .NET/ObjectARX/JavaScript の Managed .NET の下の Reference Guide を押します。自分はLine3dというオブジェクトを知りませんでしたが,Autodesk.AutoCAD.Geometry Namespaceにありますね。IntersectWith MethodはLine3dクラスにはなく,一つ上のLinearEntity3dクラスですね。変種が4つありますが,引数がplaneですから型はPlanarEntityです。PlanarEntityクラスを見ると下にBoundedPlaneとPlaneがありますので,IntersectWith Methodの引数の型はPlanarEntity,BoundedPlane,Planeの3つのうちのどれかでなければならない,ということになります。

buf_fa
Advocate
Advocate

ありがとうございます。少なくとも関数が使えると確信いたしましたので、少し粘って勉強致します。

 

katsuhisa.shibataJUJVG
Collaborator
Collaborator

ここはCIMフォーラムなので,ひょっとして,で。

TINサーフェスと点があり,点からサーフェスに向かってある方向に進んでいくとどこかでTINサーフェスに当たりますが,その点を求めたい,ということではないでしょうか。

Civil 3D関係のAPIは Civil 3Dのヘルプ のAPI Reference Guideですが,TINサーフェスはAutodesk.Civil.DatabaseServices NamespaceのTinSurface Classで,GetIntersectionPoint Methodがそれです。

buf_fa
Advocate
Advocate

ありがとうございます。

今回の目的はちょっと違いましたが、大変参考になります。

0 件のいいね

buf_fa
Advocate
Advocate

解決としましたが、添付のpython script の交点座標があっていません。

どこがおかしいでしょうか?

0 件のいいね

katsuhisa.shibataJUJVG
Collaborator
Collaborator

確かに変ですね。

2Dだと正しく出ました。

buf_fa
Advocate
Advocate

返信ありがとうございます。

2dで計算する事にします。

0 件のいいね