Реклама i
Стань нашим партнером - зарабатывай с нами!
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как очистить записи о растрах в неактивном документе?

Как очистить записи о растрах в неактивном документе?

Ответ
Поиск в этой теме
Непрочитано 04.12.2015, 11:02 #1
Как очистить записи о растрах в неактивном документе?
Кулик Алексей aka kpblc
Moderator
 
LISP, C# (ACAD 200[9,12,13,14])
 
С.-Петербург
Регистрация: 25.08.2003
Сообщений: 39,844

Доброго времени суток всем. В текущем документе есть какое-то количество внешних ссылок. Внутри ссылки вставлено какое-то количество растров (к примеру, 20; из них 17 "не найдены"). Надо почистить файл ссылки от этих лишних записей.
Сначала я хотел открыть ссылку через ObjectDBX, получить указатель на словарь ACAD_IMAGE_DICT, и пройтись по его записям. Но проблема в том, что записей в словаре нет! (vla-get-count (vla-item (vla-get-dictionaries doc) "acad_image_dict") показывает 0.
Преобразовывать в ename сильно не хотелось, но попробовал. Результат такой же (записей нет).
При этом, если выполнить код вида (setq doc (vla-open "FilePath")), и потом уже (vla-get-count (vla-item (vla-get-dictionaries doc) "acad_image_dict") - то все записи на месте, с ними можно работать. Минусы подобного решения очевидны, и хотелось бы их избежать.

Собственно вопрос: а можно ли как-то (и если можно, то как) получить доступ к словарю acad_image_dict неактивного документа? Работа ведется в AutoCAD2009.

Спасибо.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Просмотров: 3259
 
Непрочитано 04.12.2015, 15:25
#2
Vov.Ka


 
Регистрация: 21.07.2008
Луцьк
Сообщений: 179


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Собственно вопрос: а можно ли как-то (и если можно, то как) получить доступ к словарю acad_image_dict неактивного документа?
в 2005 можно
Код:
[Выделить все]
 (setq dbxDocObj (vk_GetDBXObj (vlax-get-acad-object)))
(vla-open dbxDocObj "C:\\Temp\\Drawing111111111.dwg")
(vla-item (vlax-get-property dbxDocObj "Dictionaries") "ACAD_IMAGE_DICT")
Vov.Ka вне форума  
 
Автор темы   Непрочитано 04.12.2015, 15:29
#3
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844


Уточню вопрос: не к словарю, а к его записям.
Vov.Ka, попробуй в файл вставить пару-тройку растров, сохрани файл dwg, а потом получи количество записей в словаре. У меня в 2009 возвращается 0 несмотря ни на что.

----- добавлено через ~1 мин. -----
Если честно, задачка немного поуже: надо в словаре очистить записи о невставленных (неиспользуемых) или ненайденных растрах.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 04.12.2015, 16:15
#4
Vov.Ka


 
Регистрация: 21.07.2008
Луцьк
Сообщений: 179


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Vov.Ka, попробуй в файл вставить пару-тройку растров, сохрани файл dwg, а потом получи количество записей в словаре.
я так и проверял
у меня все работает как положено
растр из словаря могу получить и через vla-item и через (entget (vlax-vla-object->ename ...)
Vov.Ka вне форума  
 
Автор темы   Непрочитано 04.12.2015, 16:27
#5
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844


Очень интересно!.. Попробую дома еще потестировать (но на работе ситуация именно такая: количество записей в словаре равно нулю)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 04.12.2015, 16:31
#6
Vov.Ka


 
Регистрация: 21.07.2008
Луцьк
Сообщений: 179


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
но на работе ситуация именно такая: количество записей в словаре равно нулю
может баг какой-то
у меня вот так http://*******info/view3/9103440/ae26...bf88c216/orig/
Vov.Ka вне форума  
 
Автор темы   Непрочитано 08.12.2015, 10:34
#7
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,844


Да, похоже на глюк. Несколько раз проверял на разных версиях - сейчас работает. Почему тогда сходило с ума - непонятно...
Спасибо за помощь!
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как очистить записи о растрах в неактивном документе?

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Autolisp создать в неактивном документе лист по шаблону protorgovec LISP 5 09.03.2016 10:50
Как обновить внешнеюю ссылку в неактивном документе? kurstep Программирование 6 10.10.2015 12:43
Как поменять системную переменную в неактивном документе kurstep Программирование 2 08.10.2015 14:42
Autolisp работа в неактивном документе protorgovec LISP 4 04.08.2015 10:23