这部分很少人去搞,下面是代码,供参考,和大家共同学习:
- ;;============================================================================
- ;;获取对象的注释比例列表值 (对象访问方法)
- (defun lkax_Annotative_GetEntityAnnoScales (en / ob xDicts lxDicts oDict loScales x y lenScales lelScales lScale_Name_Value)
- (setq ob (vlax-ename->vla-object en))
- (if (= (vla-get-HasExtensionDictionary ob) :VLAX-TRUE)
- (progn
- (setq xDicts (vla-GetExtensionDictionary ob))
- (setq lxDicts '())
- (vlax-for item xDicts
- (setq lxDicts (cons item lxDicts))
- )
- (setq lxDicts (reverse lxDicts))
- (setq vvv (nth 0 lxDicts))
- (setq oDict (vla-item vvv 0))
- (setq loScales '())
- (vlax-for item oDict
- (setq loScales (cons item loScales))
- )
- (setq lenScales (mapcar 'vlax-vla-object->ename loScales))
- (setq lelScales (mapcar '(lambda (x) (cdr (assoc 340 (entget x)))) lenScales))
- (setq lScale_Name_Value (mapcar '(lambda (x) (mapcar '(lambda (y) (cdr (assoc y (entget x)))) '(300 140 141))) lelScales))
- (setq lReturn (reverse lScale_Name_Value))
- )
- );_fi
- );_defun
- ;;获取对象的注释比例列表值 (传统 LISP 函数)
- (defun lkvl_Annotative_GetEntityAnnoScales (en / el v360 v350 elDictScales lenScales lelScales v340 elScale l lReturn)
- (if (lkvl_en_AnnotativeP en)
- (progn
- (setq el (entget en)
- v360 (cdr (assoc 360 el))
- v360 (cdr (assoc 360 (entget v360)))
- v350 (cdr (assoc 350 (entget v360)))
- elDictScales (entget v350)
- lenScales (vl-remove-if (function (lambda (x) (/= (car x) 350))) elDictScales)
- lelScales (mapcar (function (lambda (x) (entget (cdr x)))) lenScales)
- )
- (foreach item lelScales
- (setq v340 (cdr (assoc 340 item))
- elScale (entget v340)
- l (list (cdr (assoc 300 elScale))
- (cdr (assoc 140 elScale))
- (cdr (assoc 141 elScale))
- )
- lReturn (cons l lReturn)
- )
- );;for
- (setq lReturn (reverse lReturn))
- )
- );_fi
- );_defun
- ;;=====================================
- (defun lkvl_en_AnnotativeP (en / el g-3 l_xdata iFlag)
- (setq el (entget en '("AcadAnnotative")))
- (if (setq g-3 (assoc -3 el))
- (progn
- (setq l_xdata (cadr g-3)
- iFlag (cdr (nth 4 l_xdata));g=1070 ,if iFlag=0 , the object have been changed to not_Annotative.
- )
- (and l_xdata (= iFlag 1))
- )
- );_fi
- );_defun
|