试试这个
- (defun c:arcRL (/ acsp arcent arclen arcobj cm cpt oldht dimht dimobj ep fd id
- lenstr midp mtext mtxtpt rad radstr rot sp sset txtpt)
- (vl-load-com)
- (setq acsp (vla-get-block
- (vla-get-activelayout
- (vla-get-activedocument
- (vlax-get-acad-object))))
- )
- (setq cm (getvar "cmdecho"))
- (setvar"cmdecho" 0)
- (setq fd (getvar "fielddisplay"))
- (if (/= fd 0)(setvar "fielddisplay" 0))
- (if (= (setq oldht(getvar "dimtxt")) 0)
- (progn
- (initget 7)
- (setq dimht (getreal "\nEnter font height for multiline text: "))
- (setvar "dimtxt" dimht)
- )
- )
- (prompt "\n >> Select arcs >>")
- (if (setq sset (ssget (list (cons 0 "ARC"))))
- (while (setq arcent (ssname sset 0))
- (setq arcobj (vlax-ename->vla-object arcent))
- (setq sp (vlax-curve-getstartpoint arcobj)
- ep (vlax-curve-getendpoint arcobj)
- cpt (vlax-get arcobj 'Center)
- rad (vlax-get arcobj 'Radius)
- arclen (vlax-get arcobj 'ArcLength)
- midp (vlax-curve-getclosestpointto arcobj
- (vlax-curve-getpointatdist arcobj
- (/ arclen 2.))
- )
- txtpt (trans (polar cpt (angle cpt midp)(+ rad (* 5 (getvar "DIMTXT")))) 1 0)
- )
- (setq id (vla-get-objectid arcobj))
- (setq lenstr (strcat "L=%<[url="file://\\AcObjProp"]\\AcObjProp[/url] Object(%<[url="file://\\_ObjId"]\\_ObjId[/url] "
- (rtos id 2 0)
- ">%).ArcLength [url="file://\\f"]\\f[/url] "%ct8[1000]%pr0%lu2%ds44>%"))
- (setq radstr (strcat "[url="file://\\PR=%<\\AcObjProp"]\\PR=%<\\AcObjProp[/url] Object(%<[url="file://\\_ObjId"]\\_ObjId[/url] "
- (rtos id 2 0)
- ">%).Radius [url="file://\\f"]\\f[/url] "%pr2%lu2%ds44>%"))
- (setq dimobj (vlax-invoke acsp 'AddDimAngular cpt sp ep txtpt))
- (setq mtxtpt (trans (polar midp (angle cpt midp) (* 7 (getvar "DIMTXT"))) 1 0)
- rot (- (angle cpt midp)(/ pi 2)))
- (setq mtext (vlax-invoke acsp 'AddMText mtxtpt 0.0 (strcat lenstr radstr)))
- (vla-put-attachmentpoint mtext acAttachmentPointMiddleCenter)
- (vlax-invoke mtext 'Rotate cpt rot)
- (vlax-put mtext 'InsertionPoint mtxtpt)
- (vla-put-height mtext (getvar "DIMTXT"))
- (vla-put-textoverride dimobj " ")
- (vla-update dimobj)
- (ssdel arcent sset)
- )
- )
- (setvar"fielddisplay" fd)
- (setvar "dimtxt" oldht)
- (setvar "cmdecho" cm)
- (prin1)
- )
~'J'~ |