この掲示板は AutoCADマクロ屋本舗 の掲示板です。

【 注意 】最初に必ず ↓↓ 下記内容 ↓↓ を参照ください。
① マクロが分からない方は、まず 【 マクロ講座 】 を参照ください。
② 質問の前に 【 マクロ使用前の注意事項 】 をお読みください。
③ 質問する時は、新規投稿フォーム下の【 新規投稿時のお願い 】を必ずお読みください。

中心軌跡マクロ
はじめまして。
ACAD 2016で下記の作業をマクロかなにかでできますでしょうか。

中心軌跡を描画
1.点と線の間の中心軌跡
2.点と円の間の中心軌跡
3.線と円の間の中心軌跡
2か所選択し、軌跡を描画したく、今は円を多数描きその中心をポリライン等で結んでおり、時間がかかって何とかならいか思案しております。

どうぞよろしくお願いいたします。
  • 桜川
  • 2018/10/25 (Thu) 23:35:57
Re: 中心軌跡マクロ
2点間の中心を簡単に指定したいということなら
Ctrl+J又はMTP(コマンド変更子)を使えばよいと思いますが

意味が違ったらスルーでお願いします。
  • chibi-tom
  • 2018/10/26 (Fri) 10:44:46
Re: 中心軌跡マクロ
状況がよくわからないので、
その「円を多数描いてポリラインで結んだ」
状態の画像を提示してくれませんか?
  • Lon
  • 2018/10/26 (Fri) 16:07:28
Re: 中心軌跡マクロ
こんな感じです。
円をどれだけ書くかで、中心軌跡の精度が左右します。

  • 桜川
  • 2018/10/26 (Fri) 17:19:22
Re: 中心軌跡マクロ
うぅぅぅぅぅぅん 。。。。

やりたいことは理解できました。

それをマクロで実現する方法が思いつかないです。
ちょっと考えてみますが、、、、難題だなぁ。


R版だとlispやVBAが使えるので作図処理じゃなく、計算処理の方が簡単かな。
自由曲線だとそれも難しいけど。

とりあえず、他の人の回答に期待!
  • Lon
  • 2018/10/26 (Fri) 21:14:48
Re: 中心軌跡マクロ
座標系を適当にとると問題の軌跡は

X^2+(Y-y0)^2=r^2   ①
X^2+Y^2=(R-r)^2    ②

①、②を解いて

R^2/(R^2-y0^2)*X^2+(Y-y0/2)^2=(R/2)^2

という楕円になります。

y0は点の位置
Rは接する大きい円の半径
rは接する小さい円の半径
X、Yは問題の円の中心座標


なので楕円をダイレクトに書いてもいいのですが、
マクロで作図するとこんな感じ、接円の描画が不安定で
狙いどおり順番に点を取れないのでポリラインでは書けませんでした。
点で書いているのであとは適当に描画してください。

*^C^C$M=setenv;to;0;$(if,$(=,$(getenv,to),0),undo;be;ucs;ob;\dist;nea;@;non;0<0;pline;non;0<0;nod;\;$M=area;;l;erase;l;;ucs;z;"""$(getvar,lastangle)r""";;z;-90;setenv;to;1)$(if,$(=,$(getenv,to),1),id;nea;$(getvar,distance)<100;$M=;nod;$(getvar,perimeter)<N;setenv;o0;"""$(getvar,lastpoint)""";;to;2)$(if,$(=,$(getenv,to),2),;p0;$(getvar,lastpoint);pline;qua;$(getvar,distance)<N;qua;$(getvar,distance)<E;;copybase;non;0<0;l;;erase;l;;setenv;to;3)$(if,$(=,$(getenv,to),3),-layout;d;lo0;;n;lo0;;s;lo0;point;0<0;erase;all;;pasteclip;0<0;zoom;e;divide;\\setenv;i;1;;to;4)$(if,$(=,$(getenv,to),4),;to;5;select;l;;ucs;ob;l;id;non;0<0;ucs;p;$M=erase;l;;setenv;p$(getenv,i);"""$(getvar,lastpoint)""";;i;$(+,$(getenv,i),1);;to;4)$(if,$(=,$(getenv,to),5),model;-layout;d;lo0;setenv;i;$(-,$(getenv,i),2);;cnt;$(-,$(getenv,i),2);;to;6)$(if,$(=,$(getenv,to),6),circle;3p;nod;$(getenv,p0);tan;$(getenv,o0)^H^H;non;$(getenv,p$(getenv,i))^H^H;ucs;ob;l;id;non;0<0;ucs;p;erase;l;;setenv;to;7)$(if,$(=,$(getenv,to),7),;q$(getenv,i);$(getvar,lastpoint);;i;$(-,$(getenv,i),1);;to;$(if,$(>,$(-,$(getenv,i),1),0),6,8;;i;1))$(if,$(=,$(getenv,to),8),point;non;$(getenv,q$(getenv,i));setenv;i;$(+,$(getenv,i),1);;to;9)$(if,$(=,$(getenv,to),9),$(if,$(<=,$(getenv,i),$(getenv,cnt)),;to;8,ucs;p;;p;;p;^Cundo;e))^M


