• TOP
  • >
  • activites
  • >
  • ARCHICAD
  • >
  • ARCHICAD|要素IDから建具符号ラベルを作成する方法
  • アトリエイケムラ 一級建築士事務所

    ARCHICAD|要素IDから建具符号ラベルを作成する方法

    前回記事「ARCHICAD|ラベルに参照点を設定する方法」に引き続き今回は、「建具符号ラベル」をご紹介致します。

    ARCHICADの窓、ドアにはデフォルトで建具符号が用意されていて、モデル表示オプション(MVO)と連動する事が可能な便利なマークがあります。しかし、編集をするには階層が深く面倒に感じていました。

    そこで、要素IDによる管理をしてみる事にしました。
    その為には、建具符号が必要となりますので、その作成手順です。

    1.建具符号ラベルを複製保存

    前回作成した「参照点ラベル」を開きます。
    平面図の画面からだと、ショートカット「command+shift+o」でライブラリ部分を開くが表示されます。
    ツールバーからですと、ファイル → ライブラリーとオブジェクト → オブジェクトを開くでライブラリ部分を開くが表示されます。

    参照点ラベル」を開いたら ファイル → 名前を付けて保存をクリックします。
    埋め込みライブラリに、名前を「建具符号ラベル」として保存します。

    2.パラメータの追加

    今回は、パラメータに以下の3つを追加します。

    • text_size_select
    • marker_size
    • h_font

    画面左の上側の[パラメータ]をクリックして、追加していきます。

    ・text_size_select

    このパラメータは、“用紙サイズ”と“モデルサイズ”を選択出来る様にする為の物です。
    ①新規作成 ② 変数名「text_size_select」③タイプ 「文字」 ④ 名前 「サイズの形式」⑤値は空欄とします。
    値が空欄なのは、後ほどスクリプトのパラメータ側で、“用紙サイズ”と“モデルサイズ”を割り当てる為です。

    ・marker_size
    ①新規作成 ② 変数名「marker_size」③タイプ 「長さ」 ④ 名前 「マーカーサイズ」⑤値「420」とします。

    ・h_font
    ①新規作成 ② 変数名「h_font」③タイプ 「長さ」 ④ 名前 「マーカーサイズ」⑤値「1.7」とします。

    3.用紙サイズ/モデルサイズを選択できるようにする

    今回のスクリプトでは、「用紙サイズ」と「モデルサイズ」のいずれかを選択出来る様にします。

    画面左のスクリプト内の[パラメータ]をクリックしてスクリプト画面を開き
    前回のスクリプト下に下記をコピーして貼り付けます。

    !=========================================================
    !用紙サイズ/モデルサイズを選択できるようにする
    !=========================================================
    
    VALUES "text_size_select" "用紙サイズ" , "モデルサイズ"

    以下の様になります。

    画面上側のタブ、[スクリプトを確認]をクリックして、問題が無ければ、画面左の上側の[パラメータ]をクリックして、変数名「text_size_select」の値を確認して、“用紙サイズ”と“モデルサイズ”を選択出来る様になっていればOKです。

    3.インターフェーススクリプト編集

    続いて左側メニューのスクリプト内の[インターフェース]をクリックして前回のスクリプト下に
    下記をコピーして貼り付けます。

    ! ------------------------------------------------------------------------------
    
    	ui_outfield "サイズの形式", xPos0, yPos1, 100
    	ui_infield "text_size_select", xPos2, yPos1-2,100,20
    	yPos1 = yPos1 +30
    	ui_outfield "マーカーサイズ", xPos0, yPos1, 100
    	ui_infield "marker_size", xPos2, yPos1 -2,50,20
    	yPos1 = yPos1 +30
    	ui_outfield "フォントサイズ", xPos0, yPos1, 100
    	ui_infield "h_font", xPos2, yPos1 -2,50,20

    4.2Dスクリプトの編集

    左側メニューのスクリプト内の[2D]をクリックしてスクリプト画面に
    下記をコピーして貼り付けます。

    ! =============================================================================
    ! フォント設定
    ! =============================================================================
    
    IF text_size_select = "用紙サイズ" THEN
    	!用紙サイズで文字サイズを指定する(h_fontパラメータの値をmm)
    	_fontSize = h_font*1000
    	ELSE
    		!モデルサイズでサイズを指定する(h_fontパラメータの値をmm)
    		_fontSize = h_font/GLOB_SCALE*1000 *100
    		ENDIF
    
    DEFINE STYLE  font_style  AC_TextFont_1, _fontSize, 5, 0
    
    SET STYLE font_style
    
    n = REQUEST ("Height_of_style","font_style", height, descent, leading)
    font_height = height / 1000 * GLOB_SCALE
    font_descent = descent / 1000 * GLOB_SCALE
    font_leading = leading / 1000 * GLOB_SCALE
    
    font_H = font_height - font_descent - font_leading
    
    
    
    ! =============================================================================
    ! 出力文字設定
    ! =============================================================================
    
    ! ------------------------------------
    !親要素のIDを取得
    ! ------------------------------------
    _MasterID = ""
    result = REQUEST("Full_ID_of_parent", "", _MasterID)
    
    ! ------------------------------------
    !文字列を記号と番号に分ける
    ! ------------------------------------
    windType = ""
    num = 0
    
    if result = 0 then
    	windType = "<ID>"
    	num_str = "0"
    	else
    		nn = SPLIT(_MasterID,"%s %n",windType,num)
    		num_str = str("%.0" , num)
    		endif
    ! ------------------------------------
    !文字の幅を取得
    ! ------------------------------------
    
    windType_W = STW (windType) / 1000 * GLOB_SCALE
    num_W = STW (num_str) / 1000 * GLOB_SCALE
    
    
    
    ! =============================================================================
    ! テキスト位置
    ! =============================================================================
    ! LABEL_HAS_POINTER - ポインタ有無
    ! LABEL_POSITION	- ポインタの座標
    
    	if not(LABEL_HAS_POINTER) then
    
    		add2	LABEL_POSITION [2][1]	+	LABEL_POSITION [3][1],
    				LABEL_POSITION [2][2]	+	LABEL_POSITION [3][2]
    
    	endif
    
    ! =============================================================================
    ! 参照点によるテキスト位置の移動
    ! =============================================================================
    _frameOffset = LABEL_FRAME_OFFSET* GLOB_SCALE/1000
    
    _posX = 0
    _posY = 0
    
    
    	if iReferencePoint = 3 | iReferencePoint = 6 | iReferencePoint = 9 then _posX = -marker_size-_frameOffset
    	if iReferencePoint = 1 | iReferencePoint = 4 | iReferencePoint = 7 then _posX = marker_size+ _frameOffset
    	
    	
    	if iReferencePoint = 7 | iReferencePoint = 8 | iReferencePoint = 9 then _posY = marker_size+ _frameOffset
    	if iReferencePoint = 1 | iReferencePoint = 2 | iReferencePoint = 3 then _posY = -marker_size-_frameOffset
    
    add2 _posX, _posY
    
    ! =============================================================================
    ! 枠
    ! =============================================================================
    
    !IF LABEL_FRAME_ON then
    IF AC_bLabelFrame then
    
    	! ------------------------------------
    	!枠のペン設定
    	! ------------------------------------
    
    	pen AC_LabelPointerPen
    
    	! ------------------------------------
    	!枠の線種設定
    	! ------------------------------------
    
    	line_type AC_LabelPointerLineType
    
    	! ------------------------------------
    	!枠を作成
    	! コマンド : LINE2 , RECT2 , POLY2 etc
    	! ------------------------------------
    
    	IF text_size_select = "用紙サイズ" THEN
    		!用紙サイズで指定する
    		marker_size = marker_size *GLOB_SCALE/100
    		ELSE
    			!モデルサイズで指定する
    			marker_size = marker_size
    			ENDIF
    	
    		LINE2 -marker_size, 0 , marker_size , 0
    		CIRCLE2 0, 0, marker_size
    	hotspot2 0,0
    	hotspot2 marker_size,0
    	hotspot2 -marker_size,0
    
    ENDIF
    
    ! =============================================================================
    ! 塗りつぶし
    ! =============================================================================
    
    IF AC_bLabelOpaqueFill THEN
    
    	! ------------------------------------
    	!枠のペン設定
    	! ------------------------------------
    
    	pen AC_LabelTextBgrPen
    
    	! ------------------------------------
    	!塗りつぶしを作成
    	! コマンド : POLY2_b , POLY2 etc
    	! ------------------------------------
    		!===============frame_fillの設定
    		!frame_fill = 1		!輪郭線のみ
    		frame_fill = 2		!塗りつぶしのみ
    		!frame_fill = 1+2	!輪郭線+塗りつぶし
    		!frame_fill = 1+2+4	!輪郭線+塗りつぶし+開いたポリゴンを閉じる
    
    		fill_types = 65
    		fillPenFg = AC_LabelTextBgrPen
    		fillPenBg = AC_LabelTextBgrPen
    
    		!===============円型塗りつぶし
    
    		set fill fill_types	!fill_typesパラメータに追加(塗りつぶし種類)
    		!fillPenFg				パラメータに追加(前景ペン)
    		!fillPenBg				パラメータに追加(背景ペン)
    		r = marker_size			!円の半径
    		
    		!frame_fill = 1		!輪郭線のみ
    		frame_fill = 2		!塗りつぶしのみ
    		!frame_fill = 1+2	!輪郭線+塗りつぶ
    		!AC_LabelTextBgrPen
    		poly2_B 2,frame_fill,AC_TextPen_1, AC_LabelTextBgrPen,
    				0,0,900 ,		 ! 円弧の中心点を設定
    				r,360,4000	 ! 円弧の角度を設定	
    		!===============
    
    ENDIF
    
    ! =============================================================================
    ! テキスト	
    ! =============================================================================
    
    	! ------------------------------------
    	!テキストのペン設定
    	! ------------------------------------
    
    	pen AC_TextPen_1
    
    	text2 0, marker_size/2, windType
    	text2 0, -marker_size/2, num_str

    上部タブの[スクリプトを確認]をクリックして、問題がなければOKです。

    ラベルを配置する前の設定画面では、以下の様になっていると思います。

    最後に、建具ID名称の付け方は、「AW10」の様に最初にAW等の記号、そのまま続けて数字又はスペースを入れた後に、数字を入力となっています。

    以上が「要素IDから建具符号ラベル」の作り方でした。

    参照点ラベルをベースにする事で、色々なラベルに変える事が出来ますので、ラベルのテンプレートとして利用すると良いですね。

    コメントはこちらから

    内容に問題なければ、下記の「コメントを送信する」ボタンを押してください。