明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3012|回复: 3

求!!!批量修改倒角,R角

[复制链接]
发表于 2011-9-10 10:25:49 | 显示全部楼层 |阅读模式
批量修改倒角如图
我希望自动能让倒角变大三分之一左右,最好支持多段线,

本帖子中包含更多资源

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

x
发表于 2011-9-19 20:43:25 | 显示全部楼层
批量修改倒圆角或倒45度直角程序演示



本帖子中包含更多资源

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

x
发表于 2011-9-27 18:01:38 | 显示全部楼层
本帖最后由 byghbcx 于 2011-9-27 18:02 编辑

(defun c:f-ch( / p->pl ENT_FROM odl-var ent st et ent_type d s_st s_et wid pt bulge s1 s2 n s_ent pt par);改切角或倒角,支持圆弧倒角、多义钱倒角
  (defun p->pl (ss w / en a)
  (setq en (ssname ss 0))
  (setq a (cdr (assoc 0 (entget en))))
  (cond ((or (= "LINE" a) (= "ARC" a))
         (command "pedit" en "Y" "j" ss "" "w" w "x"))
        ((or (= "LWPOLYLINE" a) (= "POLYLINE" a))
         (command "pedit" en "j" ss "" "w" w "x"))
        (T T)
  )
  )
  (DEFUN ENT_FROM (E / SS SN)
  (SETQ SS (SSADD))
  (WHILE E
    (SETQ E (ENTNEXT E))
    (IF E
      (PROGN
        (SETQ SN (CDR (ASSOC 0 (ENTGET E))))
        (IF (NOT (MEMBER SN (quote ("ATTRIB" "VERTEX" "SEQEND"))))
          (SETQ SS (SSADD E SS))
        )
      )
    )
  )
  SS
  )
  (vl-load-com)
  (setq old-var (mapcar 'getvar '("chamfera" "chamferb" "filletrad")))
  (setq d (getreal (strcat "\n请输入倒角距离<" (rtos (getvar "filletrad")) ">:")))
  (if d (setvar "filletrad" d))
  (while (setq ent (entsel "\n请选择倒角或切角线/<空选结束>:"))
  (setq st (vlax-curve-getStartPoint (vlax-ename->vla-object (car ent)))
        et (vlax-curve-getEndPoint (vlax-ename->vla-object (car ent)))
        )
  (setq ent_type (cdr (assoc 0 (entget (car ent)))))
  (cond
    ((= ent_type "LINE")
     (command "_.erase" ent "")
     (setq ent (ssget "c" st st))
     (if (wcmatch (cdr (assoc 0 (entget (ssname ent 0)))) "*POLYLINE") (command "_.explode" ent))
     (setq ent (ssget "c" et et))
     (if (wcmatch (cdr (assoc 0 (entget (ssname ent 0)))) "*POLYLINE") (command "_.explode" ent))
     (command "_.fillet" st et)
     (setq s (entlast))
     (setq s_st (vlax-curve-getStartPoint (vlax-ename->vla-object s))
           s_et (vlax-curve-getEndPoint (vlax-ename->vla-object s))
        )
     (command "_.line" s_st s_et "")
     (command "_.erase" s "")
     )
    ((= ent_type "ARC")
     (command "_.erase" ent "")
     (command "_.fillet" st et)
     )
    ((wcmatch ent_type "*POLYLINE")
     (setq wid (cdr (assoc 40 (entget (car ent)))))
     (setq pt (vlax-curve-getClosestPointTo (car ent) (cadr ent)))
     (setq par        (vlax-curve-getParamAtPoint  (car ent) pt))
     (setq st (vlax-curve-getPointAtParam (car ent) (fix par))
           et (vlax-curve-getPointAtParam (car ent) (1+ (fix par))))
     (setq bulge (vla-getbulge (vlax-ename->vla-object (car ent)) (fix par)))
     (setq ent0 (entlast))
     (command "_.explode" (car ent))
     (command "_.erase" (ssget "c" pt pt) "")
     (command "_.fillet" st et)
     (if (= bulge 0)
      (progn
        (setq s (entlast))
        (setq s_st (vlax-curve-getStartPoint (vlax-ename->vla-object s))
              s_et (vlax-curve-getEndPoint (vlax-ename->vla-object s))
        )
        (command "_.line" s_st s_et "")
        (command "_.erase" s "")
        )
      )
     (SETQ SSE (ENT_FROM ENT0))
     (P->PL SSE Wid)
     )   
    )
  (mapcar 'setvar '("chamfera" "chamferb" "filletrad") old-var)
  (princ)
  )

点评

还不是很好,要是能够框选,一次性倒全部角就好了,  发表于 2011-10-9 18:39
 楼主| 发表于 2011-10-10 19:46:12 | 显示全部楼层
我想说的是就像"ljttjl"贴出来的那样的,他有那程序可惜不愿意给源码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-9-28 09:30 , Processed in 0.146687 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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