エクセルで①、②をX、Yについて解いてrを変動させて解いて(X,Y)を
得て作図してもできます。
  • zukki-
  • 2018/10/30 (Tue) 08:35:29
Re: 中心軌跡マクロ
上のは
2.点と円の間の中心軌跡
になります。
3.線と円の間の中心軌跡
は放物線で途中から2.の楕円の軌跡になると思います。
  • zukki-
  • 2018/10/30 (Tue) 08:56:54
Re: 中心軌跡マクロ
zukki- 様、
ありがとうございます。
ただ、私のAutoCAD Mech. 2016では、マクロが動かなく、色々と試してるのですが、動作が確認できずです。
(´;ω;`)
もう少し挑戦してみます。。。。
  • 桜川
  • 2018/10/30 (Tue) 23:30:23
Re: 中心軌跡マクロ
たぶんsetgetenvの問題だと思います。
とってぃさんの
レギュラー版での使用に関する注意事項
https://ameblo.jp/totthi-macro/entry-10895232361.html
をごらんください。

あと、
3.線と円の間の中心軌跡
の線は円の中心を通るのでしょうか?
  • zukki-
  • 2018/10/31 (Wed) 10:50:11
Re: 中心軌跡マクロ
画像にある「点と点」の場合は、その点と点を直線で結び、その直線を中点で90°回転すれば良いです。
文章にある「点と直線」の場合は、点から直線に垂線を引き、その直線を中点で90°回転すれば良いです。
ちなみに画像にも文章にも有りませんが、「直線と直線」の場合は、構築線コマンドの2等分オプションで一発で引けます。

「点と直線」の場合は、zukki-さんのマクロ


なので、「線と円弧」の場合を作ってみました。
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),;半径増;\;RR;0;;to;1,,)$(nth,$(getenv,to),,;RR;$(getenv,半径増);circle;t;\\$M="""$(getenv,RR)""";ucs;e;l;erase;l;;line;non;0<0;non;@;;ucs;p;setenv;to;2,)$(nth,$(getenv,to),,,;RR;$(+,$(getenv,RR),$(getenv,半径増));circle;t;\\$M="""$(getenv,RR)""";ucs;e;l;line;;non;0<0;;ucs;p;setenv;to;2)^M
全自動で描画は私には無理でした。

マクロ使用法
①半径増を入力(何の大きさか判らないと思うので、とりあえず円の直径の1/100くらいでやって、お好みで変えて下さい)
②直線と円弧を交互にクリック。 ひたすら交互にクリック。 
 これで、接円とその中心を結んだ直線が描画されます。


接円を消して線分だけ残すバージョン↓
*^C^C$M=setenv;to;0;$(nth,$(getenv,to),;半径増;\;RR;0;;to;1,,)$(nth,$(getenv,to),,;RR;$(getenv,半径増);circle;t;\\$M="""$(getenv,RR)""";ucs;e;l;erase;l;;line;non;0<0;non;@;;ucs;p;setenv;to;2,)$(nth,$(getenv,to),,,;RR;$(+,$(getenv,RR),$(getenv,半径増));circle;t;\\$M="""$(getenv,RR)""";ucs;e;l;erase;l;;line;;non;0<0;;ucs;p;setenv;to;2)^M
  • Lon
  • 2018/10/31 (Wed) 14:19:59

返信フォーム






プレビュー (投稿前に内容を確認)