CADとPython学習 13 辞書で図形情報を管理
Pythonの辞書形式は情報管理に便利です。図形には様々な情報があるため、辞書を使って図形情報を管理します。
Vectorworksのサンプル
リストとの違いもわかるように、リストも作成してダイアログに鳴らしています。
基本的な流れとしては、
① 図形を選択 → ②関数の戻り値として変数に加える → ③変数の状態で辞書に追加
def getAttr(hand): # 属性の辞書を返す
attrDict = {}
fillType = vs.GetObjectVariableInt(hand, 696)
boo, fillName = vs.GetVectorFill(hand)
fillpat = vs.GetFPat(hand)
attrDict["タイプ"] = fillType
attrDict["パターン"] = fillpat
attrDict["リソース"] = boo
if boo == False:
fillName = None
attrDict["名前"] = fillName
red, green, blue = vs.GetFillFore(hand)
color = vs.RGBToColorIndex(red, green, blue)
attrDict["面前RGB"] = [red, green, blue]
attrDict["面前色"] = color
red, green, blue = vs.GetFillBack(hand)
color = vs.RGBToColorIndex(red, green, blue)
attrDict["面後RGB"] = [red, green, blue]
attrDict["面後色"] = color
boo, penOpa, fillOpa = vs.GetOpacityN(hand)
attrDict["面透明"] = fillOpa
red, green, blue = vs.GetPenFore(hand)
color = vs.RGBToColorIndex(red, green, blue)
attrDict["線RGB"] = [red, green, blue]
attrDict["線色"] = color
attrDict["線透明"] = penOpa
lineWide = vs.GetLW(hand)
lineStyle = vs.GetLSN(hand)
attrDict["線幅"] = lineWide
attrDict["ラインタイプ"] = lineStyle
return attrDict
hand = vs.FSActLayer()
fillType = vs.GetObjectVariableInt(hand, 696)
boo, fillName = vs.GetVectorFill(hand)
attrList = []
attrList.append(fillType)
attrList.append(fillName)
vs.AlrtDialog(str(attrList))
attrDict = getAttr(hand)
vs.AlrtDialog(str(attrDict))