Re: Как узнать координаты точек привязки?
Но ведь в таком случае этот макрос будет работать на отдельно взятой машине, т.е. не будет трансфортабельным
А если он "вмонтирован" в dwg-шный файл, он что, становится более транспортабельным? Да, если Вы хотите, чтобы макрос работал на какой-то машине, он должен на ней быть "физически". Т.е. "валяться" в какой-нибудь папке. Желательно путь к ней включать в перечень путей поддержки АКАДа, тогда не надо будет в команде запуска прописывать полный путь. Папка может быть и сетевой.
По второму абзацу: я действительно не понял, что Вы хотите. Ну а в общем... Есть объект Err со своими свойствами (Clear, Description, Number и т. д.) вот с ним и работайте.
> Сергей
Я не монстр, я только учусь. И вообще я белый и пушистый.
По сути. Верю, что ответа нигде не нашли. И не найдете. Модуль Rendera в АКАДе последний раз менялся, если память не изменяет, в 12, еще ДОС-овской версии. С этого времени отношение разработчиков к нему похоже на отношение родителей к нерадивому дитяти. Надо бы убить, да жалко, родная кровь. Хотя давно пора или сделать его нормальным, или выкинуть.
Так, а что вообще происходит в чертеже, когда мы выполняем команду назначения материала (или обращаемся к библиотеке материалов)? В чертеж добавляются блоки: AVE_GLOBAL, AVE_RENDER, RM_SDB. В данном случае нас интересует блок RM_SDB. В атрибутах этого блока и содержится вся информация об материале. Посмотреть его можно в папке Support (там же находятся блоки - "источники света"). После назначения примитиву определенного материала, к примитиву "привязываются" расширенные данные, ассоцированные с приложением AVE_FINISH, вида:
Код 1000: AVE_FINISH - имя приложения Код 1002: { Код 1070: 0 Код 1005: 7B35B - handle экземпляра блока RM_SDB. Код 1002: }
Вот в этом то экземпляре блока RM_SDB и содержится вся информация (в виде атрибутов) о назначенном примитиву материале. Исходя из всего вышеизложенного, алгоритм решения задачи может быть такой:
1. Выясняем, есть ли у исследуемого примитива расширенные данные, ассоцированные с приложением AVE_FINISH.
2. Есть ли они есть, извлекаем handle нужного экземпляра блока RM_SDB.
3. Полулучаем доступ к блоку.
4. Значение поля Name и есть имя назначенного материала. По значению других полей можно извлечь информацию о цвете материала, его прозрачности, отражающих свойствах и т. п.
С помощью какого языка это все делать - выбирайте сами.
Возможен и второй вариант. При обращении к модулю Renderа, в чертеже появляется новый словарь. Имя его сказать не могу, т. к. у словарей нет свойства Name, а для получения к нему доступа нужного это имя знать. Есть подозрение, что в этом то словаре и содержится вся информация о материалах, источниках света и т. п.