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))

Follow me!

コメントを残す

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