倒角标注
上班太闲了,做了个引线倒角标注,分享给大家!源码如下:
(defun c:dc (/ v1 v2 v3v4 v5 v6 v7
v8 v9 en object pt0 obname fixpoint
fitplt endpt1 endpt2 chang1 chang2 pt2 pt4 pt1
cjsl ggg ang changchang3 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)
)
点赞不错的LSP代码,不过我一般喜欢这样倒角标注,箭头和倒角线垂直或者有个角度也可以,但是不是和倒角线平行的,感觉更好看些,嘿嘿 。楼主见笑了.
页:
[1]