请问有没有人有点Lisp程序的延伸/修剪?
这肯定是以前做过,但我找不到它,尽管谷歌搜索彻底。
这是我的第一篇帖子&我希望我正确地添加了jpg
功能:
选择点(var pickpt)
将选定线延伸或修剪到pickpt的正交投影
终止
在图片中,黄色虚线是pickpt的正交投影,洋红是要延伸/修剪的线。
我希望实际的扩展修剪通过重复循环完成,新端点通过极轴函数创建,列表创建,然后子函数创建
(subst lst(assoc 10 linedxf)
或
(subst lst(assoc 11 linedxf)
取决于assoc 10或assoc 11是否更接近拾取点
我目前的代码:
- (defun c:triangle (/ adj1 ang dist1 hyp1 hyp2 list1 ncos npt p1 p2 P3 pickpt)
- (Setq pickpt (getpoint"\nSelect Pickpoint"))
- (Setq p1 (getpoint"\nSelect Point 1"))
- (Setq p2 (getpoint"\nSelect Point 2"))
- (setq ang (angle p1 p2))
- (setq list1 (list (car pickpt) (cadr p2) 0.0))
- (setq hyp1 (distance p1 p2))
- (setq dist1 (distance p2 list1))
- (setq adj1 (* hyp1 (cos ang)))
- (if (< adj1 0.0)
- (setq adj1 (* adj1 -1))
- )
-
- (setq ncos (cos ang))
- (setq hyp2 (/ dist1 ncos))
- (if (< hyp2 0.0)
- (setq hyp2 (* hyp2 -1))
- )
- (if (< ncos 0.0)
- (setq ncos (*(cos ang)-1))
- )
- (setq npt (polar p2 ang hyp2))
- (princ (strcat "\n npt is: "(rtos(car npt)) ", " (rtos(cadr npt)) ", " "0.0")); for testing
- (princ)
- )
但最后我在三角游戏中迷路了:-(
|