キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 
キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

ArchiCAD18用カスタム建具をキープランに対応させる方法

Tatsuro Kawai
Graphisoft Moderator
Graphisoft Moderator
この記事では、カスタム建具をキープランに対応させる方法について説明します。自作の窓やドアオブジェクトにGDLスクリプトを追加する事で、キープランが表示されるようになります。
以下の手順に従ってください。
1.保存した建具を開き、サブタイプを日本建具に設定します
(例:窓の場合、「ACJX4WindowShoji」。ドアの場合、「ACJX4Door」)。
サブタイプの設定(AC18窓の場合)
サブタイプの変更(AC18ドアの場合)
自作窓、ドア建具の「マスタスクリプト」に以下のスクリプトを貼り付けます。
 
マスタスクリプト
bShowAddHotspotsForIS = 0
reqShowAddHotspotsForIS = 0
success = LIBRARYGLOBAL ("LG_DWSymbSettings", "AC_bShowAddHotspotsForIS", reqShowAddHotspotsForIS) if success > 0 then if reqShowAddHotspotsForIS & GLOB_CONTEXT = 6 then bShowAddHotspotsForIS = reqShowAddHotspotsForIS endif endif
 
2.自作建具の「パラメータスクリプト」に以下のスクリプトを貼り付けます。
窓には「窓用」、ドアには「ドア用」を使用してください。
窓の場合:パラメータスクリプト
!------------ For Window Marker -----------------------
call "ListValuesJPN" parameters all gs_JPNObjectType = 6,  !COMMPARS_WINDOWS1
    gs_is_p6 = 1
!------------ KeyPlan No.+ sub no. -------------------- for ii=10 to 1 step -1 if type_no<10**ii then no_len=ii next ii
for ii=10 to 1 step -1 if type_no_sub<10**ii then no_len_sub=ii next ii
if no_and_sub = "" then if type_no_sub=0 then type_no_tx = STR(type_no, no_len, 0) else type_no_tx = STR(type_no, no_len, 0) + "-" + STR(type_no_sub, no_len_sub, 0) endif else type_no_tx = no_and_sub endif
parameters type_no_tx = type_no_tx lock "type_no_tx"
 
ドアの場合:ドア用デフォルトパラメータ追加
ドアの場合は以下のデフォルトパラメータを追加する必要があります:
    stSill_Material(テキスト型)
    iSill_Material(整数型)
    stFrame_Material(テキスト型)
    iFrame_Material(整数型)
    p2(長さ型)
パラメータスクリプト
!------------ For Door Marker -----------------------
call "ListValuesJPN" parameters all gs_JPNObjectType = 5, gs_is_p2 = 1
!------------ KeyPlan No.+ sub no. for ii=10 to 1 step -1 if type_no<10**ii then no_len=ii next ii
for ii=10 to 1 step -1 if type_no_sub<10**ii then no_len_sub=ii next ii
if no_and_sub = "" then if type_no_sub=0 then type_no_tx = STR(type_no, no_len, 0) else type_no_tx = STR(type_no, no_len, 0) + "-" + STR(type_no_sub, no_len_sub, 0) endif else type_no_tx = no_and_sub endif
parameters type_no_tx = type_no_tx lock "type_no_tx"
自作建具の「2Dスクリプト」に以下のスクリプトを貼り付けます。
窓には「窓用」、ドアには「ドア用」を使用してください。
 
窓の場合:2Dスクリプト
!------------------ キープラン対応部分 -------------------------
if bShowAddHotspotsForIS then
    is_flag = 1
    goto "KeyPlan_Marker"
else
    is_flag = 0
endif
!------------------ キープラン対応部分 ------------------------- "KeyPlan_Marker": shxx=0 xxx = REQUEST ("window_show_dim", "", shxx)
add2 0, WIDO_SILL
un_id=1000
IF (shxx = 1 and key_mark_flag = 1) OR bShowAddHotspotsForIS then if scale_link_label then if GLOB_SCALE > detail_high then marker_type =0 else marker_type =1 endif else if iKey_Mark_Type = 1 then marker_type = 0 else marker_type = 1 endif endif
CALL "AC14_symbol_marker" PARAMETERS k_dia = k_dia , \ k_line = k_line, k_lenb = k_lenb, k_lena = k_lena, k_lenc = k_lenc, fsize_flag = fsize_flag, fsize = fsize,         k_notation1 =k_notation1,         n_offx1 =n_offx1,         n_offy1 =n_offy1,         k_notation2 =k_notation2,         n_offx2 =n_offx2,         n_offy2 =n_offy2,         k_notation3 = k_notation3,         n_offx3 =n_offx3,         n_offy3 =n_offy3,         k_notation4 =k_notation4,         n_offx4 =n_offx4,         n_offy4 =n_offy4,         pen_text = pen_marker,         pen_symbol = pen_marker,         pen_fill = pen_marker,         tfont = tfont,         type_symbol = stW_Type_Name,         type_no = type_no_tx,         globid = GLOB_ID,         k_idflag = k_idflag,         fill_flag=flag_zonehider,         marker_type = marker_type,         op_height = B,         is_flag = is_flag, ltype_marker = ltype_marker,         wd_show_size = wd_show_size,         size_anno_x = size_anno_x,         size_anno_y = size_anno_y,         A = A,         paper_scale = paper_scale,         ex_fsize = ex_fsize,         wd_fsize = wd_fsize,         k_dia_paper = k_dia_paper,         k_lenb_paper = k_lenb_paper,         k_lena_paper = k_lena_paper,         k_lenc_paper = k_lenc_paper,         n_offx1_paper = n_offx1_paper,         n_offy1_paper = n_offy1_paper,         n_offx2_paper = n_offx2_paper,         n_offy2_paper = n_offy2_paper,         n_offx3_paper = n_offx3_paper,         n_offy3_paper = n_offy3_paper,         n_offx4_paper = n_offx4_paper,         n_offy4_paper = n_offy4_paper,         size_anno_x_paper = size_anno_x_paper,         size_anno_y_paper = size_anno_y_paper,         k_rot_ang=k_rot_ang     endif
!________________________ Regulation marker __________________
if reg_mark_flag = 1 and iW_Regulations <> 5 and iW_Regulations <> 4 then CALL "AC14_regulation_marker" PARAMETERS r_dia = r_dia, \         r_lenb = r_lenb,         r_lena = r_lena,         paper_scale = paper_scale,         r_dia_paper = r_dia_paper,         r_lenb_paper = r_lenb_paper,         r_lena_paper = r_lena_paper,         pen_text = pen_marker,         pen_symbol = pen_marker,         pen_fill = mark_fill_pen,         type_fill = mark_fill_type,         fill_flag = mark_fill_flag,         tfont = tfont,         stW_Regulations = stW_Regulations, iW_Regulations = iW_Regulations,         kaj_door_ident = kaj_door_ident,         is_flag = is_flag, ltype_marker = ltype_marker endif
del top
 
