✏
Dynamoサンプル:Civil3Dのブロック属性
ブロックの名前から図面内のブロック参照を取得
Document.BlockByName と Block.BlockReferences を使用。

ブロック属性の名称から内容を取得
BlockReference.AttributeByTag を使用。

ブロック属性の内容を入力
BlockReference.SetAttributeByTag を使用。リストの並びをそろえること。


エラー対処

Excel からデータを取り込んでる場合は、 Data.ImportExcel の readAsStrings を True にします。
Dynamo で数字を扱っている場合は String from Object を使って文字に変換。
nullは Object.IsNull と If を使って空白文字に変換します。

ブロックの属性同期
もっといい方法があるのかもしれないけど、私にはこれが精一杯・・・。
「Camber」パッケージのDocument.SendCommandを使用し、「attsync」コマンドを実行。「s」オプションを使用し、オブジェクトはLISP (handle ハンドル名) でハンドル名から取得しています。

ブロック内のすべての属性のオブジェクトを取得
「Camber」パッケージのConvert to Camber Objectを使用しています。Block.Objectsだと、文字もブロック属性も「Text」オブジェクトだったのです・・・。

Discussion