明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2667|回复: 11

[求助]求凹倒角的方法

  [复制链接]
发表于 2007-3-6 21:39 | 显示全部楼层 |阅读模式

如图,我想了好久,不知道用什么方法.

本帖子中包含更多资源

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

x
发表于 2007-3-7 09:20 | 显示全部楼层
本帖最后由 作者 于 2007-3-7 9:29:24 编辑

用LISP 应是比较容易实现,刚写的,请参考!
  1. ;;;功能:倒反角
  2. ;;;编写:包达勇
  3. ;;;时间:2007-03-07
  4. (defun c:test (/ BASRAD DXF EA ENAME1 ENAME2 ENLAST1 ENLAST2 RAD SA VL)
  5.   (setq ename1 (entsel)
  6. ename2 (entsel)
  7. rad    (getreal "\n请输入半径:")
  8.   )
  9.   (if (and rad ename1 ename2 (not (eq ename1 ename2)))
  10.     (progn
  11.       (setq basrad(getvar"filletrad"))
  12.       (setvar"filletrad"rad)
  13.       (setq enlast1 (entlast))
  14.       (command ".fillet" ename1 ename2)
  15.       (setq enlast2 (entlast))
  16.       (if (not (eq enlast1 enlast2))
  17. (progn
  18.    (setq vl  (vlax-ename->vla-object enlast2)
  19.   dxf (entget enlast2)
  20.   sa  (vla-get-startangle vl)
  21.   ea  (vla-get-endangle vl)
  22.   dxf (subst (CONS 50 ea) (assoc 50 dxf) dxf)
  23.   dxf (subst (CONS 51 sa) (assoc 51 dxf) dxf)
  24.    )
  25.    (entmod dxf)
  26. )
  27.       )
  28.       (setvar"filletrad"basrad)
  29.     )
  30.   )
  31.   (princ)
  32. )
发表于 2007-3-7 09:37 | 显示全部楼层
还发现有两种效果,
  1. ;;;功能:倒反角对称效果
  2. ;;;编写:包达勇
  3. ;;;时间:2007-03-07
  4. (defun c:test (/ BASRAD DXF EA ENAME1 ENAME2 ENLAST1 ENLAST2 RAD SA VL)
  5.   (setq ename1 (entsel)
  6. ename2 (entsel)
  7. rad    (getreal "\n请输入半径:")
  8.   )
  9.   (if (and rad ename1 ename2 (not (eq ename1 ename2)))
  10.     (progn
  11.       (setq basrad(getvar"filletrad"))
  12.       (setvar"filletrad"rad)
  13.       (setq enlast1 (entlast))
  14.       (command ".fillet" ename1 ename2)
  15.       (setq enlast2 (entlast))
  16.       (if (not (eq enlast1 enlast2))
  17. (progn
  18.    (setq vl (vlax-ename->vla-object enlast2)
  19.   SPT(vlax-curve-getstartpoint enlast2)
  20.   EPT(vlax-curve-getendpoint enlast2))
  21.    (vla-mirror vl(vlax-3d-point spt)(vlax-3d-point ept))
  22.    (entdel enlast2)
  23. )
  24.       )
  25.       (setvar"filletrad"basrad)
  26.     )
  27.   )
  28.   (princ)
  29. )
 楼主| 发表于 2007-3-7 22:32 | 显示全部楼层

本帖子中包含更多资源

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

