オフセットされたオブジェクトのプロパティは
オフセット元のオブジェクトのプロパティと同じです。
その為、オフセットされたオブジェクトのプロパティを変更するには
"CHANGE"または"CHPROP"コマンドで変更しなければなりません。
【マクロ作成】■初級
6. オブジェクトプロパティ変更
9. 現在の設定を変更して作図
これらを応用し、マクロを作成してみましょう。
それでは
オフセットしたオブジェクトを現在の画層に変更するマクロを
作成してみましょう。
■その1
1)"OFFSET"[オフセット]コマンドを実行
^C^C_offset; |
2)オフセット間隔を記入するする為、\を記入
^C^C_offset;\ |
3)オフセットするオブジェクト選択/オフセットする側の点を指定
^C^C_offset;\\\; |
4)"CHPROP"コマンド実行
^C^C_offset;\\\;_chprop; |
5)オフセットされたオブジェクトを"LAST(L)"で選択
^C^C_offset;\\\;_chprop;L;; |
6)画層を変更する為、"CHPROP"オプション[画層(LA)]記入
^C^C_offset;\\\;_chprop;L;;LA; |
7)DIESEL開始"$M="記入
^C^C_offset;\\\;_chprop;L;;LA;$M= |
8)現在の画層を示すシステム変数"CLAYER"をDIESEL関数で記入
^C^C_offset;\\\;_chprop;L;;LA;$M=$(getvar,clayer);; |
これで、オフセットされたオブジェクトを、現在画層に変更出来ますが
ここで、注意しなければならないのが、選択オプション"LAST[最後(L)]"です。
この"最後"と言う意味は、現在開いている図面ファイルにおいて
あくまでも、現在表示中の画面内で
最後に描かれたオブジェクトを指します。
その為、今回のマクロで、"オフセット間隔"を記入する際
画面から外れてしまう程の大きな数値を記入してしまうと
"CHPROP"コマンド実行後の、選択オプション"LAST[最後(L)]"で
オフセットされたオブジェクトが選択されず
表示中の画面内で、1番最後に描かれたオブジェクトを選択してしまいます。
これを回避するには、"ZOOM"[ズーム]コマンドを使用すると良いでしょう。
コマンド: zoom
窓のコーナーを指定, 表示倍率を入力(nX または nXP) または
[図面全体(A)/中心点(C)/ダイナミック(D)/オブジェクト範囲(E)/前画面(P)/倍率(S)/窓(W)]
※コマンド内容に関してはヘルプ参照下さい。
"ZOOM"[ズーム]コマンドにもオプションがあります。
このオプションを使用すれば、一発で図面全体を表示できる為
今回の様なマクロで、使用すると良いでしょう。
^C^C_offset;\\\;_zoom;a;_chprop;L;;LA;$M=$(getvar,clayer);; |
また、途中"ZOOM"[ズーム]コマンドを使用し
マクロで画面表示状態を変更した場合
最後に画面状態を元に戻しておくと、作業上便利だと思います。
^C^C_offset;\\\;_zoom;a;_chprop;L;;LA;$M=$(getvar,clayer);;_zoom;p; |
ただし、"ZOOM"[ズーム]コマンドを使用すると
見た目高速で画面が切り替わるので、回避したい場合は
"COPYBASE"[基点コピー]コマンド もしくは "COPYCLIP"[コピー]コマンド
を使用し"PASTECLIP"[貼り付け]コマンドにて可能です。
■その2 「基点コピー(COPYBASE)」
1)"OFFSET"[オフセット]コマンドを実行
^C^C_offset; |
2)オフセット間隔を記入後、オブジェクトを選択
^C^C_offset;\\ |
3)ここで1度"OFFSET"[オフセット]コマンドをエンターで終了させます
^C^C_offset;\\; |
4)"SELECT"コマンド実行
^C^C_offset;\\;_select; |
※ここで、"SELECT"コマンドにて、一旦"@"で選択しておかなければ
"COPYBASE"[基点コピー]コマンドでの、オブジェクト選択時に不都合
5)選択したオブジェクトを"@"で指定
^C^C_offset;\\;_select;non;@;; |
6)"COPYBASE"[基点コピー]コマンド実行
^C^C_offset;\\;_select;non;@;;_copybase; |
7)基点コピーの基点を、"@"で指定
^C^C_offset;\\;_select;non;@;;_copybase;non;@; |
8)"SELECT"コマンドで指定したオブジェクトを[直前(P)]で選択
^C^C_offset;\\;_select;non;@;;_copybase;non;@;p;; |
9)"CHPRO"コマンド実行し[直前(P)]で選択
^C^C_offset;\\;_select;non;@;;_copybase;non;@;p;;_chprop;p;; |
10)"CHPRO"コマンドのオプション[画層(LA)]を記入
^C^C_offset;\\;_select;non;@;;_copybase;non;@;p;;_chprop;P;;LA; |
11)DIESEL関数にて、現在画層のシステム変数"CLAYER"を呼出し
^C^C_offset;\\;_select;non;@;;_copybase;non;@;p;;_chprop;P;;LA;$M=$(getvar,clayer);; |
12)再度"OFFSET"[オフセット]コマンドを実行
^C^C_offset;\\;_select;non;@;;_copybase;non;@;p;;_chprop;p;;LA;$M=$(getvar,clayer);;_offset; |
13)オフセット間隔は最初に記入したのでエンター
^C^C_offset;\\;_select;non;@;;_copybase;non;@;p;;_chprop;p;;LA;$M=$(getvar,clayer);;_offset;; |
14)オフセットするオブジェクトは、最初に指定した点を"@"で指定
^C^C_offset;\\;_select;non;@;;_copybase;non;@;p;;_chprop;p;;LA;$M=$(getvar,clayer);;_offset;;non;@; |
15)ユーザ入力"\"にて、オフセットする側を指定
^C^C_offset;\\;_select;non;@;;_copybase;non;@;p;;_chprop;p;;LA;$M=$(getvar,clayer);;_offset;;non;@;\; |
16)オフセット元のオブジェクトを"ERASE"[削除]コマンドにて削除
^C^C_offset;\\;_select;non;@;;_copybase;non;@;p;;_chprop;p;;LA;$M=$(getvar,clayer);;_offset;;non;@;\;_erase;p;; |
17)"PASTECLIP"[貼り付け]コマンド実行
^C^C_offset;\\;_select;non;@;;_copybase;non;@;p;;_chprop;p;;LA;$M=$(getvar,clayer);;_offset;;non;@;\;_erase;p;;_pasteclip; |
18)貼り付け位置を、システム変数"LASTPOINT"で指定
^C^C_offset;\\;_select;non;@;;_copybase;non;@;p;;_chprop;p;;LA;$M=$(getvar,clayer);;_offset;;non;@;\;_erase;p;;_pasteclip;non;$(getvar,lastpoint); |
※"$M="直前の座標値が"LASTPOINT"に格納されています。
この様に、"ZOOM"コマンドを使用せず
"オフセットしたオブジェクトの画層を変更するマクロ"を作成することも出来ます。
"ZOOM"コマンドにて作成することも、覚えておくと便利ですが
作業を効率良くする為にも、1つの作り方に執着せず
色々なコマンドを使用し、別の方法でマクロを作成することも大事です。
AutoCAD Mechanical 基礎ハンドブック 図面の作成・修正作業を大幅に向上させる.../オートデスク株式会社

¥4,410
Amazon.co.jp