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

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

法面のLISP作成のお願い
土木図面で、添付図の様な法面(黒線)を作成したいです。
作成方法として、A点、B点、C点、D点を順次指定して、
添付図の様な法面(黒線)を描画したい。
A点、B点を結ぶ線(赤線)と、C点、D点を結ぶ線(青線)は、
図上に描かれている前提とする。
LISPで作成可能でしょうか。
AUTOCAD2023を使用しています。
よろしくお願いします。
  • KAZ
  • MAIL
  • 2025/04/28 (Mon) 17:48:56
Re: 法面のLISP作成のお願い
黒線の条件が良く判りませんが、それっぽい物を考えてみました。
コードの説明を入れてますので、ご自身で好みの動作に書き換えて下さい。

LISP起動⇒A,B,C,D点を順にクリック⇒黒線の間隔(ピッチ)を数値で入力

(defun C:Norimen_Lines ( / p1 p2 p3 p4 interval numLines i pt1 pt2 pt3)

;; 線分1の始点と終点の座標を入力
(setq p1 (getpoint "\n線分1の始点の座標を入力してください: "))
(setq p2 (getpoint "\n線分1の終点の座標を入力してください: "))

;; 線分2の始点と終点の座標を入力
(setq p3 (getpoint "\n線分2の始点の座標を入力してください: "))
(setq p4 (getpoint "\n線分2の終点の座標を入力してください: "))

;; 間隔を入力
(setq interval (getreal "\n間隔を入力してください: "))

;; 垂線の数を計算
(setq numLines (1+ (fix (/ (distance p1 p2) interval))))

;; 垂線を描く
(setq i 0)
(repeat numLines
;; 間隔ごとの点を計算
(setq pt1 (polar p1 (angle p1 p2) (* interval i)))
;; 長さ1の垂線の終点を計算
(setq pt2 (polar pt1 (+ (/ pi 2) (angle p1 p2)) 1))
;;垂線と線分2の交点
(setq pt3 (inters pt1 pt2 p3 p4 nil))
;;奇数番目は中点まで
(if (= (rem i 2) 1) (setq pt3 (list (/ (+ (car pt1) (car pt3)) 2) (/ (+ (cadr pt1) (cadr pt3)) 2))))
;; 垂線を描く
(command "LINE" "non" pt1 "non" pt3 "")
(setq i (1+ i))
)
(princ)
)
  • Hamu
  • 2025/05/01 (Thu) 16:55:51
Re: 法面のLISP作成のお願い
動作確認しました。ばっちり理想通りでした。
Hamu様、本当に助かりました。
ありがとうございました。感謝感謝
また、困った時は、お助け願います。
  • KAZ
  • MAIL
  • 2025/05/01 (Thu) 19:04:27

返信フォーム






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