3本注釈 Vectorworks スクリプト

3本線までの注釈オブジェクトの作り方です。最下部にオブジェクトごとダウンロードできるボタンも配置しています。

スクリプト

import vs

#パラメータを紐付け
baseLine = vs.PLineLength
text1 = vs.PText1
text2 = vs.PText2
text3 = vs.PText3

#配置されたレイヤ縮尺の取得
layerScale   = vs.GetLScale(vs.ActLayer())
mov = 5 * layerScale

#現在の属性設定の保存(最後に保存状態に戻すため)
vs.PushAttrs()

#配置されたオブジェクト(自分)のハンドルを取得
boo,objectName, objectHand, recordHand, wallHand = vs.GetCustomObjectInfo()

#メニューのフォントや文字サイズの設定をTrue
vs.SetObjectVariableBoolean(objectHand, 800, True) 

#文字設定(高さと左右)
vs.TextVerticalAlign(3)
vs.TextJust(1)

#自分の角度を取得して、hAng(設定する角度)を決定
if -90 <= vs.HAngle(objectHand) <= 90:
    hAng = vs.HAngle(objectHand)

else:
	hAng = vs.HAngle(objectHand) + 180

#ベースの引出線線を設定
p0 = (0,0)
vs.MoveTo(0,0)
vs.LineTo(baseLine,0)
boo = vs.SetObjBeginningMarker(vs.LNewObj(), 2, 0, 0.05, 0.05, 0, 0, True)

#線と文字列の関数を作成
def setLine(split,text):
    x = baseLine * split #引出が複数ある時、どこを起点に線を引くか
    start = ( x , 0) #始点
    end = ( x + vs.Cos(vs.Deg2Rad((-1) * hAng)) * mov ,vs.Sin(vs.Deg2Rad((-1) * hAng)) * mov) #終点
    vs.MoveTo(start)
    vs.LineTo(end)
    vs.CreateText(str(text))
    vs.HRotate(vs.LNewObj(), end, -hAng) #書いた文字を回転させる
    return start,end


texts = [text1,text2,text3] #オブジェクト情報パレットに入力されている文字のリスト
texts = [text for text in texts if text != ''] #空の文字列を消す


#if文で分岐
if len(texts) == 0:
    start,end = setLine(1,'')
else:
    start,end = setLine(1,texts[0])
    
    if len(texts) == 2:
        start,end = setLine(0.7,texts[1])

    elif len(texts) == 3:
        start,end = setLine(0.75,texts[1])
        start,end = setLine(0.5,texts[2])
    
    else:
        pass
    
#初期の状態(文字の位置とか)に戻す
vs.PopAttrs()

パラメータの定義

vsoの作り方は以前ご紹介しましたが、簡単に。

ツール > プラグイン > プラグインマネージャ > 新規 > 今回は2点型オブジェクト

定義の編集 : パラメータの編集

スクリプトの編集 : 上のスクリプトのコピー

ツール > 作業画面の編集 > つけた名前を探す > 使う の流れです。

コチラは参考のURLです。

vsoファイル自体のダウンロードは以下となります。

Follow me!

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です