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

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

アンカー表記用途
いつも、こちらのマクロやLISPを利用させていただいています。

様々なサイズのアンカーを図示するために円で表記をしているので、「線分に指定した直径の円」のLISPを利用させていただいているのですが、毎回φのサイズを指定するのではなく、はじめにそれぞれのサイズ指定をした後、操作をキャンセルするまで始めに指定したサイズで繰り返させることは可能でしょうか。
また、中点に当たる部分に、図のようにワッシャ表記を盛り込ませることは可能でしょうか。(ワッシャサイズもアンカーサイズで変動します。)

お手数をお掛けしてしまい恐縮ですが、教えていただけますと嬉しいです。
よろしくお願いいたします。

使用CAD:AutoCAD2024
  • teneKo
  • 2024/11/14 (Thu) 14:58:19
Re: アンカー表記用途
可能かどうかと言われれば、可能です。
新たに表記を加えることも可能です。
しかし、残念ながら、私はtenekoさんとは業界が違うので、その表記をどのようにするものなのか分かりませんので、修正することができません。
  • LUNE
  • 2024/11/18 (Mon) 14:24:40
Re: アンカー表記用途
ワッシャ表記だけは、仕様が分からないので、それ以外を修正してみました。
サイズ指定は最初1回、右クリックで終了です。

ワッシャの画層は「ワッシャ」、サイズは中点の円の1.2にしています。
必要に応じて変更してください。
*ワッシャの半径入力も必要なら、
 (setq rlst (append rlst (list (* (cadr rlst) 1.2))))

 (setq rlst (append rlst (list (getint "\n:ワッシャの半径を入力"))))
に変更してください。

(defun c:3cirrm (/ e en ent pt spt ept mpt laylst rlst ptlst i flg)
(setq laylst (list "先端" "中点" "根元" "ワッシャ"))
(setq rlst (list (getint "\n:先端の半径を入力")))
(setq rlst (append rlst (list (getint "\n:中点の半径を入力"))))
(setq rlst (append rlst (list (getint "\n:根元の半径を入力"))))
(setq rlst (append rlst (list (* (cadr rlst) 1.2)))) ;ワッシャの半径は中点の半径の1.2倍
(setq flg 1)

(while (= flg 1)
(while (= e nil)
(progn
(setvar 'errno 0)
(setq e (entsel "\n線分を選択(先端近くをクリック)(右クリックで終了):"))
(cond
((= 7 (getvar 'errno))
(princ "\nもう一度選択してください") ;; Stay in loop
)
((null e)(setq e 1)(setq flg 0))
((/= (cdr (assoc 0 (setq ent (entget (car e))))) "LINE")
(progn
(setq e nil)
(prompt "\n線分ではありません")
)
)
((setq flg 2))
)
)
)

(if (= flg 2)
(progn
(setq pt (osnap (cadr e) "_nea"))
(setq pt (trans pt 1 0)) ;クリックした点と近い方を先端に
(if (< (distance pt (cdr (assoc 10 ent))) (distance pt (cdr (assoc 11 ent))))
(progn
(setq spt (cdr (assoc 10 ent))
ept (cdr (assoc 11 ent))
)
)
(progn
(setq spt (cdr (assoc 11 ent))
ept (cdr (assoc 10 ent))
)
)
)
(setq mpt (mapcar '(lambda (x1 x2) (/ (+ x1 x2) 2.0)) spt ept)) ;中点算出

(command-s "ucs" "za" spt ept) ;線分に垂直に円を描画するため、ucsを変更
(setq ptlst (list spt mpt ept mpt))

(setq i 0)
(repeat (length laylst)
(if (not (tblsearch "layer" (nth i laylst)))
(command "-layer" "n" (nth i laylst) "")
)
(setq i (+ i 1))
)

(setq i 0)
(repeat (length laylst)
(command-s "circle" (trans (nth i ptlst) 0 1) (nth i rlst))
(command-s "change" "l" "" "p" "la" (nth i laylst) "")
(setq i (+ i 1))
)
(command-s "ucs" "p")
(setq e nil)
(setq flg 1)
)
)
)
(princ)
)
  • LUNE
  • 2024/11/19 (Tue) 10:52:58
Re: アンカー表記用途
LUNE様

ご返信が遅くなり、大変申し訳ございません。
また、説明不足でお手間をかけさせてしまったこと、お詫びいたします。
教えて頂いたLISPで、思い通りに作図することができました。
ワッシャに関しまして、種類によってサイズが少し異なることから、半径入力が出来る形に組み換えて使用させていただきます。(こちらも、差し替え出来るように丁寧に教えてくださりありがとうございます。)
本当に助かりました。
ありがとうございました。
  • teneKo
  • 2024/11/19 (Tue) 16:34:37

返信フォーム






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