Dynamoサンプル:Civil3Dのブロック属性

2022/11/14に公開

ブロックの名前から図面内のブロック参照を取得

Document.BlockByNameBlock.BlockReferences を使用。

ブロック属性の名称から内容を取得

BlockReference.AttributeByTag を使用。

ブロック属性の内容を入力

BlockReference.SetAttributeByTag を使用。リストの並びをそろえること。

エラー対処

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

ブロックの属性同期

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

ブロック内のすべての属性のオブジェクトを取得

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

Discussion