黒線の条件が良く判りませんが、それっぽい物を考えてみました。
コードの説明を入れてますので、ご自身で好みの動作に書き換えて下さい。
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