请教获取第三点计算优化
指定第1,2点后,自动计算生成第三点,以下是比较繁琐的计算表达,请高手指点下如何精简(defun c:tt ()(setq p1 (getpoint "\n指定第一点:"))
(setq p3 (getpoint p1 "\n指定第二点:"))
(setq x1 (car p1))
(setq y1 (cadr p1))
(setq x3 (car p3))
(setq y3 (cadr p3))
(setq p2 (list x3 y1))
(setq p4 (list x1 y3))
(setq x5 (+ x1 (* 0.15 (- x3 x1))))
(setq y5 (+ y1 (* 0.85 (- y3 y1))))
(setq p5 (list x5 y5));;得到第三点
(command "pline" p1 "w" "0" "0" p5 p3 "")
)
来个复杂的
(setq p5(mapcar '+ p1 (mapcar '* (mapcar '- p3 p1) '(0.15 0.85)))) (defun c:tt (/ p1 p3 p5)
(setq p1 (getpoint "\n指定第一点:"))
(setq p3 (getcorner p1 "\n指定对角点:"))
(setq p5(mapcar '+ p1 (mapcar '* (mapcar '- p3 p1) '(0.15 0.85))))
(command "pline" "non" p1 "w" "0" "0" "non" p5 "non" p3 "")
(princ)
) 本帖最后由 e2002 于 2022-2-18 15:45 编辑
看这代码,估计是要画一个表示开洞口的线吧?
矩形:(p1,p2,p3,p4);
开洞标示线:(p1,p5,p3);
既然p5的位置算法: 015* dx(p1,p3),0.85*dy(p1,p3) ,仅仅与 p1,p3相关,那么不需要计算p2,p4。
另外还要考虑到 Z 坐标,如果 p1 , p3 并不是同一个UCS_Z, 上面代码的结果估计不是你想要的。
页:
[1]