我有大约600个图形需要进行参照测试,看看是否有一些图形没有用作外部参照。所以我正在浏览所有的图形并获取外部参照,这样我就有了一个可搜索的列表。通过搜索列表,我可以计算每个图形被引用的次数
下面是我到目前为止所做的(好吧,不是真的,但我会发布DBX的东西)。它只是列出所有dwg及其外部参照/路径:
(setq文件(getFiles)文件夹(car文件)文件(cadr文件))
(“setq-xreflst(XRefDbx文件文件夹))
->
”((drawing1.dwg((xref1.path1)(xref2.path2)(xref3.path3))
和(drawing2.dwg((xref1.path1))
- (defun getFiles (/ path folder)
- (cond ((setq path (getfiled "Select a File" "" "dwg" (+ 4 128)))
- (list (setq folder (vl-filename-directory path))
- (vl-directory-files folder "*.dwg" 1)
- )
- )
- )
- )
- (defun XRefDbx (files folder / dbxDoc of filelst filesublst blklst)
- (cond
- ((and files
- (not (vl-catch-all-error-p
- (setq dbxDoc (vl-catch-all-apply
- 'vla-getInterfaceObject
- (list (vlax-get-acad-object)
- "ObjectDBX.AxDbDocument.16")))
- )
- )
- )
- (foreach file files
- (setq of (vl-catch-all-apply
- 'vlax-invoke-method
- (list dbxDoc 'Open (strcat folder "\" file))
- )
- )
- (cond ((vl-catch-all-error-p of)
- (princ (strcat file "Error: "
- (vl-catch-all-error-message of)))
- )
- ((setq dbxBlks (vlax-get-property dbxdoc "Blocks"))
- (vlax-for blk dbxBlks
- (cond ((= (vlax-get-property blk 'IsXRef) ':vlax-true)
- (setq bname (vlax-get-property blk 'Name))
- (setq en360
- (cdr
- (assoc 360 (entget (vlax-vla-object->ename blk)))
- )
- )
- (setq path (cdr (assoc 1 (entget en360))))
- (setq blklst (cons (cons bname path) blklst))
- )
- )
- ) ;_ vlax-for
- (setq filesublst
- (list file blklst)
- blklst nil
- )
- (vlax-release-object dbxBlks)
- )
- )
- (and filesublst (setq filelst (cons filesublst filelst)))
- (setq filesublst nil)
- ) ;_ foreach
- (vlax-release-object dbxdoc)
- (gc)
- )
- ((vl-catch-all-error-p dbxDoc)
- (princ (vl-string-subst
- "DBX interface"
- "application"
- (vl-catch-all-error-message dbxdoc)
- )
- )
- )
- ((not files) (princ "\nNo files found"))
- )
- filelst
- )
|