- 积分
- 43080
- 明经币
- 个
- 注册时间
- 2010-5-9
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
本帖最后由 自贡黄明儒 于 2014-9-1 08:52 编辑
下面没有用vlax-for,便于清楚看到各成员
是否符合你的要求未知,但可参考一下
(defun C:w1 ()
(cond ((not *DOC*) (setq *DOC* (vla-get-ActiveDocument *ACAD*))))
(setq n (vla-get-Count (vla-get-Blocks *DOC*))) ;当有文档块集合数量
(repeat n
(setq obj (vla-item (vla-get-Blocks *DOC*) (setq n (1- n))))
(princ (strcat "\n" (vla-get-objectname obj) " " (vla-get-name obj)))
)
;|
AcDbBlockTableRecord TYBTL
AcDbBlockTableRecord bjg
AcDbBlockTableRecord base
AcDbBlockTableRecord ccd1
AcDbBlockTableRecord _DotSmall
AcDbBlockTableRecord *Paper_Space0
AcDbBlockTableRecord *Paper_Space
AcDbBlockTableRecord *Model_Space,模型空间也算块
|;
(setq obj (vla-item (vla-get-Blocks *DOC*) 4)) ;AcDbBlockTableRecord ccd1第5
(setq n (vla-get-Count obj)) ;此块由4个元素组成,说明上句obj也算集合
(repeat n
(setq i (vla-item obj (setq n (1- n))))
(princ (strcat "\n" (vla-get-objectname i)))
)
;|
AcDbAttributeDefinition
AcDbLine
AcDbLine
AcDbLine
|;
(setq i (vla-item obj 3)) ;AcDbAttributeDefinition
)
;;打开的文件
(defun C:w2 ()
(cond ((not *ACAD*) (setq *ACAD* (vlax-get-acad-object))))
(cond ((not *DOCS*) (setq *DOCS* (vla-get-Documents *ACAD*))))
;;(setq n (vlax-get *DOCS* 'Count))
;;(vlax-get-property *DOCS* 'count)
;;(vla-get-Count *DOCS*)
(setq n -1)
(repeat (vlax-get-property *DOCS* 'count)
(spin* "请稍侯...")
(setq doc (vla-item *DOCS* (setq n (1+ n))))
(setq LOUTS (vla-get-Layouts doc))
;;(setq docname (vlax-get doc 'fullname))未保存时为""
(setq docname
(strcat
(vlax-get-property doc 'Path)
"\\"
(vlax-get-property doc 'Name)
)
) ;"C:\\Program Files\\AutoCAD 2005\
\Drawing2.dwg"
)
)
;;当前文件
(defun C:w3 ()
(cond ((not *ACAD*) (setq *ACAD* (vlax-get-acad-object))))
(cond ((not *DOC*) (setq *DOC* (vla-get-ActiveDocument *ACAD*))))
(setq LOUTS (vla-get-Layouts *DOC*))
(repeat (setq n (vla-get-Count LOUTS))
(setq layout (vla-item LOUTS (setq n (1- n))))
(princ (strcat "\n" (vla-get-objectname layout) " " (vla-get-name layout)))
;|
AcDbLayout Model
AcDbLayout Layout2
AcDbLayout Layout1
|;
)
(setq layout (vla-item LOUTS 0))
(princ (strcat "\n" (vla-get-objectname layout) " " (vla-get-name layout)))
(setq objs (vla-get-block layout)) ;这是模空间下的5个对象,不是我平常说的块,是指
任何实体
(repeat (setq i (vlax-get objs 'count))
(setq obj (vla-item objs (setq i (1- i))))
(princ (strcat "\n" (vla-get-objectname obj))) ;不是每个对象(vla-get-name obj)
;|AcDbLine
AcDbBlockReference
AcDbBlockReference
AcDbBlockReference
AcDbBlockReference|;
(if (= (vla-get-objectname obj) "AcDbBlockReference")
(if (and
(= (vla-get-hasattributes obj) :vlax-true)
(safearray-value
(setq atts
(vlax-variant-value
(vla-getattributes obj)
)
)
)
)
(foreach tag (vlax-safearray->list atts)
(if
(vla-get-tagstring tag)
(setq vals (cons (vla-get-TextString tag) vals))
)
)
)
)
)
) |
评分
-
查看全部评分
|