Jump to content
Imoto

【スクリプト】関連のないソリッドジオメトリの中の節点を選びたい

Recommended Posts

通常、HyperMeshでは、節点はサーフェスやソリッドジオメトリと関連性を持っています。

関連が付いている場合は、エンティティ選択時の選択オプションの"by geoms"でサーフェスやソリッドジオメトリに関連する節点/要素を簡単に選ぶことができます。

bygeoms.jpg

 

もしも、節点とジオメトリの関連が全く無い場合には、ソリッドジオメトリの中にある節点を選びたいという時には、指定した座標値がソリッドジオメトリの内外かを返してくれる「hm_ispointinsidesolid」コマンドが便利です。

 

この「hm_ispointinsidesolid」コマンドを活用して、例えばユーザーが選択した節点群とソリッドジオメトリから、ソリッドの中にある節点だけを抽出したい場合は、下記のような記述で可能です。

 

set inlist "";
*createentitypanel solids "Select a solid";
set solidid [hm_info lastselectedentity solids];
*createmarkpanel nodes 1 "Select nodes";
foreach nodeid [hm_getmark nodes 1] {
 lassign [hm_getvalue nodes id=$nodeid dataname=coordinates] X Y Z;
 if {[hm_ispointinsidesolid $X $Y $Z $solidid] == "1"} {
  lappend inlist $nodeid;
 }
}
if {[llength $inlist] == "0"} {
 tk_messageBox -message "There is no node in selected solid geometry.";
} else {
 tk_messageBox -message "Found the [llength $inlist] nodes,\nYou can call from retrieve option.";
 hm_createmark nodes 1 "by id" $inlist;
 *marktousermark nodes 1;
}
hm_markclearall 1;

※ファイルに保存して、"File→Run→Tcl/Tk Script"から実行できます。

Tclファイルのダウンロードはこちら:SelectNodesInsideSolidGeom.tcl

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×