Тема: Можно ли "добраться" до "Свойств рисунка"?

В AutoCad Файл->Свойства рисунка на вкладке <Документ> есть поля для ввода имени, темы, автора, комментария. Можно ли до них "добраться" из кода на VBA?

Re: Можно ли "добраться" до "Свойств рисунка"?

Что такое поиск знаете?
https://www.caduser.ru/forum/topic6040.html

Re: Можно ли "добраться" до "Свойств рисунка"?

Спасибо за ссылку. Но у меня возникла следующая проблема:
Код

nameRecord = "DWGPROPS"
Set propsRecord = ThisDrawing.Dictionaries(nameRecord)

выдает ошибку Method Failed. Я попробовал в командной строке ввести следующую команду (setq listDwgProps (dictsearch (namedobjdict) "DWGPROPS")). Возвращаемый ею результат - nil. Почему такое может быть?

Re: Можно ли "добраться" до "Свойств рисунка"?

Очевидно потому, что Вы (или кто-то) в данном конкретном файле этот словарь "убил".
Попробуйте поэкспериментировать в новом, "чистом" файле.

Re: Можно ли "добраться" до "Свойств рисунка"?

Какая версия Автокада?
Описанные выше методы подходят для Acada 2000-2002.
Для А2004 это не пройдет, нужно использовать

Set propsRecord = ThisDrawing.SummaryInfo

Re: Можно ли "добраться" до "Свойств рисунка"?

В новом "чистом" файле также может не быть словаря - зависит от какого предка он рожден.
Словарь появляется или после первого вызова команды DWGPROPS или после его программного создания.
Программно словарь можно создать и на VBA - примеры в HELP. Но на VBA (и LISP черех ActiveX) это неудобно, так как старый словарь затирается, а обычно надо и сохранить какие-то старые свойства, и изменить, и добавить. LISP через entmakex позволяет это делать гибко (можно менять отдельные, ActiveX меняет все).
Читать свойства проще через LISP (dictsearch), но гибсче через ActiveX, так как можно прочитать свойства из не открытого файла.
В AutoCAD 2004 словарь свойств точно также остался внутри рисунка, на том же месте. Функция SummaryInfo используется операционной системой. В NTFS она выдаст много информации, в том числе дублируя свойства, при FAT32 не покажет ничего.
Зависит также от наличия самого AutoCAD. Если AutoCAD установлен, Windows через COM-интерфейсы запрашивает у него информацию о файле и показывает. Так что когда применяете SummaryInfo из AutoCAD, то получаете через посредников ту же информацию (возможно искаженную), которую можно взять напрямую.

Re: Можно ли "добраться" до "Свойств рисунка"?

> serg
В объектной модели AutoCAD 2004 появился недокументированный объект SummaryInfo как свойство рисунка. Кое-что о нем я привел в книге "AutoCAD 2004: разработка приложений и адаптация".

Re: Можно ли "добраться" до "Свойств рисунка"?

> ShaggyDoc
Что-то вы тут воды много налили.
В 2004 выражение

(dictsearch (namedobjdict) "DWGPROPS")

выдаст вам Nil при любом раскладе, вне зависимости записаны свойства в рисунок или нет. Поэтому для извлечения свойст рисунка, можно добраться, как указал Н.Н.Полещук, через объект Автокада SummaryInfo. К Windows-скому свойству SummaryInfo она не имеет никакого отношения.

Re: Можно ли "добраться" до "Свойств рисунка"?

Версия AutoCad -2002. Как я понял, автоматически словарь создается только после вызова команды dwgprops и заполнения какого-нибудь свойства(например, комментария) вручную. Буду смотреть, как создать словарь программно. Спасибо за ответы.

Re: Можно ли "добраться" до "Свойств рисунка"?

> Игорь
Мне NIL никогда не выдает, потому что я это предотвращаю.
Выдаст NIL в любом AutoCAD, в котором программист не позаботится о создании словаря.
"Вода" налита для тех, кто думает, что в ThisDrawing.SummaryInfo содержится информация, создаваемая какими-то собственными процедурами.
AutoCAD просто обращается к собственном открытому документу как к файлу. Объект ввели дополнительно для удобства, потому что добираться до SummaryInfo через API сложно. Autodesk все более сближается с Microsoft, а та требует, чтобы сойства хранили стандартно. Только поздно спохватились.

Re: Можно ли "добраться" до "Свойств рисунка"?

ShaggyDoc пишет:

Словарь появляется или после первого вызова команды DWGPROPS или после его программного создания.

Простите не допонял. Если я создаю новый файл на основе шаблона, в котором этот словарь не был специально удален,  то во всех таких файлах словарь свойств имеет место быть. Или я не прав?

Re: Можно ли "добраться" до "Свойств рисунка"?

> bender
Если свойства были в шаблоне, то да. В файле, созданном на основе шаблона со свойствами будут эти свойства. Это удобно.
У 2004 такие особенности:
- Если в него загружается файл, созданный в 2002, то прежние свойства из словаря копируются и используются в диалоге DWGPROPS, а прежний словарь не удаляется.
- Сохраняются свойства файла 2004 не в словаре (тут я был не прав, написав "на том же месте"). Словарь-то на том же месте, но стандартный диалог уже из него не читает.
- Свойства в 2004 действительно читаются функцией WinAPI StgOpenStorageEx, а хранятся в "Windows 2000 Structured Storage", рекомендованном Microsoft для стандартного хранения таких данных.
- Объект SummaryInfo работает именно через WinAPI, а не чтением внутренних, никому более не известных кодов. Это хорошо, но плохо то, что свойства, измененные пользователем в диалоге, объект SummaryInfo возвращает БЕЗ изменений (во всяком случае, не всегда видит изменения) до того, как файл не будет закрыт и снова открыт. Это очень плохо, если надо программно контролировать какие-то свойства.
- Если сохранить файл 2004 в формат 2000, то измененные свойства вновь окажутся в словаре. Это хорошо.

Re: Можно ли "добраться" до "Свойств рисунка"?

есть вопрос, как установить иконку на файл через командную строку

Re: Можно ли "добраться" до "Свойств рисунка"?

> Lexa
Что то я совсем не понял вопроса иконку на файл, которая отображается в браузере? типа к файлу *.txt назначить иконку ворда? если вопрос в этом, то все это делается через реестр.