edata大师的,顺路改改!
- (defun sk_get_circle_cen (en / obj x cen)
- (if (and en
- (= (type en) 'ENAME)
- )
- (progn
- (vlax-for X
- (vla-item
- (vla-get-blocks
- (vla-get-ActiveDocument (vlax-get-acad-object))
- )
- (vla-get-name (setq OBJ (vlax-ename->vla-Object en)))
- )
- (if (wcmatch (vla-get-ObjectName X) "AcDbCircle")
- (setq cen (vla-get-center X ))
- )
- )
- (if cen (vlax-safearray->list(vlax-variant-value cen )))
- )
- )
- )
- ;;获取等比缩放块块内圆心,非等比缩放不正确
- ;;code by edata@mjtd 2015年7月29日
- (defun c:tt(/ _dxf en cen1 ds a41 a50 p10 cen2)(vl-load-com)
- (defun _dxf(e i)(cdr(assoc i (entget e))))
- (setq en(car(entsel)))
- (if (= "INSERT" (_dxf en 0))(progn
- (setq cen1(sk_get_circle_cen en))
- (setq ds(distance '(0 0 0) cen1))
- (setq a41(_dxf en 41)
- a50(_dxf en 50)
- p10(_dxf en 10)
- )
- (setq cen2 (polar p10 (+ (angle '(0 0 0) cen1) a50) (* ds a41)))
- (vla-GetBoundingBox (vlax-ename->vla-Object en) 'Minp 'Maxp)
- (setq pt (cadr (mapcar 'vlax-safearray->list (list Minp Maxp))))
- ))
- (command "_dimlinear" cen2 pt PAUSE)
- (princ)
- )
|