ドアの場合:2Dスクリプト
!------------------ キープラン対応部分 -------------------------
if bShowAddHotspotsForIS then
    is_flag = 1
    goto "KeyPlan_Marker"
else
    is_flag = 0
endif
!------------------ キープラン対応部分 ------------------------- "KeyPlan_Marker": xxx = REQUEST ("door_show_dim", "", shxx)
add2 0, WIDO_SILL
if (shxx = 1 and key_mark_flag = 1) OR bShowAddHotspotsForIS then     if scale_link_label then         if GLOB_SCALE > 50 then             marker_type =0         else             marker_type =1         endif     else         if iKey_Mark_Type = 1 then             marker_type = 0         else             marker_type = 1         endif     endif
    CALL "AC14_symbol_marker" PARAMETERS k_dia = k_dia , \         k_line = k_line,         k_lenb = k_lenb,         k_lena = k_lena,         k_lenc = k_lenc,         fsize_flag = fsize_flag,         fsize = fsize,         k_notation1 =k_notation1,         n_offx1 =n_offx1,         n_offy1 =n_offy1,         k_notation2 =k_notation2,         n_offx2 =n_offx2,         n_offy2 =n_offy2,         k_notation3 = k_notation3,         n_offx3 =n_offx3,         n_offy3 =n_offy3,         k_notation4 =k_notation4,         n_offx4 =n_offx4,         n_offy4 =n_offy4,         pen_text = pen_marker,         pen_symbol = pen_marker,         pen_fill = pen_marker,         tfont = tfont,         type_symbol = stD_Type_Name,         type_no = type_no_tx,         globid = GLOB_ID,         k_idflag = k_idflag,         fill_flag=flag_zonehider,         marker_type = marker_type,         op_height = B,         is_flag = is_flag, ltype_marker = ltype_marker,         wd_show_size = wd_show_size,         size_anno_x = size_anno_x,         size_anno_y = size_anno_y,         A = A,         paper_scale = paper_scale,         ex_fsize = ex_fsize,         wd_fsize = wd_fsize,         k_dia_paper = k_dia_paper,         k_lenb_paper = k_lenb_paper,         k_lena_paper = k_lena_paper,         k_lenc_paper = k_lenc_paper,         n_offx1_paper = n_offx1_paper,         n_offy1_paper = n_offy1_paper,         n_offx2_paper = n_offx2_paper,         n_offy2_paper = n_offy2_paper,         n_offx3_paper = n_offx3_paper,         n_offy3_paper = n_offy3_paper,         n_offx4_paper = n_offx4_paper,         n_offy4_paper = n_offy4_paper,         size_anno_x_paper = size_anno_x_paper,         size_anno_y_paper = size_anno_y_paper,         k_rot_ang=k_rot_ang endif
!________________________ Regulation marker __________________
if reg_mark_flag = 1 and iD_Regulations <> 15 and iD_Regulations <> 14 then     CALL "AC14_regulation_marker" PARAMETERS r_dia = r_dia, \         r_lenb = r_lenb,         r_lena = r_lena,         pen_text = pen_marker,         pen_symbol = pen_marker,         pen_fill = mark_fill_pen,         type_fill = mark_fill_type,         fill_flag = mark_fill_flag,         tfont = tfont,         stD_Regulations = stD_Regulations, iD_Regulations = iD_Regulations,         kaj_door_ident = kaj_door_ident,         is_flag = is_flag, ltype_marker = ltype_marker endif
del top
 

回答が見つかりませんでしたか?

このフォーラムで
他の記事をチェック

フォーラムへ戻る

最新の解決策をチェック

採用された解決策

新しいディスカッションを始める

投稿する