局所座標系での表面メッシュの円範囲選択
お世話になっております。
ボルト穴のサイズを変更するための前処理として、選択した複製先の穴の中心ノードを用いて旧ボルト穴の存在する表面のエレメントをスクリプトで取得したいです。モデルが直交座標系から傾いている場合にその傾きに対応できる円範囲選択の記述方法の質問となります。
使用の場面として取得したelementのマスク後にreverseallすることで表面のメッシュだけを表示し処理します。新ボルト穴の平面と複製先の面は平行であるという前提です。
現在は 'by face'を使わず、createmarkの'by cylinder'をオプションにし、
*createmark elem 1 'by cylinder' $X $Y $Z $X $Y [expr $Z + 0.01] 1000 1 inside 1 1 0.01 ;#数値誤差のための厚み0.01 XYZは複製先の穴の中心ノードの座標 *maskentitymark elems 1 0 ;#マスク
のように複数のノードをforeachで回すたび毎に取得とマスクをしているのですが、この記述では面が直交座標系と平行であるとは限らないため、モデルが傾くと期待通りに取得できません。
そこで局所座標系を用いて、新ボルト穴の面から局所座標を取得して利用するとのことで3点を選択し、
#局所座標系の作成 *createmark nodes 1 $originPoint *systemcreate 1 0 $originPoint 'x-axis' $Point1 'xy plane' $Point2 #局所座標系へのアサイン foreach node $SelectNodes { *createmark nodes 2 $node *systemsetreference nodes 2 1 *systemsetanalysis nodes 2 1 }
のように作成して移動先のノードをアサインしました。
その後、局所座標系を利用した場合のoption等をどのように設定すれば傾きに合わせて平面のエレメントを取得できるのか分からず質問させていただきました。
Answers
-
こんにちは、@amethyst
hm_getvalueで取得できる節点のData nameでは、x, y, zが参照座標系からの座標値、globalx, globaly, globalzが全体座標系からの座標値となっていますので、必要に応じて使い分けていただくのが良いかと思われます。
今回、ボルトのモデル化に、1Dページ⇒connectorsパネル⇒bolt機能は利用されていますか?
コネクターが使われているのであれば、部品のリプレース機能で部品入れ替え後に、コネクターのリアライズ(再接続)を実行するだけで完結できると思われます。0