x
发表于 2007-3-8 09:38 | 显示全部楼层
感謝經常給我難題的人,讓我可以不斷學習!
  1. ;;;编写:包达勇
  2. ;;;时间:2007-03-08
  3. (defun c:test
  4.        (/ AN1 AN2 ARC C1 C1I C2I ENAME1 ENAME2 INP RAD VL1 VL2 VL3)
  5.   (setq ename1 (entsel)
  6. ename2 (entsel)
  7. rad    (getreal "\n请输入半径:")
  8.   )
  9.   (if (and rad ename1 ename2 (not (eq ename1 ename2)))
  10.     (progn
  11.       (SETQ vl1 (vlax-ename->vla-object (CAR ename1))
  12.      vl2 (vlax-ename->vla-object (CAR ename2))
  13.      INP (VLAX-SAFEARRAY->LIST
  14.     (VLAX-VARIANT-VALUE
  15.       (VLA-INTERSECTWITH VL1 VL2 ACEXTENDBOTH)
  16.     )
  17.   )
  18.       )
  19.       (entmake (APPEND '((0 . "CIRCLE")
  20.     (100 . "AcDbEntity")
  21.     (100 . "AcDbCircle")
  22.     (8 . "0")
  23.    )
  24.          (LIST (CONS 40 rad) (CONS 10 INP))
  25.         )
  26.       )
  27.       (SETQ C1 (ENTLAST)
  28.      VL3 (vlax-ename->vla-object C1)
  29.       )
  30.       (SETQ C1I (VLAX-SAFEARRAY->LIST
  31.     (VLAX-VARIANT-VALUE
  32.       (VLA-INTERSECTWITH VL3 VL1 ACEXTENDNONE)
  33.     )
  34.   )
  35.      C2I (VLAX-SAFEARRAY->LIST
  36.     (VLAX-VARIANT-VALUE
  37.       (VLA-INTERSECTWITH VL3 VL2 ACEXTENDNONE)
  38.     )
  39.   )
  40.       )
  41.       (IF (AND C1I C2I)
  42. (PROGN
  43.    (SETQ AN1 (ANGLE INP C1I)
  44.   AN2 (ANGLE INP C2I)
  45.    )
  46.    (IF (> AN1 AN2)
  47.      (ENTMAKE (APPEND '((0 . "ARC")
  48.           (100 . "AcDbEntity")
  49.           (100 . "AcDbCircle")
  50.           (210 0.0 0.0 1.0)
  51.          )
  52.         (LIST (CONS 10 INP)
  53.        (CONS 40 rad)
  54.        (CONS 50 AN2)
  55.        (CONS 51 AN1)
  56.         )
  57.        )
  58.      )
  59.      (ENTMAKE (APPEND '((0 . "ARC")
  60.           (100 . "AcDbEntity")
  61.           (100 . "AcDbCircle")
  62.           (210 0.0 0.0 1.0)
  63.          )
  64.         (LIST (CONS 10 INP)
  65.        (CONS 40 rad)
  66.        (CONS 50 AN1)
  67.        (CONS 51 AN2)
  68.         )
  69.        )
  70.      )
  71.    )
  72.    (SETQ ARC (ENTLAST))
  73.    (COMMAND ".TRIM"
  74.      (LIST ARC C1I)
  75.      ""
  76.      (LIST (CAR ename1) INP)
  77.      (LIST (CAR ename2) INP)
  78.      ""
  79.    )
  80.    (ENTDEL C1)
  81. )
  82.       )
  83.     )
  84.   )
  85.   (princ)
  86. )
 楼主| 发表于 2007-3-8 22:34 | 显示全部楼层

 感谢版主对我问题的一直关注,我还想要完善一点,如图:

顺便问一下,如果要重复同一个命令,开一个R50的圆,应该如何编?

本帖子中包含更多资源

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

x
发表于 2007-3-9 14:44 | 显示全部楼层

试试下段代码,符不符合你的要求,ang也可以不通过倒圆求。

(DEFUN TEST( / ename1 ename2 rad basrad enlast PT1 PT2 ang ang1 ang2 ptc)
   (setq ename1 (entsel "\n请选择对象1")
  ename2 (entsel "\n请选择对象2")
  rad    (getreal "\n请输入半径:")
   )
  (if (and rad ename1 ename2 (not (eq ename1 ename2)))
     (progn
       (setq basrad (getvar"filletrad"))
       (setvar "filletrad" 1)
       (command ".fillet" ename1 ename2)
       (setq enlast (entlast) DXF (ENTGET ENLAST))
       (if (= "ARC" (CDR (ASSOC 0 DXF)))
  (PROGN
    (SETQ PT1 (POLAR (CDR (ASSOC 10 DXF)) (CDR (ASSOC 50 DXF)) (CDR (ASSOC 40 DXF))))
    (SETQ PT2 (POLAR (CDR (ASSOC 10 DXF)) (CDR (ASSOC 51 DXF)) (CDR (ASSOC 40 DXF))))
    (command "_.erase" enlast "")
    (setq ang1 (CDR (ASSOC 50 DXF)) ang2 (CDR (ASSOC 51 DXF)))
    (if (> ang1 ang2)
      (setq ang1 (- ang1 (* pi 2.0)))
    )
    (setq ang (/ (- ang2 ang1) 2))
    (setvar "filletrad" (/ rad (/ (sin ang) (cos ang))))
    (command ".fillet" ename1 ename2)
           (setq enlast (entlast) DXF (ENTGET ENLAST))
    (SETQ PT1 (POLAR (CDR (ASSOC 10 DXF)) (CDR (ASSOC 50 DXF)) (CDR (ASSOC 40 DXF))))
    (SETQ PT2 (POLAR (CDR (ASSOC 10 DXF)) (CDR (ASSOC 51 DXF)) (CDR (ASSOC 40 DXF))))
    (setq ptc (POLAR (CDR (ASSOC 10 DXF)) (+ ang1 ang) (/ (CDR (ASSOC 40 DXF)) (cos ang))))
    (command "_.arc" "c" ptc pt2 pt1)
    (command "_.erase" enlast "")
  )
       (setvar "filletrad" basrad)
       )
     )
    )
  (princ)
   )

发表于 2007-3-13 08:18 | 显示全部楼层
楼主不要光提出问题,也要自已试着解决自已提出的问题啊!自已动手丰衣足食 !!!
发表于 2007-3-13 10:48 | 显示全部楼层
对,楼主不要光提出问题,也要自已试着解决自已提出的问题啊!现在好多人都在提问题,不想方法解决问题,只有思考了才会有进步,共同学习,共同进步,才是论坛的初衷!!!
 楼主| 发表于 2007-3-13 21:25 | 显示全部楼层
好的,谢谢各位的帮助
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-19 00:52 , Processed in 0.189024 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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