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

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

三点円と線
お願いします。
三個の点に三点円を書きその中心からもう一つの点に線を描く。
説明が悪くて申し訳ございません。添付図からご理解いただければ幸いです。
リスプでの対応をいただきたく、よろしくお願いいたします。
  • sot
  • 2025/07/02 (Wed) 14:12:17
Re: 三点円と線
4点とも、点オブジェクトが有るものとします。

LISPを起動したら、3つの点オブジェクトを選択し、離れた点オブジェクトを選択。

(defun c:P3C_P1L (/ ss ss2 i entList pt pt1 pt2 pt3 pt4 ent entData cen)
(vl-load-com)
(princ "\n3つの点オブジェクトを選択してください: ")
(setq ss (ssget '((0 . "POINT"))))

(if (and ss (= (sslength ss) 3))
(progn
(setq entList '())
(setq i 0)

(repeat (sslength ss)
(setq ent (ssname ss i))
(setq entData (entget ent))
(setq pt (cdr (assoc 10 entData)))

(setq entList (append entList (list pt)))
(setq i (1+ i))
)

(setq pt1 (trans (nth 0 entList) 0 1))
(setq pt2 (trans (nth 1 entList) 0 1))
(setq pt3 (trans (nth 2 entList) 0 1))

(command "ucs" "3P" pt1 pt2 pt3)

(setq pt1 (trans (nth 0 entList) 0 1))
(setq pt2 (trans (nth 1 entList) 0 1))
(setq pt3 (trans (nth 2 entList) 0 1))

(command "CIRCLE" "3P" pt1 pt2 pt3 "ucs" "p")

(setq cen (vlax-safearray->list (vlax-variant-value (vl-catch-all-apply 'vla-get-center (list (vlax-ename->vla-object (entlast)))))))

(princ "\n線分の開始点となる点オブジェクトを1つ選択してください: ")
(setq ss2 (ssget ":S" '((0 . "POINT"))))

(if (and ss2 (= (sslength ss2) 1))
(progn
(setq ent (ssname ss2 0))
(setq entData (entget ent))
(setq pt (cdr (assoc 10 entData)))
(command "LINE" (trans pt 0 1) (trans cen 0 1) "")
)
)
)
)
(princ)
)
  • Hamu
  • 2025/07/03 (Thu) 16:14:12 New
Re: 三点円と線
Hamu様
ありがとうございます。動作報告です。縦の線は円の外周に依存しています。円の中心から出てくれたら最高です。
お忙しい中のご提案に感謝いたします。よろしければ修正をいただければ幸いです。よろしくお願いいたします。
  • sot
  • 2025/07/03 (Thu) 17:08:56 New
Re: 三点円と線
私が試したら、円の中心になります。

(command "LINE" (trans pt 0 1) (trans cen 0 1) "")
ここで、線をかいている訳ですが、(trans pt 0 1) が上の点で、(trans cen 0 1)が円の中心

cenは、
(setq cen (vlax-safearray->list (vlax-variant-value (vl-catch-all-apply 'vla-get-center (list (vlax-ename->vla-object (entlast)))))))
の式より取得しています。
「vla-get-center」とある通り、中心点です。

オブジェクトスナップを無効にしたらどうなりますか?
それで正常に動くなら、それが原因です。

  • Hamu
  • 2025/07/03 (Thu) 18:00:22 New

返信フォーム






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