Vectorworks ビューポートを作る(1) リスト

python のリスト

CADでの操作は、条件に沿って複数の図形やレイヤの処理を行うことがよくあります。

●処理したい図形を複数選択して線種を変える

●複数のレイヤの設定を選択して一括で変える

コンピュータの処理は高速なので、都度選択するよりも一旦選択対象を絞って、処理を行うとあっという間です。多くのCADでは図形の選択条件や検索条件の関数があります。

VectorworksだとForEachObject という関数で条件を満たした図形を一括で処理します。あとはプログラミング言語で処理するリストを作って、まとめて手続きを行うこともできます。

今回のサンプルはVectorworksでのリスト作り。クラスやレイヤ、登録画面のリストを作ります。AlrtDialogという関数で表示します。

import vs
import os

def create_Vlist():#登録画面のリストを作る
    n = vs.SheetNum() #登録画面の数
    vlist = []
    i =1
    for i in range(1,n+1):
        v_String = vs.SheetList(i)
        vlist.append(v_String)
        i += 1
    return vlist

#ーーーーーーーーーーーーーーーーーーー
def create_layer_list():#デザインレイヤ名のリストを作る
    n = vs.NumLayers() #レイヤの数
    layer_list = []
    layerH = vs.FLayer()
    layerName = vs.GetLName(layerH)
    layer_list.append(layerName)

    i =1
    while i  <= int(n-1):
        layerH = vs.NextLayer(layerH)
        boo = vs.SetSheetLayerUserOrigin(layerH, 0, 0)#シートレイヤの判別
        if boo == True: #Trueの場合はシートレイヤなので何もしない
            i += 1
            continue
		
        layerName = vs.GetLName(layerH)
        layer_list.append(layerName)
        i += 1
    
    return layer_list

#ーーーーーーーーーーーーーーーーーーーー
def classNameList():#クラス名のリストを作る
    n = vs.ClassNum()
    class_list = []
    i =1
    
    for i in range(1,n+1):
        c_Name = vs.ClassList(i)
        class_list.append(c_Name)
        i += 1
    
    return class_list

vlist = create_Vlist()
layer_list = create_layer_list()
class_list = classNameList()

vs.AlrtDialog('登録画面のリストは'+vs.Chr(13) + str(vlist))
vs.AlrtDialog('デザインレイヤのリストは'+vs.Chr(13) + str(layer_list))
vs.AlrtDialog('クラスのリストは' + vs.Chr(13) + str(class_list))

リソースマネージャでスクリプトを作成して(上をペーストすればできます)実行します。A&AのHPからダウンロードしたチュートリアルデータに登録画面を追加しました。

クラスが多いですね。こんなに分けてレイヤと別で管理が大変そうです。2020あたりで一括のリネーム機能も追加されましたが、クラスリストのクラスそれぞれに'a'を追加する事などもできます。

Follow me!

コメントを残す

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