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

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

【AutoLISP】選択した図形の最小単位図形取得
クリックで選択した最小単位の図形を取得したいです
具体的にはLWPOLYLINE図形やブロックをマウスでクリックした時に
図形全体ではなくマウスでクリックしたその部位単体のもの
LWPOLYLINEなら選択した座標を含む直線の図形を
ブロックなら直線や寸法、弧など色々あると思います
どうプログラムを書けば良いでしょうか?
  • ひんばす
  • 2021/06/25 (Fri) 17:27:08
Re: 【AutoLISP】選択した図形の最小単位図形取得
LISPはよくわかりませんが、ヘルプを検索したらこんなのが出てきました。
http://docs.autodesk.com/ACD/2014/JPN/index.html?url=files/GUID-4F71D4FB-FBF4-4EB3-B546-24B8858FBB94.htm,topicNumber=d30e573563

他にもズバリな関数が探せば有るのかもしれませんが、無い場合、
マクロ的にやるなら、
分解を繰り返し、分解できなくなった時点で取得ですね。
但しブロック内の寸法の場合は、寸法をバラバラにしてからの取得になるので、
寸法としての取得は無理です。

なので、分解するたびに取得して「更に分解するかどうか」の判定を入れて、
適当なタイミングで分解を辞め、取得すれば良いです。

  • Lon
  • 2021/06/26 (Sat) 06:36:38
Re: 【AutoLISP】選択した図形の最小単位図形取得
回答ありがとうございました
リンク先の内容理解できていないので
これから調べていきます
  • ひんばす
  • 2021/06/26 (Sat) 19:34:39
Re: 【AutoLISP】選択した図形の最小単位図形取得
Lonさんの書かれている通り、複合図形の中のオブジェクトにアクセスするには、netselを使用します。

(entget (car (nentsel)))
上記で、複合図形の中のクリックしたオブジェクトのdxfコードを取得できます。
ここで表示される座標値については、Lonさんの示されたURLにあるようにモデル座標系(MCS)なので、実際の座標を知るには変換が必要です。

ただし、LWPOLYLINEに関しては、お望みのようなプロパティは取得できません。
nentselのヘルプに
「ライトウェイト ポリライン(Lwpolyline 図形)は、図面データベース内で単一の図形として定義されており、従属図形を含みません。」という記述があります。
ですので、LWPOLYLINEに関しては違うアプローチが必要となります。
  • LUNE
  • 2021/06/28 (Mon) 09:24:57
Re: 【AutoLISP】選択した図形の最小単位図形取得
>LWPOLYLINEなら選択した座標を含む直線の図形
直線の座標を得たいということでしょうか?
https://www.hptown.com/ucad/Ufl00005.htm
にて、LWPOLYLINEの座標値を得て、選択したい位置から
どの線分か判定することになるのでは、・・・
  • ユーザーフレンドリー
  • URL
  • MAIL
  • 2025/04/09 (Wed) 13:14:59

返信フォーム






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