このページについて | ||||||||||||||||||||||||||
このページは、mura's home の AutoCAD掲示板 で、当方の発言(書込み)がある以下の掲示板の内容です。
タイトルおよび質問内容は上記より引用しています。 引用した質問内容は、バックカラーが となっています。 当方の発言は、バックカラーが となっています。 その他の著作権者の掲載許可を得ていない発言内容は削除(リンクを除く)しています。 また、当方では、削除部分の正当な著作権保持者を判断出来ませんので、 ご連絡を頂いても、復活させることは出来ません。ご了承下さい。
|
いつも参考にさせて頂いています!
スクリプトメーカーを使って、外部参照した図枠をバインド、分解、パージの作業をしています。
バインドまではちゃんと動くのですが、分解で要素選択をする時に止まってしまいます。
ちなみにこのような・・・
BINDTYPE
1
_xref
B
*
_explode
P
_PURGE
_ALL
*
N
_Qsave
close
普通に図面を開いて手入力だとうまくいきます。
_explodeの要素選択で「P」がダメなのでしょうか・・・。
どなたかご存知の方、アドバイスをお願いします。
図面が500以上あるので何とか解決したいと思っています。
よろしくお願いします。
著作権者の許可を得ていないため削除
著作権者の許可を得ていないため削除
著作権者の許可を得ていないため削除
>今日中に終わらせなければならないので、
今回は間に合わないかもしれませんが、、、
R版をご使用のようなので、
バインドと分解を、VBAで処理させる方法はいかが?
VBA部分のエラー処理をしていませんので、
必ずデータのバックアップを取った上でご利用下さい。
スクリプトメーカーの本文
; _Open "[FULLNAME]" _Zoom _Extents ;------------------- ;外部参照した図枠のバインドと分解 -vbarun XRefBind_and_Explode ;------------------- -PURGE _ALL * _No _Qsave close |
Option Explicit ' 開発・動作確認 2000i 'XRefBind_and_Explode Public Sub XRefBind_and_Explode() Dim obj As AcadObject Dim tempBlock As AcadBlock Dim I As Long Dim XRefBindobjs() As Variant Dim explodedObjects As Variant On Error GoTo Err: ReDim Preserve XRefBindobjs(0 To 0) For Each tempBlock In ThisDrawing.Blocks If Not (tempBlock.IsLayout) And tempBlock.IsXRef Then '外部参照ブロック '外部参照定義のバインド ' FALSE:シンボル名の先頭には何も付きません ' TRUE :<blockname>$x$ がシンボル名の先頭に付きます '------------------------------------------------- ThisDrawing.Blocks.Item(tempBlock.Name).Bind False ReDim Preserve XRefBindobjs(0 To UBound(XRefBindobjs) + 1) 'シンボル名(ブロック名)を格納 XRefBindobjs(UBound(XRefBindobjs)) = tempBlock.Name End If Next If UBound(XRefBindobjs) > 0 Then 'モデル空間全体を検索 For Each obj In ThisDrawing.ModelSpace If TypeName(obj) = "IAcadBlockReference" Then 'ブロック参照 For I = 1 To UBound(XRefBindobjs) If obj.Name = XRefBindobjs(I) Then 'バインドしたシンボル名と一致 '構成要素オブジェクトに分解 explodedObjects = obj.Explode 'ブロックを削除 obj.Delete Set explodedObjects = Nothing Exit For End If Next End If Next obj End If Exit Sub Err: Resume Next End Sub |
著作権者の許可を得ていないため削除
>バインド後Entlastでの選択は出来るのでしょうか?
希望する図形名は取得出来ません。
Entlastで取得出来るのは1つの図形名のみですが、
外部参照の定義(パス)は1つでも、
普通のブロック同様に複数配置が可能だからです。
外部参照はブロックの特殊なもので、
普通のブロック同様に定義とブロック参照(インスタンス)があります。
バインドは、外部参照の定義(パス)を普通のブロック定義に変更する
(定義をファイル内部に取込む)のみで、
普通のブロックのブロック参照(インスタンス)に当たるデータは
すでに配置済みなので、
バインド前後で、Entlastで得られる図形名に変わりはありません。
著作権者の許可を得ていないため削除
著作権者の許可を得ていないため削除
著作権者の許可を得ていないため削除