サブメイン
ドロードック = トライキャスト(thisdoc.document、ドロードキュメント)
もし(drawdocは何もない)
messagebox.show("このルールは、描画、"ilogic") でのみ実行できます。
フィードバック
端 もし
変更layerofoccurrencecurves()
エンドサブ
drawdocumentとしてのプライベートドローク
パブリック サブ 変更layerofoccurrencecurves()
' 発生を処理し、トランザクションでラップする
「プロセス全体が単一のundo操作で元に戻すことができます。
トランザクションとしてダイムトランス
trans = thisapplication.transactionmanager.starttransaction(drawdoc, "材料によるレイヤーを描画する")
お問い合わせ
各dsheet は、dodoc のシートとして使用します。 シート
dsheet.drawingviews のドロービューとして各ドロービュー
'すべての作業を行う再帰関数を呼び出します。
dim docdesc ドキュメント記述子として
docdesc = drawview.referenceddocumentdescriptor
もし (docdesc が何もない) なら、
もし(docdesc.referenceddocumenttype = documenttypeenum.kassemblydocumentobject) それから
アセンブリcomponentdefinition として asmdef
asmdef = docdesc.referenceddocument.componentdefinition
processoccurrences(drawview、asmdef.occurrences)
soif (docdesc.referenceddocumenttype = documenttypeenum.kpartdocumentobject) それから
partdocument = トライキャスト(docdesc.referenceddocument,partdocument) として dim の部分ドキュメント
もし(partdocは何もない)、
processpart(drawview、partdoc) の処理
端 もし
次へ
次へ
例外として ex をキャッチ
trans.abort()
投げる ex
エンドトライ
トランスエンド()
エンドサブ
サブのprocessoccurrences(drawviewとしてバイバルのdrawview、performoccurrencesとしてバイバルの発生)
' 発生の現在のコレクションを通して反復します。
occ を componentoccurrence として薄暗くして下さい
発生中の各occに対して
if (occ.suppressed) は、
もし(occ.definition が何もない)なら、
もし (occ.referenceddocumentdescriptor が何もない) なら、
if (occ.referenceddocumentdescriptor.referencemissing) は、
'この発生が部分かアセンブリであるかどうか確認して下さい。
occ.definitiondocumenttype = documenttypeenum.kpartdocumentobject の場合 それから
'** それは部分なので材料を得る
ドキュメント = occ.definition.document
もし(サブドキュメントが何もない)なら、
パートドキュメントをpartdocument = subdocとして定義
レイヤー = getorcreatelayer(partdoc)
' この発生に関連する曲線のすべてを取得します。
エラーで次の再開
ドローカブをドローカブとして
ドキュルフ=drawview.drawingcurves(occ)
err.number = 0 の場合
エラーのgoto 0
setdrawingcurveslayer(ドローカーブ、ドロービュー、ニューレイヤ)
端 もし
エラーのgoto 0
その他
'それはアセンブリなので、その内容を処理します。
コールのprocessoccurrences (drawview、occ.suboccurrences)
端 もし
次へ
エンドサブ
sub processpart(drawview as Drawingview、バイバルpartdocをpartdocumentとして)
レイヤー = getorcreatelayer(partdoc)
エラーで次の再開
ドローカブをドローカブとして
ドローカーブ = ドロービュー.drawingcurves()
err.number = 0 の場合
エラーのgoto 0
setdrawingcurveslayer(ドローカーブ、ドロービュー、ニューレイヤ)
端 もし
エンドサブ
レイヤーとして関数 getorcreatelayer(byval 部分ドキュメント)
dim の物質的な名前 = partdoc.componentdefinition.material.name
「レイヤーがこの素材に存在するか確認します。
層を層として薄暗くして下さい
レイヤー = drawdoc.stylesmanager.layers
エラーで次の再開
層として新しい層を薄暗くして下さい
newlayer=layer.item(素材名)
もし err.number <> 0 それから
エラーのgoto 0
' 任意のレイヤーをコピーして名前を付けます
材料の「。
newlayer=layer.item(1).copy(材料名)
' レイヤーの属性を色を使うように設定します。
' は固体ライン タイプおよび特定の幅を持っています。
'newlayer.color = newcolor の
newlayer.linetype = linetypeenum.kcontinuouslinetype
'newlayer.lineweight = 0.02
端 もし
エラーのgoto 0
newlayer を返す
エンド機能
サブ setdrawingcurveslayer(drawcurvesenumerator、drawview as Drawingview、deval newlayer asレイヤ)
'空のコレクションを作成します。
dim objcoll として objectcollection
objcoll = thisapplication.transientobjects.createobjectcollection()
' コレクションに曲線セグメントを追加します。
dim はデッサンカーブとして引くこと
ドローカブの各ドローカブのために
ドローカベスメントとしてのディムセグメント
ドローカーブの各セグメント セグメント
objcoll.add(セグメント)
次へ
次へ
' すべてのセグメントのレイヤーを変更します。
drawview.parent.changelayer(objcoll、ニューレイヤ)
エンドサブ