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ファイル自体のダウンロードは以下となります。
3本注釈のオブジェクト
1 ファイル 4.49 KB