明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 972|回复: 1

[资源] 倒角标注

[复制链接]
发表于 2016-9-19 21:03 | 显示全部楼层 |阅读模式
上班太闲了,做了个引线倒角标注,分享给大家!


源码如下:
(defun c:dc (/     v1    v2   v3  v4 v5     v6     v7
      v8     v9    en   object pt0 obname fixpoint
      fitplt endpt1 endpt2 chang1 chang2 pt2    pt4    pt1
      cjsl   ggg    ang   chang  chang3 pt3 v10
     )
  (vl-load-com)
  (setq v1 (getvar "osmode"))
  (setq v2 (getvar "cmdecho"))
  (setq v3 (getvar "blipmode"))
  (setq v4 (getvar "dimblk"))
  (setq v5 (getvar "dimstyle"))
  (setq v6 (getvar "dimclrd"))
  (setq v7 (getvar "dimgap"))
  (setq v8 (getvar "dimasz"))
  (setq v9 (getvar "dimldrblk"))
  (setq v10 (getvar "dimtad" ))
  (setvar "dimasz" 0)
  (command "dimldrblk" "_none")
  (setvar "osmode" 0)
  (setvar "cmdecho" 0)
  (setvar "blipmode" 0)
  (setvar "dimtad" 1)
  (graphscr)
  (setq en     (entsel "\n选择倒角边!")
object (vlax-ename->vla-object (car en))
pt0    (cadr en)
  )
  (setq obname (vla-get-objectname object))
  (cond ((= obname "AcDbSpline")
  (progn
    (if (= (vla-get-splinemethod object) 1)
      (vla-put-splinemethod object 0)
    )
    (setq fixpoint (vla-get-numberoffitpoints object))
    (setq fitplt (vlax-safearray->list
     (vlax-variant-value (vla-get-fitpoints object))
   )
    )
    (setq endpt1 (list (nth 0 fitplt) (nth 1 fitplt) (nth 2 fitplt)))
    (setq endpt2 (list (nth (- (* fixpoint 3) 3) fitplt)
         (nth (- (* fixpoint 3) 2) fitplt)
         (nth (- (* fixpoint 3) 1) fitplt)
   )
    )
  )
)
((= obname "AcDbLine")
  (progn
    (setq endpt1 (vlax-safearray->list
     (vlax-variant-value (vla-get-endpoint object))
   )
    )
    (setq endpt2 (vlax-safearray->list
     (vlax-variant-value (vla-get-startpoint object))
   )
    )
  )
)
  )
  (setq chang1 (distance endpt1 pt0))
  (setq chang2 (distance endpt2 pt0))
  (setq pt2 (cond ((< chang1 chang2) endpt1)
    ((> chang1 chang2) endpt2)
    (t endpt1)
     )
  )
  (setq pt4 (cond ((> chang1 chang2) endpt1)
    ((< chang1 chang2) endpt2)
    (t endpt2)
     )
  )
  (setq pt1 (getpoint pt2 "\n放置点:"))
  (setq ang (angle pt4 pt2))
  (if (or (= ang (* pi 0.25))
   (= ang (* pi 0.75))
   (= ang (* pi 1.25))
   (= ang (* pi 1.75))
      )
    (progn
      (setq cjsl (getstring "\n输入倒角个数!"))
      (if (or (= cjsl "") (= cjsl nil))
(setq cjsl "")
(setq cjsl (strcat cjsl "-"))
      )
      (setq chang (strcat cjsl
     "C"
     (rtos (/ (distance endpt1 endpt2) (sqrt 2)))
    )
      )
    )
    (progn
      (setq chang
      (strcat (rtos (abs (* (distance endpt1 endpt2) (cos ang))))
       "x"
       (rtos (abs (* (distance endpt1 endpt2) (sin ang))))
      )
      )
    )
  )
  (setq chang3 (distance pt2 pt1))
  (setq pt3 (polar pt2 ang chang3))
  (command "leader" pt2 pt3 "" chang "" "")
  (setvar "osmode" v1)
  (setvar "cmdecho" v2)
  (setvar "blipmode" v3)
  (setvar "dimblk" v4)
  (command "dimstyle" "r" v5)
  (setvar "dimclrd" v6)
  (setvar "dimgap" v7)
  (setvar "dimasz" v8)
  (setvar "dimldrblk" v9)
  (setvar "dimtad" v10)
  (princ)
)

本帖子中包含更多资源

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

x
发表于 2016-9-22 15:38 | 显示全部楼层
点赞  不错的LSP代码,不过我一般喜欢这样倒角标注,箭头和倒角线垂直或者有个角度也可以,但是  不是和倒角线平行的,感觉更好看些,嘿嘿 。楼主见笑了.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-2 10:57 , Processed in 2.679699 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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