Тема: Чтение SummaryInfo не открывая Автокада

Задача: прочесть минимум 2 строки свойств файла *.DWG (автокад установлен) не открывая рисунка (записать эти строки нужно находясьв автокаде).

Читать я собираюсь этим скриптом на VBS

Const PropsCount = 45
Set objFSO = CreateObject ("Scripting.FileSystemObject")
Set objFile = objFSO.GetFile("D:\TDMS\05R11D\10UHG\5247\05R11D-10UHG-5247-HV.T#3.dwg")
Set objShell = CreateObject ("Shell.Application")
Set objFolder = objShell.Namespace(objFile.ParentFolder.Path)
Set objItem = objFolder.ParseName("05R11D-10UHG-5247-HV.T#3.dwg")
if objFolder is nothing then
Wscript.Echo "Folder not found!" 
Wscript.Quit
end if
Dim arrHeaders(50)
Set objItems = objFolder.Items()
For i = 0 to PropsCount
arrHeaders(i) = objFolder.GetDetailsOf (objItems, i)   
Next
Set objItem = objFolder.ParseName(objFile.Name)
if objItem is nothing then
Wscript.Echo "Folder item not found!" 
Wscript.Quit
end if 
strResult = vbNullString
strResult = "Информация об объекте """ & objItem.Path & """:" & vbCrLf
For i = 0 to PropsCount
strResult = strResult & arrHeaders(i) & ": " & objFolder.GetDetailsOf (objItem, i) & vbCrLf
Next 
MsgBox strResult, vbInformation

надо забить в скрипте свой путь и имя файла

но данный скрипт читает только данные закладки свойств "Сводка", которую я могу заполнить только вручную.
Вопрос: как заполнить ЭТУ закладку программно (можно из автокада) или как прочесть свойства на закладке "Прочие" (легко заполняется-читается в автокаде) не открывая автокад?

Re: Чтение SummaryInfo не открывая Автокада

1. Задаешь вопрос в форуме lisp, а пример приводишь на VBA
2. Не пользуешься поиском: https://www.caduser.ru/forum/topic22867.html

Re: Чтение SummaryInfo не открывая Автокада

Спасибо Алексанндр, действительно ошибся с форумом. Функция отличная, а можно ли то же самое прочесть скриптом не открывая автокада? Я ничего похожего не нашел.

(изменено: Александр Ривилис, 19 марта 2012г. 02:03:47)

Re: Чтение SummaryInfo не открывая Автокада

Михаил Левнер пишет:

Функция отличная, а можно ли то же самое прочесть скриптом не открывая автокада? Я ничего похожего не нашел.

Прочитай дальше тему, ссылку на которую я дал. Там есть исходник на C++.
Или здесь на C#/VB.NET: www.theswamp.org/index.php?topic=36419.msg415688 (требуется бесплатная регистрация).

Re: Чтение SummaryInfo не открывая Автокада

Михаил Левнер пишет:

Спасибо Алексанндр, действительно ошибся с форумом. Функция отличная, а можно ли то же самое прочесть скриптом не открывая автокада? Я ничего похожего не нашел.

Идея такая

;;;--------------------------------- code start ----------------------------------;;;

;;;  fixo () 2012 * all rights released
;;;  3/15/12
(defun odbx-test (/ dbx_doc)
  ;; edited 5/28/06 by Jeff M
  ;; modified slightly to work with more versions
  (if (< (setq dbxver (atof (getvar "ACADVER"))) 15.06)
    (progn (alert
         "ObjectDBX method not applicable\nin this AutoCAD version"
       )
       (exit)
       (princ)
       (gc)
    )
    (progn
      (if (= (atoi (getvar "ACADVER")) 15)
    (progn

      (if (not (vl-registry-read
             "HKEY_CLASSES_ROOT\\ObjectDBX.AxDbDocument\\CLSID"
           )
          )
        (startapp "regsvr32.exe"
              (strcat "/s \"" (findfile "axdb15.dll") "\"")
        )
      )

      (setq    dbx_doc    (vla-getinterfaceobject
              (vlax-get-acad-object)
              "ObjectDBX.AxDbDocument"
            )
      )
    )

    (setq dbx_doc (vla-getinterfaceobject
            (vlax-get-acad-object)
            (strcat "ObjectDBX.AxDbDocument." (itoa(fix dbxver)))
              )
    )
      )
    )
  )
)
(defun C:RDWG(/ adoc datum dbxdoc dwginfo fname i result)

  (if
    (setq fname    (getfiled "Select drawing to read properies: "
              (getvar 'dwgprefix)
              "dwg"
              16))
     (progn
       (setq adoc (vla-get-ActiveDocument
            (vlax-get-acad-object)
            )
         )

       (if (and    (not (setq dbxdoc (odbx-test)))

        (not (vl-catch-all-error-p
               (vl-catch-all-apply 'vla-open (list dbxdoc fname))
               )
             )
        )
     (progn

       (setq dwginfo (vla-get-summaryinfo dbxdoc))

       (setq i   0
         msg "");<--msg is global

       (mapcar '(lambda (x)
              (if (not (eq "" (vlax-get dwginfo x)))
            (setq msg (strcat (strcat msg
                          (vl-princ-to-string x)
                          "\t"
                          (vlax-get dwginfo x)
                          "\n")))))
           (list 'title
             'subject
             'author
             'lastsavedby
             'revisionnumber
             'comments
             'keywords
             'hyperlinkbase)
           )

(if (> (vla-numcustominfo dwginfo)0)
       (while (< i (vla-numcustominfo dwginfo))
         (vla-getcustombyindex dwginfo i 'key 'value)
         (vl-princ-to-string 'title)
         (setq msg (strcat msg key "\t" value "\n"))
         (setq i (1+ i))
         )
  )
       (vl-bb-set 'result msg)
       )
     )
       )
     (vlax-release-object dbxdoc)
     )
 (setq info (vl-bb-ref 'result))
 (if info (alert info)(alert "Problem to get a summary info"))
    (princ)
    )
(prompt "\n\t---\tСтарт команды: RDWG \t---")
(prin1)
(or (vl-load-com)
    (princ))
;;;--------------------------------- code end ----------------------------------;;;

Думаю несложно переделать на VBA

[FONT=Arial]~'J'~[/FONT]

Re: Чтение SummaryInfo не открывая Автокада

fixo,

Михаил Левнер пишет:

Функция отличная, а можно ли то же самое прочесть скриптом не открывая автокада?

Олег. Тщательнее... smile

(изменено: fixo, 15 марта 2012г. 18:14:22)

Re: Чтение SummaryInfo не открывая Автокада

Александр Ривилис пишет:

fixo, 




Цитата   


Михаил Левнер пишет:
Функция отличная, а можно ли то же самое прочесть скриптом   не открывая автокада  ?
Олег. Тщательнее...

[S]Ты прав, я просто подумал раз есть тема, почему бы не воспользоваться...
те кто будет пользоваться поиском может найдут это полезным[/S]
Читаем в первом посте

Задача: прочесть минимум 2 строки свойств файла *.DWG (автокад установлен) не открывая рисунка (записать эти строки нужно находясьв автокаде).

Comments?

Удачи :)

Re: Чтение SummaryInfo не открывая Автокада

fixo,

я имел ввиду записать в автокаде строки, которые можно прочесть не открывая автокада, приведенным скриптом.
такие строки в свойствах dwg файла находятся на вкладке "Сводка",  если смотреть в Windows, в автокаде - такой вкладки в свойствах нет, но вдруг..

Александр Ривилис

Спасибо, буду изучать.