完成イメージ動画(前回の記事と同じ動画です)
主筋の実装
まずはマスタースクリプトに以下を追記します。ここでは、主筋の位置の初期値を計算しています。GLOB_MODPAR_NAMEを使用し、5つのいずれかのパラメータに変更があった場合のみ、主筋の位置が初期値にされるようにしています。初期値というのは、主筋が均等間隔に並んだ状態です。参考までに下の図をご覧ください。
マスタースクリプト
terms1=(glob_modpar_name="top_reinforcement_num_1") terms2=(glob_modpar_name="left_cover_thickness") terms3=(glob_modpar_name="right_cover_thickness") terms4=(glob_modpar_name="top_dim_str") terms5=(glob_modpar_name="stp_dim") stPos = width/2 - (left_cover_thickness - stp_dim - top_reinforcement_dim/2) if terms1 | terms2 | terms3 | terms4 | terms5 then dim _top_reinforcement_pos_s1[] scope= width - (stp_dim*2 + left_cover_thickness + right_cover_thickness + top_reinforcement_dim) pitch=scope/(top_reinforcement_num_1-1) for i=1 to top_reinforcement_num_1 _top_reinforcement_pos_s1[i]=pitch*(i-1) next i parameters top_reinforcement_pos_s1=_top_reinforcement_pos_s1 endif
ちなみにGLOB_MODPAR_NAMEとは、最後に修正されたパラメータ名を取得できるものです。設定ダイアログまたはライブラリ製品の編集可能なホットスポットを通して修正されたパラメータ名を返してくれます。上記のスクリプトでは、if文で5つのパラメータが修正された時に処理が走るようになっていることが分かるかと思います。
![]() |
パラメータの変更により主筋位置が均等に並び替えられる様子 |
続いて、2Dスクリプトに主筋を描画していきたいと思います。
2Dスクリプト
!主筋 line_type top_line_type pen top_pen add2 0, width/2 - (left_cover_thickness+stp_dim+top_reinforcement_dim/2) for i=1 to top_reinforcement_num_1 add2 0, -top_reinforcement_pos_s1[i] arc2 -st_anchorage_length,0, top_reinforcement_dim/2, 90, 270 arc2 length+ed_anchorage_length, 0, top_reinforcement_dim/2, 270, 90 line2 -st_anchorage_length, top_reinforcement_dim/2, cos(ac_beam_inclination)*length + ed_anchorage_length,top_reinforcement_dim/2 hotline2 -st_anchorage_length, top_reinforcement_dim/2, cos(ac_beam_inclination)*length +ed_anchorage_length ,top_reinforcement_dim/2, unid :unid=unid+1 line2 -st_anchorage_length, -top_reinforcement_dim/2, cos(ac_beam_inclination)*length + ed_anchorage_length,-top_reinforcement_dim/2 hotline2 -st_anchorage_length, -top_reinforcement_dim/2, cos(ac_beam_inclination)*length + ed_anchorage_length,-top_reinforcement_dim/2, unid :unid=unid+1 del 1 !主筋位置調整ホットスポット if i>1 & top_reinforcement_num_1>i then hotspot2 0, 0 , unid, top_reinforcement_pos_s1[i],1+128 :unid=unid+1 hotspot2 0, -top_reinforcement_pos_s1[i], unid, top_reinforcement_pos_s1[i],2 :unid=unid+1 hotspot2 0, 1 , unid, top_reinforcement_pos_s1[i],3 :unid=unid+1 hotspot2 length, 0 , unid, top_reinforcement_pos_s1[i],1+128 :unid=unid+1 hotspot2 length, -top_reinforcement_pos_s1[i], unid, top_reinforcement_pos_s1[i],2 :unid=unid+1 hotspot2 length, 1 , unid, top_reinforcement_pos_s1[i],3 :unid=unid+1 endif next i del 1 !定着ホットスポット hotspot2 0 , 0, unid, st_anchorage_length,1+128 :unid=unid+1 hotspot2 -st_anchorage_length , 0, unid, st_anchorage_length,2 :unid=unid+1 hotspot2 1 , 0, unid, st_anchorage_length,3 :unid=unid+1 hotspot2 length , 0, unid, ed_anchorage_length,1+128 :unid=unid+1 hotspot2 length+ed_anchorage_length , 0, unid, ed_anchorage_length,2 :unid=unid+1 hotspot2 length-1 , 0, unid, ed_anchorage_length,3 :unid=unid+1
上記のスクリプトを記述すると、以下のような状態になるかと思います。(描画がうまくいっていない場合は、主筋径等のパラメータを修正すると、先ほどマスタースクリプトに記述した処理が実行され、きれいに描画されるようになると思います)
![]() |
主筋の描画 |
この時点で、すでに主筋の位置をホットスポットで調整したり、定着長さを調整したりできるようになっていると思いますので、試してみてください。
今回はここまでにしたいと思います。次回はこれにあばら筋を付け加えていきたいと思います。少し複雑になっていますので、お気軽にコメントや問い合わせをご活用頂ければと思います。
【お知らせ】
ココナラでのサポートサービスも承っておりますので、
ご活用いただければと思います。
1日GDL作成やArchiCAD関連の相談のります 自分でGDLを作成している方へXのアカウントを作成しましたので、ぜひフォロー頂けると嬉しいです。
アカウントはこちらから⇨https://x.com/BIM_arekore
世界の建設業従事者、BIM推進者と繋がりたいです。よろしくお願いします。
0 件のコメント:
コメントを投稿
何でも気軽にコメントください。