好啊
- (defun c:gecen(/ cSet cLst oldSnp cCen cAre cmLst gCen)
-
- (vl-load-com)
-
- (princ "\n<<<Select Regions or 3D-solids >>> ")
- (if(setq cSet(ssget '((0 . "REGION,3DSOLID"))))
- (progn
- (setq cLst(mapcar 'vlax-ename->vla-object
- (vl-remove-if 'listp
- (mapcar 'cadr(ssnamex cSet))))
- oldSnp(getvar "OSMODE")
- ); end setq
- (mapcar 'setvar (list "OSMODE" "CMDECHO")(list 0 0))
- (foreach ent cLst
- (if(vlax-property-available-p ent 'Centroid)
- (progn
- (setq cCen(vlax-get ent 'Centroid)
- cAre(vlax-get ent 'Area)
- cmLst(cons(list cCen cAre)cmLst)
- ); end setq
- (command "_.circle" cCen "50.0")
- ); end progn
- ); end if
- ); end foreach
- (if
- (and
- cmLst
- (/= 1(length cmLst))
- ); enad and
- (progn
- (setq gCen
- (list
- (/
- (apply '+
- (mapcar '*
- (mapcar 'caar cmLst)(mapcar 'cadr cmLst)))
- (apply '+ (mapcar 'cadr cmLst))
- ); end /
- (/
- (apply '+
- (mapcar '*
- (mapcar 'cadar cmLst)(mapcar 'cadr cmLst)))
- (apply '+ (mapcar 'cadr cmLst))
- ); end /
- ); end list
- ); end setq
- (command "_.circle" gCen "50")
- (foreach pt(mapcar 'car cmLst)
- (command "_.line" pt gCen "")
- ); end foreach
- ); end progn
- ); end if
- (mapcar 'setvar (list "OSMODE" "CMDECHO")(list oldSnp 1))
- ); end progn
- ); end if
- (princ)
- ); end of c:gecen
我可以添加带有坐标的引线,但我不知道您需要的文本大小。或者您需要请求文本大小和圆直径 |