顺线的方向延长和缩短直线。
想做个程序,先给定两个点,然后做一直线,这个很容易。然后需要起点缩短一点,终点又延长一点。这个后面的功能如何实现?谢谢。 lyqiezi 发表于 2012-9-10 13:22(defun c:ssxd()
(setq d1 (getreal "\n输入起点伸长尺寸(缩短输负值)"))
(setq d2 (getreal "\n输入 ...
感谢分享~
生成新线断,原线段没有删除。
学习了~ lyqiezi 发表于 2012-9-10 13:22
(defun c:ssxd()
(setq d1 (getreal "\n输入起点伸长尺寸(缩短输负值)"))
(setq d2 (getreal "\n输入 ...
很实用,收了。 延长到相交? 试了一下,蛮好玩,但还没有完全达到目的。因为我需要一段缩短,一段延长。这个命令只能固定起点,变终点。 延长缩短多少?哪个是起点,哪个是终点? 做两次lengthen吧 求点坐标,然后算出缩短延长后的坐标,删除以前的直线,重绘直线,这样应该可以 本帖最后由 lyqiezi 于 2012-9-10 09:54 编辑
我觉得可以用缩放命令,以线中点为缩放基点,缩放比例为:(两端要延长的距离*2+原有线段长度)/原有线段长度
当然,这个只能是两端伸长一样的情况,如果不同的话就要重新计算起点终点了 啊,没看清,以为两边都要伸长,原来是一边伸长一边缩短
用极坐标方式应该比较容易解决吧 本帖最后由 lyqiezi 于 2012-9-10 13:33 编辑
(defun c:ssxd()
(setq d1 (getreal "\n输入起点伸长尺寸(缩短输负值)"))
(setq d2 (getreal "\n输入终点伸长尺寸(缩短输负值)"))
(setq pt1 (getpoint "\n线段起点:"))
(setq pt2 (getpoint "\n线段终点:"))
(setq os (getvar "osmode"));不在开头加,因为选点的时候还是要捕捉的
(setvar "osmode" 0)
(setq ang1 (angle pt1 pt2))
(setq pt1 (polar pt1 ang1 (* -1 d1)))
(setq pt2 (polar pt2 ang1 d2))
(command "line" pt1 pt2 "")
(setvar "osmode" os)
(prin1)
)
发一个看看,合适用不? 谢谢大家。楼上两位的极坐标法应该是最有效的。我一直苦恼如何用简单的方法确定线的角度和方向。原来极坐标法及其容易解决问题。 非常方便的程序!
页:
[1]
2