AutoCAD VBAでダイナミックブロックの名称が検索されません。

投稿者: Anonymous Autocad 2008 を使用しています。 図面内にダイナミックブロックがあり、移動や回転を行いたいのですが、 VBAでダイナミックブロックを操作の対象とするために、名称を比較しながら行っています。 For Each objEntity In ThisDrawing.ModelSpace ‘ 取り出された図形が対象を判定 If objEntity.ObjectName = “AcDbBlockReference” Then If objEntity.Name = “ダイナミックブロック1” Then ‘ 対象物を回転 rotationAngle = rrangle objEntity.Rotate jiku1, rotationAngle ダイナミックブロック名称を、”ダイナミックブロック1”としているのですが検索されません。 “*U11″や”*U33″で検索されます。 どなたかご教授いただけないでしょうか。 よろしくお願いいたします。 解決 VBAはわかりませんが、AutoLispとAutoCADのランタイムについてそれなりに知っているのでご回答いたします。まずダイナミックブロックは例えばグリップでストレッチしたりすると名前が*Uで始まるブロック名(匿名ブロック)に変化するのはご存知ですね。 http://lee-mac.com/effectivename.html 上記サイトにlispの例ですが、ダイナミックブロックの名前を得る方法が書かれており、おそらくVBAならば objEntity.EffectiveName なるプロパティが使用可能ではないでしょうか?バージョンなどによって使用できない可能性などがあると思いますがお試しください。 また通常のブロックにはこのプロパティがない可能性があると思いますので、上記の通りif文で処理を分岐してあげてください。 回答者: Anonymous

AutoCADでブロック名称を変更したい

投稿者: Anonymous お世話になっております。 AutoCAD2008 VBAについての質問です。 現存するブロックの名称を変更したいのですが、方法がわかりません。 現状、下記のようにプログラムを作成しています。 Dim objEntity As AcadEntity For Each objEntity In ThisDrawing.ModelSpace ‘取り出された図形のAutoCADクラス名により対象か否かを判定 If objEntity.ObjectName = “AcDbBlockReference” Then For iii = 1 To 1000 ii = 1000 – iii + 1 If Val(Right(objEntity.Name, 3)) = ii Then charln = Len(Str(Val(Right(Str(ii), 3)) + 1)) juki_edaban = Right(“000” + Right(Str(ii + 1), charln…(Continue Reading)

AutoCAD VBAロード時の現象

投稿者: Anonymous AutoCAD2012を使用しているのですが、下記の現象が起こります。 VBAをロードしAutoCADウィンドウを最小にする。 タスクバーから再びAutoCADウィンドウをクリックして開こうとしても、ワンクリック開く事ができない。 (VBAをロードしていない状態ではクリックして開く事が出来ました。) なにか解決方法はありませんか? OSはWindows7 64bitです。 よろしくお願いいたします。 解決 システム変数taskbarの値を0にすると回避できましたので、こちらで回避されてはどうでしょうか。 回答者: Anonymous

AutoCAD 図形を選択するVBAマクロについて

投稿者: Anonymous お世話になっております。 AutoCADのVBAの開発についての質問です。 図面内の全ての図形を探索して「A」という名前のブロックを検索し、その属性情報を変更するマクロを作成しています。 For Each objEntity In ThisDrawing.ModelSpace If objEntity.ObjectName = “AcDbBlockReference” Then Set objEntity2 = objEntity If InStr(objEntity2.Name, “A”) > 0 Then objEntity3 = objEntity2.GetAttributes() objEntity3(0).TextString = Left(objEntity3(0).TextString, 10) End If End If Next この方法だと図形が数千個存在する場合、10秒程かかります。 高速に検索できる方法がありましたらご教授ください。 よろしくお願いします。 解決 selectionSetのフィルター機能を使用してみてください。 回答者: Anonymous

AutoCADの機能について

投稿者: Anonymous AutoCADについての質問です。 AutoCAD2018でモデルタブで作業する時、どんどん画層増えていき作業したい画面にするのが大変です。 増えていく画層の中で、現在表示して作業している何個かの画層だけを登録して(例えば天伏図を作図する時は、0画層、Defpoint画層、躯体画層、通り芯画層、天井画層、寸法画層、照明器具画層、文字画層で構成)、他の作業(床伏図等)をしていても一発で構成を登録した画面になるような機能はありますか? 解決 「画層プロパティ管理」で右クリック→「画層状態を保存・復元」 これで現在の画層の表示状態を名前付きで保存したり、復元することができます。 回答者: Anonymous