jonesy 发表于 2008-8-12 10:22:31

找出文件被xreffed到哪些图纸

如果我有一个用作基本外部参照的图形。有什么方法可以找出哪些图形使用此基础图形作为外部参照?
当我更改此“基础平面图”时,我正在尝试跟踪哪些图纸将会更改(我认为如果我们使用Projectwise,我可以做到这一点,但我正在尝试确定没有该软件是否可以做到这一点)
非常感谢
**** Hidden Message *****

jonesy 发表于 2008-8-12 10:30:19

我一直在设计中心使用搜索功能。 将“查找”框更改为外部参照。 对我来说似乎工作正常。
我也看到其他人在VBA中这样做。

Gliderider 发表于 2008-8-12 11:10:13

Andy,
感谢您的回复,我非常希望这对我有用,但我一定是做错了什么,因为如果我在下拉框中选择xrefs,我无法让它找到任何xrefs...

jonesy 发表于 2008-8-12 11:43:52

它还没有让我失望,你在按图示搜索吗?

T.Willey 发表于 2008-8-12 11:47:59

这是我在@CADTutor;当时我得到了LCE的很多帮助。他说它仍在开发中,因为他正在尝试添加对图像/OLE/等的支持 " msg))
      )
    )
    ;----------------------------------------------------------
    (defun FindXrefs (doc str / tempName tempList)
      
      (vlax-for i (vla-get-Blocks doc)
            (if
                (and
                  (= (vla-get-IsXref i) :vlax-true)
                  (or
                        (wcmatch (strcase (setq tempName (vla-get-Name i))) (strcase str))
                        (= str "")
                  )
                )
                (setq tempList (cons tempName tempList))
            )
      )
      tempList
    )
    ;-------------------------------------------------
    (defun Directory-Dia ( Message / sh folder folderobject result)
    ;; By Tony Tanzillo
    ;; Modified by Tim Willey
    ;; 16 Will let you type in the path
    ;; 64 Will let you create a new folder
            (vl-load-com)
            (setq sh
                    (vla-getInterfaceObject
                            (vlax-get-acad-object)
                            "Shell.Application"
                    )
            )
            (setq folder
                    (vlax-invoke-method
                            sh
                            'BrowseForFolder
                            (vla-get-HWND (vlax-get-Acad-Object))
                            Message
                            0 ; This is the bit number to change.
                    )
            )
            (vlax-release-object sh)
            (if folder
                    (progn
                            (setq folderobject
                                    (vlax-get-property folder 'Self)
                            )
                            (setq result
                                    (vlax-get-property FolderObject 'Path)
                            )
                            (vlax-release-object folder)
                            (vlax-release-object FolderObject)
                            (if (/= (substr result (strlen result)) "\\")
                                    (setq result (strcat result "\\"))
                                    result
                            )
                    )
            )
    )
    ;----------------------------------------------------------------
    (defun MultiSelect (Listof Message Toggle / DiaLoad tmpStr tmpTog tmpList)
            (setq DiaLoad (load_dialog "MyDialogs.dcl"))
            (if (new_dialog "MultiSelect" DiaLOad)
                    (progn
                            (start_list "listbox" 3)
                            (mapcar 'add_list Listof)
                            (end_list)
                            (if Message
                            (set_tile "text1" Message)
                            )
                            (if (not Toggle)
                                    (mode_tile "toggle1" 1)
                            )
                            (mode_tile "listbox" 2)
                            (action_tile "accept"
                                    "(progn
                                            (setq tmpStr (get_tile \"listbox\"))
                                            (if Toggle
                                                    (setq tmpTog (get_tile \"toggle1\"))
                                            )
                                            (done_dialog 1)
                                    )"
                            )
                            (action_tile "cancel" "(done_dialog 0)")
                            (if (= (start_dialog) 1)
                                    (progn
                                            (if tmpStr
                                                    (setq tmpList (read (strcat "(" tmpStr ")")))
                                            )
                                            (if (= tmpTog "1")
                                                    (cons T tmpList)
                                                    tmpList
                                            )
                                    )
                            )
                    )
            )
    )
    ;----------------------------------------------------------------
    (if
      (and
            (setq CkStr (getstring "\n Enter name to check for [*]: "))
            (setq DirPath (Directory-Dia "Select directory to search for xrefs."))
            (setq DwgList (vl-directory-files DirPath "*.dwg" 1))
            (setq DwgList (vl-sort DwgList '(lambda (a b) ( " msg))
      )
    )
    ;----------------------------------------------------------
    (defun FindXrefs (doc str / tempName tempList)
      
      (vlax-for i (vla-get-Blocks doc)
            (if
                (and
                  (= (vla-get-IsXref i) :vlax-true)
                  (or
                        (wcmatch (strcase (setq tempName (vla-get-Name i))) (strcase str))
                        (= str "")
                  )
                )
                (setq tempList (cons tempName tempList))
            )
      )
      tempList
    )
    ;-------------------------------------------------
    (defun Directory-Dia ( Message / sh folder folderobject result)
    ;; By Tony Tanzillo
    ;; Modified by Tim Willey
    ;; 16 Will let you type in the path
    ;; 64 Will let you create a new folder
            (vl-load-com)
            (setq sh
                    (vla-getInterfaceObject
                            (vlax-get-acad-object)
                            "Shell.Application"
                    )
            )
            (setq folder
                    (vlax-invoke-method
                            sh
                            'BrowseForFolder
                            (vla-get-HWND (vlax-get-Acad-Object))
                            Message
                            0 ; This is the bit number to change.
                    )
            )
            (vlax-release-object sh)
            (if folder
                    (progn
                            (setq folderobject
                                    (vlax-get-property folder 'Self)
                            )
                            (setq result
                                    (vlax-get-property FolderObject 'Path)
                            )
                            (vlax-release-object folder)
                            (vlax-release-object FolderObject)
                            (if (/= (substr result (strlen result)) "\\")
                                    (setq result (strcat result "\\"))
                                    result
                            )
                    )
            )
    )
    ;----------------------------------------------------------------
    (defun GetAllFiles (dir ext / FileList)
      (if (/= (substr dir (strlen dir)) "\\")
            (setq dir (strcat dir "\\"))
      )
      (if (setq tempList (vl-directory-files dir ext 1))
            (setq FileList (append FileList (mapcar '(lambda (x) (strcat dir x)) tempList)))
      )
      (if (setq tempList (cddr (vl-directory-files dir "*" -1)))
            (foreach i tempList
                (setq FileList (append FileList (GetAllFiles (strcat dir i) ext)))
            )
      )
      FileList
    )
    ;----------------------------------------------------------------
    (if
      (and
            (setq CkStr (getstring "\n Enter name to check for [*]: "))
            (setq DirPath (Directory-Dia "Select directory to search for xrefs."))
            (setq DwgList (GetAllFiles DirPath "*.dwg"))
            (setq Opened (open (setq tempFile (strcat Dirpath "XrefFindReport.txt")) "w"))
            (setq dbxApp
                (if (< (atoi (setq oVer (substr (getvar "acadver") 1 2))) 16)
                  (vla-GetInterfaceObject (vlax-get-acad-object) "ObjectDBX.AxDbDocument")
                  (vla-GetInterfaceObject (vlax-get-acad-object) (strcat "ObjectDBX.AxDbDocument." oVer))
                )
            )
      )
      (foreach i DwgList
            (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-Open (list dbxApp i)))
                (write-line (strcat "++ Error opening file: " i "\n") Opened)
                (if (setq XrFound (FindXrefs dbxApp CkStr))
                  (progn
                        (write-line (strcat "- " i) Opened)
                        (foreach j XrFound
                            (write-line (strcat "    " j) Opened)
                        )
                        (write-line "\n" Opened)
                  )
                )
            )
      )
    )
    (prompt (strcat "\n Log file: " tempFile))
    (*error* nil)
    (princ)
)

jonesy 发表于 2008-8-12 11:54:36

这很光滑的蒂姆
页: [1]
查看完整版本: 找出文件被xreffed到哪些图纸