改单选单向动态延伸为多选双向动态延伸(已完美解决,多谢 ljpnb大师的热情帮助)
本帖最后由 669423907 于 2011-7-4 22:34 编辑请明经的大师帮忙改进一下单选向单动态延伸为多选双向动态延伸,延伸的长度以各线的中点,以鼠标移动距离 0.2倍(mm)向线的两边加长。先在此谢过啦!
动态延伸
(defun c:sa()
(command "Lengthen" "dy" "line" Pause))
这回又要自己顶一顶了 用于改十字中心线的长短啊!很有用的,希望明经的大师帮帮忙啦。实在不胜感激了。 单向的试试,双向还不完善
;;单条直线双向动态拉伸by ljpnb
(defun c:test ()
(setq en (entsel "\n选择一直线:"))
(setq ent (car en)
point (osnap (cadr en) "nea")
)
(setq dxf(entget ent))
(setq p1 (vl-remove 10 (assoc 10 dxf))
p2 (vl-remove 11 (assoc 11 dxf))
)
(setq mid-pt (mapcar '(lambda (a b) (/ (+ a b) 2)) p1 p2))
;;中点
(while (/= 3 (car (setq n (grread t 4 3))))
(setq pt (cadr n))
(setq per-pt (vlax-curve-getClosestPointTo ent pt T))
(if ptold
(grdraw point ptold 0)
)
(grdraw point pt 1)
(setq ptold pt)
(setq p3 (polar mid-pt
(+ pi (angle mid-pt per-pt))
(distance mid-pt per-pt)
)
)
(setq dxf (subst (cons 10 per-pt) (assoc 10 dxf) dxf))
(setq dxf (subst (cons 11 p3) (assoc 11 dxf) dxf))
(entmod dxf)
)
(grdraw point ptold 0)
)
本帖最后由 ljpnb 于 2011-7-3 15:44 编辑
暂时只适合对2条相交中心线的双向动态拉伸
回复 ljpnb 的帖子
应该增加输入和捕捉!~~呵呵!~~ 回复 ljpnb 的帖子
2条相交直线双向动态拉伸好像不能用,支持什么版本的?!~~
出错:参数类型错误: 二维/三维点: nil 本帖最后由 ljpnb 于 2011-7-3 15:43 编辑
daidong013 发表于 2011-7-3 15:31 http://bbs.mjtd.com/static/image/common/back.gif
回复 ljpnb 的帖子
2条相交直线双向动态拉伸好像不能用,支持什么版本的?!~~
我的是2006,是不是少了一句(vl-load-com),另外程序有个参数忘记修改,5楼已修改过了 回复 ljpnb 的帖子
可以了!~~不错~~要是可以增加输入和捕捉就更好了!~支持一下!~~ 我对grread函数了解的不多,这儿有很多高手,到时候再完善