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

by Toh · 最終更新日: 2016年4月28日

この記事では、カスタム建具をキープランに対応させる方法について説明します。自作の窓やドアオブジェクトにGDLスクリプトを追加する事で、キープランが表示されるようになります。

以下の手順に従ってください。

  1. 保存した建具を開き、サブタイプを日本建具に設定します(例:窓の場合、「ACJX4WindowShoji」。ドアの場合、「ACJX4Door」)。
[窓のサブタイプ]

 

[ドアのサブタイプ]

kp02

 

2.自作建具の「パラメータスクリプト」に以下のスクリプトを貼り付けます。窓には「窓用」、ドアには「ドア用」を使用してください。

kp03

 窓の場合:パラメータスクリプト

!------------ 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"

 

 

 

ドアの場合:ドア用デフォルトパラメータ追加

ドアの場合は以下のデフォルトパラメータを追加する必要があります:

kp04

 

 

ドアの場合

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"

 

 

 

  1. 自作建具の「2Dスクリプト」に以下のスクリプトを貼り付けます。窓には「窓用」、ドアには「ドア用」を使用してください。

   窓の場合:2Dスクリプト

kp05

 

!------------------ キープラン対応部分 -------------------------
if GLOB_PREVIEW_MODE = 2 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 GLOB_PREVIEW_MODE = 2 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 = keyplan_fill_pen,
		type_fill = keyplan_fill_type,
		keyplan_fill_bg_pen = keyplan_fill_bg_pen,
		fontType = fontType,
		type_symbol = stW_Type_Name,
		type_no = type_no_tx,
		globid = GLOB_ID,
		k_idflag = k_idflag,
		fill_flag = bKeyplan_fill,
		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_dia_M		= k_dia_M,
		k_lenb_M	= k_lenb_M,
		k_lena_M	= k_lena_M,
		k_lenc_M	= k_lenc_M,

		n_offx1_M	= n_offx1_M,
		n_offy1_M	= n_offy1_M,
		n_offx2_M	= n_offx2_M,
		n_offy2_M	= n_offy2_M,
		n_offx3_M	= n_offx3_M,
		n_offy3_M	= n_offy3_M,
		n_offx4_M	= n_offx4_M,
		n_offy4_M	= n_offy4_M,
		size_anno_x_M = size_anno_x_M,
		size_anno_y_M = size_anno_y_M,

		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,
		r_dia_M		= r_dia_M,
		r_lenb_M	= r_lenb_M,
		r_lena_M	= r_lena_M,

		pen_text = reg_pen,
		pen_symbol = reg_pen,
		pen_fill = mark_fill_pen,
		type_fill = mark_fill_type,
		mark_fill_bg_pen = mark_fill_bg_pen,
	   	fill_flag = mark_fill_flag,
		fontType = fontType,
		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スクリプト

kp06

 

!------------------ キープラン対応部分 -------------------------
if GLOB_PREVIEW_MODE = 2 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 GLOB_PREVIEW_MODE = 2 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 = keyplan_fill_pen,
		type_fill = keyplan_fill_type,
		keyplan_fill_bg_pen = keyplan_fill_bg_pen,
		fontType = fontType,

		type_symbol = stD_Type_Name,
		type_no = type_no_tx,
		globid = GLOB_ID,
	 	stD_Lock_Type = stD_Lock_Type, iD_Lock_Type = iD_Lock_Type,
	 	e_offx =e_offx,
	 	e_offy =e_offy,
		k_idflag = k_idflag,

		fill_flag= bKeyplan_fill,
		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_dia_M		= k_dia_M,
		k_lenb_M	= k_lenb_M,
		k_lena_M	= k_lena_M,
		k_lenc_M	= k_lenc_M,

		n_offx1_M	= n_offx1_M,
		n_offy1_M	= n_offy1_M,
		n_offx2_M	= n_offx2_M,
		n_offy2_M	= n_offy2_M,
		n_offx3_M	= n_offx3_M,
		n_offy3_M	= n_offy3_M,
		n_offx4_M	= n_offx4_M,
		n_offy4_M	= n_offy4_M,
		size_anno_x_M = size_anno_x_M,
		size_anno_y_M = size_anno_y_M,
		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,
		r_dia_paper		= r_dia_paper,
		r_lenb_paper	= r_lenb_paper,
		r_lena_paper	= r_lena_paper,
		r_dia_M		= r_dia_M,
		r_lenb_M	= r_lenb_M,
		r_lena_M	= r_lena_M,
		paper_scale	= paper_scale,
		pen_text = reg_pen,
		pen_symbol = reg_pen,
		pen_fill = mark_fill_pen,
		type_fill = mark_fill_type,
		mark_fill_bg_pen = mark_fill_bg_pen,
	   	fill_flag = mark_fill_flag,
		fontType = fontType,
		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