669423907 发表于 2011-7-2 18:24:14

改单选单向动态延伸为多选双向动态延伸(已完美解决,多谢 ljpnb大师的热情帮助)

本帖最后由 669423907 于 2011-7-4 22:34 编辑

请明经的大师帮忙改进一下单选向单动态延伸为多选双向动态延伸,延伸的长度以各线的中点,以鼠标移动距离 0.2倍(mm)向线的两边加长。先在此谢过啦!
动态延伸
(defun c:sa()
(command "Lengthen" "dy" "line" Pause))


669423907 发表于 2011-7-2 23:41:36

这回又要自己顶一顶了

669423907 发表于 2011-7-3 12:20:29

用于改十字中心线的长短啊!很有用的,希望明经的大师帮帮忙啦。实在不胜感激了。

ljpnb 发表于 2011-7-3 14:42:27

单向的试试,双向还不完善
;;单条直线双向动态拉伸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:02:33

本帖最后由 ljpnb 于 2011-7-3 15:44 编辑

暂时只适合对2条相交中心线的双向动态拉伸

daidong013 发表于 2011-7-3 15:25:51

回复 ljpnb 的帖子

应该增加输入和捕捉!~~呵呵!~~

daidong013 发表于 2011-7-3 15:31:10

回复 ljpnb 的帖子

2条相交直线双向动态拉伸好像不能用,支持什么版本的?!~~
出错:参数类型错误: 二维/三维点: nil

ljpnb 发表于 2011-7-3 15:42:47

本帖最后由 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楼已修改过了

daidong013 发表于 2011-7-3 15:49:53

回复 ljpnb 的帖子

可以了!~~不错~~要是可以增加输入和捕捉就更好了!~支持一下!~~

ljpnb 发表于 2011-7-3 16:06:27

我对grread函数了解的不多,这儿有很多高手,到时候再完善
页: [1] 2 3
查看完整版本: 改单选单向动态延伸为多选双向动态延伸(已完美解决,多谢 ljpnb大师的热情帮助)