明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2675|回复: 8

[源码] 批量倒角

[复制链接]
发表于 2019-5-4 15:44:29 | 显示全部楼层 |阅读模式
本帖最后由 bloodtempt 于 2019-5-4 16:01 编辑

  1. (setq ss1 (ssget "F" (list
  2.                        (setq pt1 (vl-remove (last (setq pt1 (getpoint "选择第一组线:"))) pt1))
  3.                        (setq pt2 (vl-remove (last (setq pt2 (getpoint pt1))) pt2)))))
  4. (setq ss2 (ssget "F" (list
  5.                        (setq pt3 (vl-remove (last (setq pt3 (getpoint "选择第二组线:"))) pt3))
  6.                        (setq pt4 (vl-remove (last (setq pt4 (getpoint pt3))) pt4)))))
  7. (setq i 0)
  8. (repeat (min (sslength ss1)(sslength ss2))
  9.   (command "_.CHAMFER"
  10.         (osnap (onwplpt (ssname ss1 i) pt1 pt2) "Near")
  11.         (osnap (onwplpt (ssname ss2 i) pt3 pt4) "Near")
  12.       )
  13.   (setq i (1+ i))
  14. )
  15. (defun onwplpt (en p1 p2 / linept lwpt pt)
  16.   (defun LWPt (en /)
  17.     (mapcar 'cdr
  18.       (vl-remove-if-not
  19.         '(lambda (x) (or (= (car x) 10) (= (car x) 11)))
  20.         (entget en)
  21.       )
  22.     )
  23.   )
  24.   (defun LInept (lst )
  25.     (if (>= (length lst) 2)
  26.       (cons (list (car lst)(cadr lst))
  27.         (LInept
  28.           (vl-remove
  29.             (car Lst)
  30.             lst
  31.           )
  32.         )
  33.       )
  34.     )
  35.   )
  36.   (mapcar '(lambda (x / inte)
  37.              (if (setq inte (inters (car x) (cadr x) p1 p2 nil))
  38.                (if (IsOnLine (car x) (cadr x) inte )
  39.                  inte
  40.                )
  41.              )
  42.            )
  43.     (LInept (lwpt en))
  44.   )
  45.   inte
  46. )
  47.   


;批量倒角,代码错误,不知道错在哪里了,大家给看看


"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2020-8-31 10:11:00 | 显示全部楼层
非常给力,一直致力于寻找这么一款插件,这个能实现一部分吧,测试了一下,稍有遗憾,距离很近的线判断有问题,不能倒角,期待有人还可以改善完美一下这个插件。谢谢楼主的分享。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2019-5-4 16:00:56 | 显示全部楼层
  1. (defun C:fvd (/ i onwplpt pt1 pt2 pt3 pt4 ss1 ss2 vl-remz)
  2.   (defun vl-remz (pt)
  3.     (vl-remove (last pt) pt)
  4.   )
  5.   (defun onwplpt (en p1 p2 / linept lwpt inte)
  6.     (defun LWPt (en /)
  7.       (mapcar 'cdr
  8.         (vl-remove-if-not
  9.           '(lambda (x) (or (= (car x) 10) (= (car x) 11)))
  10.           (entget en)
  11.         )
  12.       )
  13.     )
  14.     (defun LInept (lst )
  15.       (if (>= (length lst) 2)
  16.         (cons (list (car lst)(cadr lst))
  17.           (LInept
  18.             (vl-remove
  19.               (car Lst)
  20.               lst
  21.             )
  22.           )
  23.         )
  24.       )
  25.     )
  26.     (mapcar '(lambda (x)
  27.                (if (setq inte (inters (car x) (cadr x) p1 p2 nil))
  28.                  (if (IsOnLine (car x) (cadr x) inte )
  29.                    inte
  30.                  )
  31.                )
  32.              )
  33.       (LInept (lwpt en))
  34.     )
  35.     inte
  36.   )
  37.   (setq ss1 (ssget "F" (list
  38.                          (setq pt1 (vl-remz (getpoint "选择第一组线:")))
  39.                          (setq pt2 (vl-remz (getpoint pt1))))))
  40.   (setq ss2 (ssget "F" (list
  41.                          (setq pt3 (vl-remz (getpoint "选择第二组线:")))
  42.                          (setq pt4 (vl-remz (getpoint pt3))))))
  43.   (setq i 0)
  44.   (repeat (min (sslength ss1)(sslength ss2))
  45.     (command "_.CHAMFER"
  46.       (onwplpt (ssname ss1 i) pt1 pt2)
  47.       (onwplpt (ssname ss2 i) pt3 pt4)
  48.     )
  49.     (setq i (1+ i))
  50.   )
  51. )


都爱拿现成的,那,修改了一下,可以用了,多段线还有点毛病,再查原因


发表于 2019-5-4 17:55:29 | 显示全部楼层
缺函数 "IsOnLine"
发表于 2019-5-6 12:45:47 | 显示全部楼层
少个函数,没法调试 错误: no function definition: ISONLINE
 楼主| 发表于 2019-5-8 20:57:20 | 显示全部楼层
春鸽带你飞 发表于 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)
)
发表于 2019-5-15 17:48:40 | 显示全部楼层

对多段线不能用
发表于 2020-8-30 23:49:49 | 显示全部楼层
好像可以用非常给力
发表于 2020-8-31 00:04:57 | 显示全部楼层
貌似会有错误,有时间会出错的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-5-17 21:41 , Processed in 0.189822 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表