批量倒角
本帖最后由 bloodtempt 于 2019-5-4 16:01 编辑(setq ss1 (ssget "F" (list
(setq pt1 (vl-remove (last (setq pt1 (getpoint "选择第一组线:"))) pt1))
(setq pt2 (vl-remove (last (setq pt2 (getpoint pt1))) pt2)))))
(setq ss2 (ssget "F" (list
(setq pt3 (vl-remove (last (setq pt3 (getpoint "选择第二组线:"))) pt3))
(setq pt4 (vl-remove (last (setq pt4 (getpoint pt3))) pt4)))))
(setq i 0)
(repeat (min (sslength ss1)(sslength ss2))
(command "_.CHAMFER"
(osnap (onwplpt (ssname ss1 i) pt1 pt2) "Near")
(osnap (onwplpt (ssname ss2 i) pt3 pt4) "Near")
)
(setq i (1+ i))
)
(defun onwplpt (en p1 p2 / linept lwpt pt)
(defun LWPt (en /)
(mapcar 'cdr
(vl-remove-if-not
'(lambda (x) (or (= (car x) 10) (= (car x) 11)))
(entget en)
)
)
)
(defun LInept (lst )
(if (>= (length lst) 2)
(cons (list (car lst)(cadr lst))
(LInept
(vl-remove
(car Lst)
lst
)
)
)
)
)
(mapcar '(lambda (x / inte)
(if (setq inte (inters (car x) (cadr x) p1 p2 nil))
(if (IsOnLine (car x) (cadr x) inte )
inte
)
)
)
(LInept (lwpt en))
)
inte
)
;批量倒角,代码错误,不知道错在哪里了,大家给看看
非常给力,一直致力于寻找这么一款插件,这个能实现一部分吧,测试了一下,稍有遗憾,距离很近的线判断有问题,不能倒角,期待有人还可以改善完美一下这个插件。谢谢楼主的分享。 (defun C:fvd (/ i onwplpt pt1 pt2 pt3 pt4 ss1 ss2 vl-remz)
(defun vl-remz (pt)
(vl-remove (last pt) pt)
)
(defun onwplpt (en p1 p2 / linept lwpt inte)
(defun LWPt (en /)
(mapcar 'cdr
(vl-remove-if-not
'(lambda (x) (or (= (car x) 10) (= (car x) 11)))
(entget en)
)
)
)
(defun LInept (lst )
(if (>= (length lst) 2)
(cons (list (car lst)(cadr lst))
(LInept
(vl-remove
(car Lst)
lst
)
)
)
)
)
(mapcar '(lambda (x)
(if (setq inte (inters (car x) (cadr x) p1 p2 nil))
(if (IsOnLine (car x) (cadr x) inte )
inte
)
)
)
(LInept (lwpt en))
)
inte
)
(setq ss1 (ssget "F" (list
(setq pt1 (vl-remz (getpoint "选择第一组线:")))
(setq pt2 (vl-remz (getpoint pt1))))))
(setq ss2 (ssget "F" (list
(setq pt3 (vl-remz (getpoint "选择第二组线:")))
(setq pt4 (vl-remz (getpoint pt3))))))
(setq i 0)
(repeat (min (sslength ss1)(sslength ss2))
(command "_.CHAMFER"
(onwplpt (ssname ss1 i) pt1 pt2)
(onwplpt (ssname ss2 i) pt3 pt4)
)
(setq i (1+ i))
)
)
都爱拿现成的,那,修改了一下,可以用了,多段线还有点毛病,再查原因
缺函数 "IsOnLine" 不能用 少个函数,没法调试 错误: no function definition: ISONLINE 春鸽带你飞 发表于 2019-5-6 12:45
少个函数,没法调试 错误: no function definition: ISONLINE
(defun IsOnLine (p1 p2 px)
(< (abs (- (+ (distance p1 px) (distance p2 px)) (distance p1 p2))) 0.001)
)
对多段线不能用 好像可以用非常给力 貌似会有错误,有时间会出错的
页:
[1]