-
1:se
:
2024/05/30 (Thu) 16:27:59
-
https://bbs2.fc2.com//bbs/img/_816400/816339/full/816339_1717054079.png
こんにちは。
autocad2024を使用しています。
四角い線上に、配列複写する方法を知りたいです。
もし、マクロ・リスプで作成可能でしたら、よろしくお願いします。
-
2:chibi-tom
:
2024/05/30 (Thu) 17:16:55
-
よくわからないのですが
ご提示の図にならなくないですか?(6000がピッチ140で割り切れません)
自動調整とは140に近似とすることですか?
-
3:se
:
2024/05/30 (Thu) 20:32:22
-
chibi-tom様
ありがとうございます。
自動調整とは140に近似とすることですか?
おっしやるとおりです。 四角の角に1つどうしても配置したいのです。
それぞれの線の長さを検知して、その間を自動で割り付けるのが希望です。
何卒 よろしくお願いいたします。
-
4:chibi-tom
:
2024/05/31 (Fri) 08:32:30
-
もう少し詳細の情報が欲しいところですね
>四角の角に1つどうしても配置したい
・四隅共ということで良いですか?
その他
・四角はポリラインですか線分ですかどちらの可能性も有りますか?
・四角の内部にオブジェクトが有ることはありますか?
・配列するオブジェクトは円のみですか違う場合も有りますか
・配列するオブジェクトは必ず左上に配置済みですか?
・割り切れない場合はピッチは広げますか?縮めますか?
以上、思う付く欲しい情報です
ちなみに配列複写して四角の内部を削除すればそんなに手間じゃないと思いますが
-
5:se
:
2024/05/31 (Fri) 10:20:11
-
chibi-tom様
ありがとうございます。ご質問について
>四角の角に1つどうしても配置したい
・四隅共ということで良いですか?・・・・・四隅ともに1個ということでよいです。
その他
・四角はポリラインですか線分ですかどちらの可能性も有りますか?・・・ポリラインでお願いします。
ほぼポリラインと考えていただきたいです。
・四角の内部にオブジェクトが有ることはありますか?・・・・・・内部に図形はございません。
・配列するオブジェクトは円のみですか違う場合も有りますか・・・・Φ150の円のみです。
・配列するオブジェクトは必ず左上に配置済みですか?・・・・・・はい、左上に配置しています。場合によっては右上になることもあります。
・割り切れない場合はピッチは広げますか?縮めますか?・・・・・ピッチは縮めてあるほうが良いです。
以上 よろしくお願いいたします。
パス配列のデバイダなども試してみたのですが、思うようにならず投稿させていただきました。
キャドはむつかしいですね。
chibi-tom様 お力添えをお願いします。
-
6:chibi-tom
:
2024/05/31 (Fri) 13:09:16
-
こんな感じでどうでしょうか?
*^C^C$M=setenv;to;0;$(if,$(=,$(getenv,to),0),;pt1;配列ピッチ^X\offset;;配列オブジェクト選択(R-Clickで終了)^X\$M="""$(if,$(getvar,CMDACTIVE),;select;non;@;non;@;;copybase;cen;@;p;;erase;p;;setenv;to;1,^Csetenv;to;0)""")$(if,$(=,$(getenv,to),1),ucs;m;end;基点(矩形の左下)を指定^X\undo;be;explode;non;0<0;lengthen;l;dy;;setenv;ly1;$M="""$(getvar,perimeter)""";erase;l;;lengthen;l;dy;;setenv;to;2)$(if,$(=,$(getenv,to),2),;lx1;$(getvar,perimeter);undo;e;u;setenv;by1;$(rtos,$(/,$(getenv,ly1),$(getenv,pt1)),2,0);;bx1;$(rtos,$(/,$(getenv,lx1),$(getenv,pt1)),2,0);;to;3)$(if,$(=,$(getenv,to),3),;pty1;$(if,$(<=,$(/,$(getenv,ly1),$(getenv,by1)),$(getenv,pt1)),$(/,$(getenv,ly1),$(getenv,by1)),$(/,$(getenv,ly1),$(+,1,$(getenv,by1))));;to;4)$(if,$(=,$(getenv,to),4),;ptx1;$(if,$(<=,$(/,$(getenv,lx1),$(getenv,bx1)),$(getenv,pt1)),$(/,$(getenv,lx1),$(getenv,bx1)),$(/,$(getenv,lx1),$(+,1,$(getenv,bx1))));;to;5)$(if,$(=,$(getenv,to),5),;by1;$(if,$(<=,$(/,$(getenv,ly1),$(getenv,by1)),$(getenv,pt1)),$(+,$(getenv,by1),1),$(+,$(getenv,by1),2));;to;6)$(if,$(=,$(getenv,to),6),;bx1;$(if,$(<=,$(/,$(getenv,lx1),$(getenv,bx1)),$(getenv,pt1)),$(+,$(getenv,bx1),1),$(+,$(getenv,bx1),2));;to;7)$(if,$(=,$(getenv,to),7),pasteclip;non;0<0;-array;l;;R;$(getenv,by1);$(getenv,bx1);$(getenv,pty1);$(getenv,ptx1);setenv;to;8)$(if,$(=,$(getenv,to),8),erase;c;non;$(getenv,pt1)","$(getenv,pt1);non;$(-,$(getenv,lx1),$(getenv,pt1))","$(-,$(getenv,ly1),$(getenv,pt1));;ucs;p;^Csetenv;to;0)^M
使用方法
1.マクロ起動
2.配列ピッチ入力
3.配列オブジェクト選択
4.基点(矩形の左下の角)を指定
以上です
-
7:chibi-tom
:
2024/05/31 (Fri) 13:32:14
-
ピッチが広がっても良ければ
こんな感じです
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),;pt1;配列ピッチ^X\offset;;配列オブジェクト選択(R-Clickで終了)^X\$M="""$(if,$(getvar,CMDACTIVE),;select;non;@;non;@;;copybase;cen;@;p;;erase;p;;setenv;to;1,^Csetenv;to;0)""",,,,,)$(nth,$(getenv,to),,ucs;m;end;基点(矩形の左下)を指定^X\undo;be;explode;non;0<0;lengthen;l;dy;;setenv;ly1;$M="""$(getvar,perimeter)""";erase;l;;lengthen;l;dy;;setenv;to;2,,,,)$(nth,$(getenv,to),,,;lx1;$(getvar,perimeter);undo;e;u;setenv;by1;$(+,1,$(rtos,$(/,$(getenv,ly1),$(getenv,pt1)),2,0));;bx1;$(+,1,$(rtos,$(/,$(getenv,lx1),$(getenv,pt1)),2,0));;to;3,,,)$(nth,$(getenv,to),,,,pasteclip;non;0<0;-array;l;;R;$(getenv,by1);$(getenv,bx1);$(/,$(getenv,ly1),$(-,$(getenv,by1),1));$(/,$(getenv,lx1),$(-,$(getenv,bx1),1));setenv;to;4,)$(nth,$(getenv,to),,,,,erase;c;non;$(getenv,pt1)","$(getenv,pt1);non;$(-,$(getenv,lx1),$(getenv,pt1))","$(-,$(getenv,ly1),$(getenv,pt1));;ucs;p;^Csetenv;to;0)^M
使用方法は同じです
-
8:nekonoko
:
2024/05/31 (Fri) 14:50:39
-
はじめまして、nekonokoと申します。
seさん同様に、autocad2024を使用しています。
上記のことができるようになったら便利だなと思い、拝見させていただきました。
chibi-tomさんが13時9分頃にUPしてくださったマクロを試してみたのですが、うまく行かず下記のようになりました。
こちらの操作が誤っていると思うのですが、原因が分からず。。。
もし原因が分かりましたらご教授いただけますと幸いです。
よろしくお願いします。
コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <0>: 0
コマンド:
コマンド:
SETENV
変数名を入力: pt1
値 <140>: 配列ピッチ*削除*
配列ピッチ
コマンド:
コマンド: offset
現在の設定: 元のオブジェクトを消去=いいえ 画層=元のオブジェクト OFFSETGAPTYPE=0
オフセット距離を指定 または [通過点(T)/消去(E)/画層(L)] <通過点>:
オフセットするオブジェクトを選択 または [終了(E)/元に戻す(U)] <終了>: 配列オブジェクト選択(R-Clickで終了)*削除*
配列オブジェクト選択(R-Clickで終了)
通過点を指定 または [終了(E)/一括(M)/元に戻す(U)] <終了>:
コマンド: select
オブジェクトを選択: non
@
認識された数: 1
オブジェクトを選択: non
@
認識された数: 1 (重複している数: 1), 総数 1
オブジェクトを選択:
コマンド: copybase
基点を指定: cen
どこの @
オブジェクトを選択: p
認識された数: 1
オブジェクトを選択:
コマンド: erase
オブジェクトを選択: p
認識された数: 1
オブジェクトを選択:
寸法の自動調整が失われました。
コマンド: setenv
変数名を入力: to
値 <0>: 1
コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <1>: 0
コマンド:
コマンド: ucs
現在の UCS 名: *ワールド*
UCS 原点を指定 または [面(F)/名前の付いた UCS(NA)/オブジェクト(OB)/直前(P)/ビュー(V)/ワールド(W)/X/Y/Z/Z 軸(ZA)] <ワールド>: m
新しい原点を指定 または [Z 深さ(Z)] <0,0,0>: end
どこの 基点(矩形の左下)を指定*削除*
基点(矩形の左下)を指定
コマンド: undo
現在の設定: 自動 = オン, コントロール = すべて, 合成 = はい, 画層 = はい
取り消す操作の数を入力 または [自動(A)/コントロール(C)/開始(BE)/終了(E)/マーク(M)/後退(B)] <1>: be
コマンド: explode
オブジェクトを選択: non
0<0
コマンド: lengthen
計測するオブジェクトを選択 または [増減(DE)/比率(P)/全体(T)/ダイナミック(DY)] <ダイナミック(DY)>: l
このオブジェクトは長さの定義を持ちません。
計測するオブジェクトを選択 または [増減(DE)/比率(P)/全体(T)/ダイナミック(DY)] <ダイナミック(DY)>: dy
変更するオブジェクトを選択 または [元に戻す(U)]:
コマンド: setenv
変数名を入力: ly1
値 <0>: 0
コマンド:
コマンド: erase
オブジェクトを選択: l
認識された数: 1
オブジェクトを選択:
コマンド: lengthen
計測するオブジェクトを選択 または [増減(DE)/比率(P)/全体(T)/ダイナミック(DY)] <ダイナミック(DY)>: l
このオブジェクトは長さの定義を持ちません。
計測するオブジェクトを選択 または [増減(DE)/比率(P)/全体(T)/ダイナミック(DY)] <ダイナミック(DY)>: dy
変更するオブジェクトを選択 または [元に戻す(U)]:
コマンド: setenv
変数名を入力: to
値 <0>: 2
コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <2>: 0
コマンド:
コマンド:
SETENV
変数名を入力: lx1
値 <0>: 0
コマンド:
コマンド: undo
現在の設定: 自動 = オン, コントロール = すべて, 合成 = はい, 画層 = はい
取り消す操作の数を入力 または [自動(A)/コントロール(C)/開始(BE)/終了(E)/マーク(M)/後退(B)] <1>: e
コマンド: u
グループ LENGTHEN SETENV LENGTHEN EXPLODE
コマンド: setenv
変数名を入力: by1
値 <0>: 0
コマンド:
コマンド:
SETENV
変数名を入力: bx1
値 <0>: 0
コマンド:
コマンド:
SETENV
変数名を入力: to
値 <0>: 3
コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <3>: 0
コマンド:
コマンド:
SETENV
変数名を入力: pty1
値 <139.53488372>:
コマンド:
コマンド:
SETENV
変数名を入力:
コマンド:
コマンド: to
TOOLBAR ツールバー名を入力 または [すべて(ALL)]: 4
ツールバーが見つかりません。
-
9:chibi-tom
:
2024/05/31 (Fri) 15:20:10
-
nekonokoさん
"このオブジェクトは長さの定義を持ちません。"
このエラーが原因です
矩形と1つの円だけの図形でお試しください
寸法やポリライン以外のオブジェクトをピックしているようです
-
10:chibi-tom
:
2024/05/31 (Fri) 15:54:31
-
ちょっと修正してみました
*^C^C$M=setenv;to;0;$(if,$(=,$(getenv,to),0),;pt1;配列ピッチ^X\offset;;配列オブジェクト選択(R-Clickで終了)^X\$M="""$(if,$(getvar,CMDACTIVE),;select;non;@;non;@;;copybase;cen;@;p;;erase;p;;setenv;to;1,^Csetenv;to;0)""")$(if,$(=,$(getenv,to),1),offset;;矩形を選択(R-Clickで終了)^X\$M="""$(if,$(getvar,CMDACTIVE),;setenv;to;1;select;non;@;non;@;;copy;non;@;non;@;;non;@;non;@;erase;p;;zoom;o;l;;setenv;to;2,^Csetenv;to;0)""")$(if,$(=,$(getenv,to),2),ucs;ob;l;;z;270;undo;be;explode;l;lengthen;l;dy;;setenv;ly1;$M="""$(getvar,perimeter)""";erase;l;;lengthen;l;dy;;setenv;to;3)$(if,$(=,$(getenv,to),3),;lx1;$(getvar,perimeter);undo;e;u;setenv;by1;$(rtos,$(/,$(getenv,ly1),$(getenv,pt1)),2,0);;bx1;$(rtos,$(/,$(getenv,lx1),$(getenv,pt1)),2,0);;to;4)$(if,$(=,$(getenv,to),4),;pty1;$(if,$(<=,$(/,$(getenv,ly1),$(getenv,by1)),$(getenv,pt1)),$(/,$(getenv,ly1),$(getenv,by1)),$(/,$(getenv,ly1),$(+,1,$(getenv,by1))));;to;5)$(if,$(=,$(getenv,to),5),;ptx1;$(if,$(<=,$(/,$(getenv,lx1),$(getenv,bx1)),$(getenv,pt1)),$(/,$(getenv,lx1),$(getenv,bx1)),$(/,$(getenv,lx1),$(+,1,$(getenv,bx1))));;to;6)$(if,$(=,$(getenv,to),6),;by1;$(if,$(<=,$(/,$(getenv,ly1),$(getenv,by1)),$(getenv,pt1)),$(+,$(getenv,by1),1),$(+,$(getenv,by1),2));;to;7)$(if,$(=,$(getenv,to),7),;bx1;$(if,$(<=,$(/,$(getenv,lx1),$(getenv,bx1)),$(getenv,pt1)),$(+,$(getenv,bx1),1),$(+,$(getenv,bx1),2));;to;8)$(if,$(=,$(getenv,to),8),pasteclip;non;0<0;-array;l;;R;$(getenv,by1);$(getenv,bx1);$(getenv,pty1);$(getenv,ptx1);setenv;to;9)$(if,$(=,$(getenv,to),9),erase;c;non;$(getenv,pt1)","$(getenv,pt1);non;$(-,$(getenv,lx1),$(getenv,pt1))","$(-,$(getenv,ly1),$(getenv,pt1));;ucs;p;;p;zoom;p;^Csetenv;to;0)^M
使用方法
1.マクロ起動
2.配列ピッチ入力
3.配列オブジェクト選択
4.矩形を選択(たぶんどこでも大丈夫)
ただし寸法等の自動調整は解除になります<m(__)m>
-
11:nekonoko
:
2024/05/31 (Fri) 17:23:47
-
https://bbs2.fc2.com//bbs/img/_816400/816339/full/816339_1717143827.jpg
chibi-tomさん、ありがとうございます!
おっしゃる通り、寸法線がある状態で試していたので、隠してから試したら動作しました!
当初、添付画像の 図2 のような線に沿って円を配列複写する形が完成形なのかと勘違いしていたのですが、添付画像の 図1 のように、矩形のそれぞれの角に円がくるマクロになりますでしょうか?
(ちゃんとわかってなくてすみません・・・)
-
12:chibi-tom
:
2024/05/31 (Fri) 17:31:49
-
添付画像の 図2 のようなマクロを作ったつもりです
-
13:nekonoko
:
2024/06/01 (Sat) 21:00:30
-
chibi-tomさん
お返事が遅くなり申し訳ございません。
何度か試してみたのですが、図1の形になります。
ログは下記になります。
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <0>: 0
コマンド:
コマンド:
SETENV
変数名を入力: pt1
値 <140>: 配列ピッチ*削除*
配列ピッチ
コマンド:
コマンド: offset
現在の設定: 元のオブジェクトを消去=いいえ 画層=元のオブジェクト OFFSETGAPTYPE=0
オフセット距離を指定 または [通過点(T)/消去(E)/画層(L)] <通過点>:
オフセットするオブジェクトを選択 または [終了(E)/元に戻す(U)] <終了>: 配列オブジェクト選択(R-Clickで終了)*削除*
配列オブジェクト選択(R-Clickで終了)
通過点を指定 または [終了(E)/一括(M)/元に戻す(U)] <終了>:
コマンド: select
オブジェクトを選択: non
@
認識された数: 1
オブジェクトを選択: non
@
認識された数: 1 (重複している数: 1), 総数 1
オブジェクトを選択:
コマンド: copybase
基点を指定: cen
どこの @
オブジェクトを選択: p
認識された数: 1
オブジェクトを選択:
コマンド: erase
オブジェクトを選択: p
認識された数: 1
オブジェクトを選択:
コマンド: setenv
変数名を入力: to
値 <0>: 1
コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <1>: 0
コマンド:
コマンド: ucs
現在の UCS 名: *ワールド*
UCS 原点を指定 または [面(F)/名前の付いた UCS(NA)/オブジェクト(OB)/直前(P)/ビュー(V)/ワールド(W)/X/Y/Z/Z 軸(ZA)] <ワールド>: m
新しい原点を指定 または [Z 深さ(Z)] <0,0,0>: end
どこの 基点(矩形の左下)を指定*削除*
基点(矩形の左下)を指定
コマンド: undo
現在の設定: 自動 = オン, コントロール = すべて, 合成 = はい, 画層 = はい
取り消す操作の数を入力 または [自動(A)/コントロール(C)/開始(BE)/終了(E)/マーク(M)/後退(B)] <1>: be
コマンド: explode
オブジェクトを選択: non
0<0
コマンド: lengthen
計測するオブジェクトを選択 または [増減(DE)/比率(P)/全体(T)/ダイナミック(DY)] <全体(T)>: l
現在の長さ: 3500.0000
計測するオブジェクトを選択 または [増減(DE)/比率(P)/全体(T)/ダイナミック(DY)] <全体(T)>: dy
変更するオブジェクトを選択 または [元に戻す(U)]:
コマンド: setenv
変数名を入力: ly1
値 <3500>: 3500
コマンド:
コマンド: erase
オブジェクトを選択: l
認識された数: 1
オブジェクトを選択:
コマンド: lengthen
計測するオブジェクトを選択 または [増減(DE)/比率(P)/全体(T)/ダイナミック(DY)] <ダイナミック(DY)>: l
現在の長さ: 6000.0000
計測するオブジェクトを選択 または [増減(DE)/比率(P)/全体(T)/ダイナミック(DY)] <ダイナミック(DY)>: dy
変更するオブジェクトを選択 または [元に戻す(U)]:
コマンド: setenv
変数名を入力: to
値 <0>: 2
コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <2>: 0
コマンド:
コマンド:
SETENV
変数名を入力: lx1
値 <6000>: 6000
コマンド:
コマンド: undo
現在の設定: 自動 = オン, コントロール = すべて, 合成 = はい, 画層 = はい
取り消す操作の数を入力 または [自動(A)/コントロール(C)/開始(BE)/終了(E)/マーク(M)/後退(B)] <1>: e
コマンド: u
グループ LENGTHEN SETENV LENGTHEN EXPLODE
コマンド: setenv
変数名を入力: by1
値 <26>: 25
コマンド:
コマンド:
SETENV
変数名を入力: bx1
値 <44>: 43
コマンド:
コマンド:
SETENV
変数名を入力: to
値 <0>: 3
コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <3>: 0
コマンド:
コマンド:
SETENV
変数名を入力: pty1
値 <140>: 140
コマンド:
コマンド:
SETENV
変数名を入力: to
値 <0>: 4
コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <4>: 0
コマンド:
コマンド:
SETENV
変数名を入力: ptx1
値 <139.53488372>: 139.53488372
コマンド:
コマンド:
SETENV
変数名を入力: to
値 <0>: 5
コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <5>: 0
コマンド:
コマンド:
SETENV
変数名を入力: by1
値 <25>: 26
コマンド:
コマンド:
SETENV
変数名を入力: to
値 <0>: 6
コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <6>: 0
コマンド:
コマンド:
SETENV
変数名を入力: bx1
値 <43>: 44
コマンド:
コマンド:
SETENV
変数名を入力: to
値 <0>: 7
コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <7>: 0
コマンド:
コマンド: pasteclip
挿入点を指定: non
0<0
コマンド: -array
オブジェクトを選択: l
認識された数: 1
オブジェクトを選択:
配列複写のタイプを入力 [矩形状(R)/円形状(P)] <R>: R
Y 方向の行数を入力 (---) <1>: 26
X 方向の列数を入力 (|||) <1> 44
Y 方向の間隔 または XY 方向の間隔を指定 (---): 140
X 方向の間隔を指定 (|||): 139.53488372
コマンド: setenv
変数名を入力: to
値 <0>: 8
コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <8>: 0
コマンド:
コマンド: erase
オブジェクトを選択: c
最初のコーナーを指定: non
140,140
もう一方のコーナーを指定: non
5860,3360
認識された数: 1140
オブジェクトを選択:
コマンド: ucs
現在の UCS 名: *名前なし*
UCS 原点を指定 または [面(F)/名前の付いた UCS(NA)/オブジェクト(OB)/直前(P)/ビュー(V)/ワールド(W)/X/Y/Z/Z 軸(ZA)] <ワールド>: p
コマンド:
コマンド: setenv
変数名を入力: to
値 <0>: 0
コマンド:
-
14:chibi-tom
:
2024/06/03 (Mon) 08:23:59
-
修正したマクロをちょっといじってますので
再度登録しなおしてみてください
-
15:nekonoko
:
2024/06/03 (Mon) 09:05:01
-
chibi-tomさん
お返事ありがとうございます。
05/31 (Fri) 15:54頃の修正マクロで合っていますでしょうか?
再登録して試してみましたが、やはり図1の状態になってしまいます。
登録の仕方を間違えていたりするのでしょうか。。。
何度もお聞きしてしまいすみません。
-
16:chibi-tom
:
2024/06/03 (Mon) 09:27:29
-
マクロの流れが合っているので何ともですが
4隅の円は残っているのですよね
下記の部分で『矩形に沿って26行44列に配列複写をしたあとに矩形の内側にある円を削除』しているので
なぜ4隅だけ残るのかがわからない状態です
配列複写のタイプを入力 [矩形状(R)/円形状(P)] <R>: R
Y 方向の行数を入力 (---) <1>: 26
X 方向の列数を入力 (|||) <1> 44
Y 方向の間隔 または XY 方向の間隔を指定 (---): 140
X 方向の間隔を指定 (|||): 139.53488372
コマンド: setenv
変数名を入力: to
値 <0>: 8
コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <8>: 0
コマンド:
コマンド: erase
オブジェクトを選択: c
最初のコーナーを指定: non
140,140
もう一方のコーナーを指定: non
5860,3360
認識された数: 1140
オブジェクトを選択:
-
17:nekonoko
:
2024/06/03 (Mon) 10:06:39
-
chibi-tomさん
はい、4隅の円は残ります。
ログは下記のようになりました。
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <0>: 0
コマンド:
コマンド:
SETENV
変数名を入力: pt1
値 <140>: 配列ピッチ*削除*
配列ピッチ
コマンド:
コマンド: offset
現在の設定: 元のオブジェクトを消去=いいえ 画層=元のオブジェクト OFFSETGAPTYPE=0
オフセット距離を指定 または [通過点(T)/消去(E)/画層(L)] <通過点>:
オフセットするオブジェクトを選択 または [終了(E)/元に戻す(U)] <終了>: 配列オブジェクト選択(R-Clickで終了)*削除*
配列オブジェクト選択(R-Clickで終了)
通過点を指定 または [終了(E)/一括(M)/元に戻す(U)] <終了>:
コマンド: select
オブジェクトを選択: non
@
認識された数: 1
オブジェクトを選択: non
@
認識された数: 1 (重複している数: 1), 総数 1
オブジェクトを選択:
コマンド: copybase
基点を指定: cen
どこの @
オブジェクトを選択: p
認識された数: 1
オブジェクトを選択:
コマンド: erase
オブジェクトを選択: p
認識された数: 1
オブジェクトを選択:
コマンド: setenv
変数名を入力: to
値 <0>: 1
コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <1>: 0
コマンド:
コマンド: offset
現在の設定: 元のオブジェクトを消去=いいえ 画層=元のオブジェクト OFFSETGAPTYPE=0
オフセット距離を指定 または [通過点(T)/消去(E)/画層(L)] <通過点>:
オフセットするオブジェクトを選択 または [終了(E)/元に戻す(U)] <終了>: 矩形を選択(R-Clickで終了)*削除*
矩形を選択(R-Clickで終了)
通過点を指定 または [終了(E)/一括(M)/元に戻す(U)] <終了>:
コマンド: setenv
変数名を入力: to
値 <0>: 1
コマンド:
コマンド: select
オブジェクトを選択: non
@
認識された数: 1
オブジェクトを選択: non
@
認識された数: 1 (重複している数: 1), 総数 1
オブジェクトを選択:
コマンド: copy
オブジェクトを選択: non
@
認識された数: 1
オブジェクトを選択: non
@
認識された数: 1 (重複している数: 1), 総数 1
オブジェクトを選択:
基点を指定 または [移動距離(D)/複数(M)] <移動距離>: non
@
2 点目を指定 または [配列(A)] <1 点目を基点に使用>: non
@
コマンド: erase
オブジェクトを選択: p
認識された数: 1
オブジェクトを選択:
コマンド: setenv
変数名を入力: to
値 <1>: 2
コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <2>: 0
コマンド:
コマンド: ucs
現在の UCS 名: *名前なし*
UCS 原点を指定 または [面(F)/名前の付いた UCS(NA)/オブジェクト(OB)/直前(P)/ビュー(V)/ワールド(W)/X/Y/Z/Z 軸(ZA)] <ワールド>: ob
UCS を位置合わせするオブジェクトを選択: l
コマンド:
UCS
現在の UCS 名: *名前なし*
UCS 原点を指定 または [面(F)/名前の付いた UCS(NA)/オブジェクト(OB)/直前(P)/ビュー(V)/ワールド(W)/X/Y/Z/Z 軸(ZA)] <ワールド>: z
Z 軸の回りの回転角度を指定 <90>: 270
コマンド: undo
現在の設定: 自動 = オン, コントロール = すべて, 合成 = はい, 画層 = はい
取り消す操作の数を入力 または [自動(A)/コントロール(C)/開始(BE)/終了(E)/マーク(M)/後退(B)] <1>: be
コマンド: explode
オブジェクトを選択: l
コマンド: lengthen
計測するオブジェクトを選択 または [増減(DE)/比率(P)/全体(T)/ダイナミック(DY)] <ダイナミック(DY)>: l
現在の長さ: 3500.0000
計測するオブジェクトを選択 または [増減(DE)/比率(P)/全体(T)/ダイナミック(DY)] <ダイナミック(DY)>: dy
変更するオブジェクトを選択 または [元に戻す(U)]:
コマンド: setenv
変数名を入力: ly1
値 <3500>: 3500
コマンド:
コマンド: erase
オブジェクトを選択: l
認識された数: 1
オブジェクトを選択:
コマンド: lengthen
計測するオブジェクトを選択 または [増減(DE)/比率(P)/全体(T)/ダイナミック(DY)] <ダイナミック(DY)>: l
現在の長さ: 6000.0000
計測するオブジェクトを選択 または [増減(DE)/比率(P)/全体(T)/ダイナミック(DY)] <ダイナミック(DY)>: dy
変更するオブジェクトを選択 または [元に戻す(U)]:
コマンド: setenv
変数名を入力: to
値 <0>: 3
コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <3>: 0
コマンド:
コマンド:
SETENV
変数名を入力: lx1
値 <6000>: 6000
コマンド:
コマンド: undo
現在の設定: 自動 = オン, コントロール = すべて, 合成 = はい, 画層 = はい
取り消す操作の数を入力 または [自動(A)/コントロール(C)/開始(BE)/終了(E)/マーク(M)/後退(B)] <1>: e
コマンド: u
グループ LENGTHEN SETENV LENGTHEN EXPLODE
コマンド: setenv
変数名を入力: by1
値 <26>: 25
コマンド:
コマンド:
SETENV
変数名を入力: bx1
値 <44>: 43
コマンド:
コマンド:
SETENV
変数名を入力: to
値 <0>: 4
コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <4>: 0
コマンド:
コマンド:
SETENV
変数名を入力: pty1
値 <140>: 140
コマンド:
コマンド:
SETENV
変数名を入力: to
値 <0>: 5
コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <5>: 0
コマンド:
コマンド:
SETENV
変数名を入力: ptx1
値 <139.53488372>: 139.53488372
コマンド:
コマンド:
SETENV
変数名を入力: to
値 <0>: 6
コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <6>: 0
コマンド:
コマンド:
SETENV
変数名を入力: by1
値 <25>: 26
コマンド:
コマンド:
SETENV
変数名を入力: to
値 <0>: 7
コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <7>: 0
コマンド:
コマンド:
SETENV
変数名を入力: bx1
値 <43>: 44
コマンド:
コマンド:
SETENV
変数名を入力: to
値 <0>: 8
コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <8>: 0
コマンド:
コマンド: pasteclip
挿入点を指定: non
0<0
コマンド: -array
オブジェクトを選択: l
認識された数: 1
オブジェクトを選択:
配列複写のタイプを入力 [矩形状(R)/円形状(P)] <R>: R
Y 方向の行数を入力 (---) <1>: 26
X 方向の列数を入力 (|||) <1> 44
Y 方向の間隔 または XY 方向の間隔を指定 (---): 140
X 方向の間隔を指定 (|||): 139.53488372
コマンド: setenv
変数名を入力: to
値 <0>: 9
コマンド:
コマンド:
コマンド:
コマンド: setenv
変数名を入力: to
値 <9>: 0
コマンド:
コマンド: erase
オブジェクトを選択: c
最初のコーナーを指定: non
140,140
もう一方のコーナーを指定: non
5860,3360
認識された数: 1140
オブジェクトを選択:
コマンド: ucs
現在の UCS 名: *名前なし*
UCS 原点を指定 または [面(F)/名前の付いた UCS(NA)/オブジェクト(OB)/直前(P)/ビュー(V)/ワールド(W)/X/Y/Z/Z 軸(ZA)] <ワールド>: p
コマンド:
UCS
現在の UCS 名: *名前なし*
UCS 原点を指定 または [面(F)/名前の付いた UCS(NA)/オブジェクト(OB)/直前(P)/ビュー(V)/ワールド(W)/X/Y/Z/Z 軸(ZA)] <ワールド>: p
コマンド:
コマンド: setenv
変数名を入力: to
値 <0>: 0
コマンド:
-
18:chibi-tom
:
2024/06/03 (Mon) 10:24:23
-
これを試したいただいて
終了時の画像を添付していただけますか?
*^C^C$M=setenv;to;0;$(if,$(=,$(getenv,to),0),;pt1;配列ピッチ^X\offset;;配列オブジェクト選択(R-Clickで終了)^X\$M="""$(if,$(getvar,CMDACTIVE),;select;non;@;non;@;;copybase;cen;@;p;;erase;p;;setenv;to;1,^Csetenv;to;0)""")$(if,$(=,$(getenv,to),1),offset;;矩形を選択(R-Clickで終了)^X\$M="""$(if,$(getvar,CMDACTIVE),;setenv;to;1;select;non;@;non;@;;copy;non;@;non;@;;non;@;non;@;erase;p;;setenv;to;2,^Csetenv;to;0)""")$(if,$(=,$(getenv,to),2),ucs;ob;l;;z;270;undo;be;explode;l;lengthen;l;dy;;setenv;ly1;$M="""$(getvar,perimeter)""";erase;l;;lengthen;l;dy;;setenv;to;3)$(if,$(=,$(getenv,to),3),;lx1;$(getvar,perimeter);undo;e;u;setenv;by1;$(rtos,$(/,$(getenv,ly1),$(getenv,pt1)),2,0);;bx1;$(rtos,$(/,$(getenv,lx1),$(getenv,pt1)),2,0);;to;4)$(if,$(=,$(getenv,to),4),;pty1;$(if,$(<=,$(/,$(getenv,ly1),$(getenv,by1)),$(getenv,pt1)),$(/,$(getenv,ly1),$(getenv,by1)),$(/,$(getenv,ly1),$(+,1,$(getenv,by1))));;to;5)$(if,$(=,$(getenv,to),5),;ptx1;$(if,$(<=,$(/,$(getenv,lx1),$(getenv,bx1)),$(getenv,pt1)),$(/,$(getenv,lx1),$(getenv,bx1)),$(/,$(getenv,lx1),$(+,1,$(getenv,bx1))));;to;6)$(if,$(=,$(getenv,to),6),;by1;$(if,$(<=,$(/,$(getenv,ly1),$(getenv,by1)),$(getenv,pt1)),$(+,$(getenv,by1),1),$(+,$(getenv,by1),2));;to;7)$(if,$(=,$(getenv,to),7),;bx1;$(if,$(<=,$(/,$(getenv,lx1),$(getenv,bx1)),$(getenv,pt1)),$(+,$(getenv,bx1),1),$(+,$(getenv,bx1),2));;to;8)$(if,$(=,$(getenv,to),8),pasteclip;non;0<0;-array;l;;R;$(getenv,by1);$(getenv,bx1);$(getenv,pty1);$(getenv,ptx1);ucs;p;;p;^Csetenv;to;0)^M
-
19:nekonoko
:
2024/06/03 (Mon) 11:12:21
-
https://bbs2.fc2.com//bbs/img/_816400/816339/full/816339_1717380741.jpg
chibi-tomさん
何度もありがとうございます!
PLINEとRECTANGで変化があったので、両方の画像を添付させていただきます。
見づらかったらすみません。
お手数をお掛けし恐縮ですが、よろしくお願いいたします。
-
20:chibi-tom
:
2024/06/03 (Mon) 11:26:56
-
すいません矩形しか考えていませんでした
そしてここまでマクロ通りです
その後に一つ内側の円の中心位置でを公差選択して削除をしているので4隅だけ残ることが考えにくいんですね
-
21:chibi-tom
:
2024/06/03 (Mon) 11:50:36
-
分かったかも
画像のφ150がφ150よりも大きく描かれていませんか(例えばR150のφ300になっている)?
φ300で試したところ4隅だけ残って画像1のようになりました
-
22:nekonoko
:
2024/06/03 (Mon) 13:06:50
-
chibi-tomさん
すみません!!φ300で試してました・・・
φ150でやり直したところ、綺麗に図2の形になりました!!
何度もすみませんでした。
ありがとうございます!!!
-
23:chibi-tom
:
2024/06/03 (Mon) 13:29:36
-
良かったです
投稿者:seさん
うまくいかない可能性が出てきてしまいました
径やピッチが変わる場合に対応するにはこのマクロでは難しいかもです
その場合はただ今ちょっと手が混んできたので対応に時間かかると思います
2024/05/31 (Fri) 15:54:31
のマクロにzoom処理を足しています
登録済みでしたら再登録してからお試しください
-
24:chibi-tom
:
2024/06/03 (Mon) 16:37:40
-
なんかとても余計なことしている気はしますが
ちょっと思いついたのでメモしておきます
極端に径が大きい、極端にピッチが狭いじゃなければ大丈夫かなと思います
*^C^C$M=setenv;to;0;$(if,$(=,$(getenv,to),0),;pt1;配列ピッチ^X\offset;;配列オブジェクト選択(R-Clickで終了)^X\$M="""$(if,$(getvar,CMDACTIVE),;select;non;@;non;@;;dist;nea;@;cen;@;copybase;cen;@;p;;erase;p;;setenv;to;1,^Csetenv;to;0)""")$(if,$(=,$(getenv,to),1),;r1;$(getvar,DISTANCE);offset;;矩形を選択(R-Clickで終了)^X\$M="""$(if,$(getvar,CMDACTIVE),;setenv;to;1;select;non;@;non;@;;copy;non;@;non;@;;non;@;non;@;erase;p;;setenv;to;2,^Csetenv;to;0)""")$(if,$(=,$(getenv,to),2),ucs;ob;l;;z;270;undo;be;explode;l;lengthen;l;dy;;setenv;ly1;$M="""$(getvar,perimeter)""";erase;l;;lengthen;l;dy;;setenv;to;3)$(if,$(=,$(getenv,to),3),;lx1;$(getvar,perimeter);undo;e;u;setenv;by1;$(rtos,$(/,$(getenv,ly1),$(getenv,pt1)),2,0);;bx1;$(rtos,$(/,$(getenv,lx1),$(getenv,pt1)),2,0);;to;4)$(if,$(=,$(getenv,to),4),;pty1;$(if,$(<=,$(/,$(getenv,ly1),$(getenv,by1)),$(getenv,pt1)),$(/,$(getenv,ly1),$(getenv,by1)),$(/,$(getenv,ly1),$(+,1,$(getenv,by1))));;to;5)$(if,$(=,$(getenv,to),5),;ptx1;$(if,$(<=,$(/,$(getenv,lx1),$(getenv,bx1)),$(getenv,pt1)),$(/,$(getenv,lx1),$(getenv,bx1)),$(/,$(getenv,lx1),$(+,1,$(getenv,bx1))));;to;6)$(if,$(=,$(getenv,to),6),;by1;$(if,$(<=,$(/,$(getenv,ly1),$(getenv,by1)),$(getenv,pt1)),$(+,$(getenv,by1),1),$(+,$(getenv,by1),2));;to;7)$(if,$(=,$(getenv,to),7),;bx1;$(if,$(<=,$(/,$(getenv,lx1),$(getenv,bx1)),$(getenv,pt1)),$(+,$(getenv,bx1),1),$(+,$(getenv,bx1),2));;to;8)$(if,$(=,$(getenv,to),8),erase;0<0;;pasteclip;non;0<0;-array;l;;R;$(getenv,by1);$(getenv,bx1);$(getenv,pty1);$(getenv,ptx1);setenv;to;9)$(if,$(=,$(getenv,to),9),zoom;w;non;-$(getenv,r1)","-$(getenv,r1);non;$(+,$(getenv,lx1),$(getenv,r1))","$(+,$(getenv,ly1),$(getenv,r1));setenv;to;10)$(if,$(=,$(getenv,to),10),oops;erase;w;non;-$(/,$(getenv,r1),2)","-$(/,$(getenv,r1),2);non;$(+,$(getenv,lx1),$(/,$(getenv,r1),2))","$(+,$(getenv,ly1),$(/,$(getenv,r1),2));r;p;;ucs;p;;p;zoom;p;^Csetenv;to;0)^M
-
25:nekonoko
:
2024/06/03 (Mon) 17:21:07
-
https://bbs2.fc2.com//bbs/img/_816400/816339/full/816339_1717402868.jpg
chibi-tomさん
φ50(ピッチ40)~φ300(ピッチ290)まで試してみましたが、綺麗に矩形に沿って形になりました!
例えばなのですが...矩形だけでなく添付画像のような形にも応用できたりするのでしょうか?
-
26:chibi-tom
:
2024/06/04 (Tue) 08:33:16
-
長くなってしまいますし、内容変わってしまいますし
別の方の投稿ですので別トピック立ち上げた方がよさそうですけど
-
27:nekonoko
:
2024/06/04 (Tue) 08:42:55
-
そうですね。申し訳ございませんでした。
後ほど新規でトピックを上げさせていただこうと思います。
矩形線上の配列複写についてトピを立ち上げてくださったseさん、マクロを作成してくださいましたchibi-tomさん、ありがとうございました。