Re: Как узнать координаты точек привязки?

ssn пишет:

Но ведь в таком случае этот макрос будет работать на отдельно взятой машине, т.е. не будет трансфортабельным

А если он "вмонтирован" в 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, а для получения к нему доступа нужного это имя знать. Есть подозрение, что в этом то словаре и содержится вся информация о материалах, источниках света и т. п.

Re: Как узнать координаты точек привязки?

> bender
Давайте завершим общетеоретическую дискуссию - мы друг друга поняли.
Прокомментирую только это:

Когда Вы говорите, что: "... серьезную систему только на VBA не сделать", кто же станет спорить? А такую же систему только на LISP, или даже VLISP, можно сделать? И сколько народа станут с пеной у рта доказывать, что: "Да! Можно!"

По моему мнению "серьезную" систему только на LISP сделать можно. Раньше только так и делали.  Вопрос в том, насколько "серьезную".
Серьезную и современную систему сделать только на Visual Lisp нельзя!
Это надо понимать четко. Понадобятся дополнительные инструменты. Какие именно - волен выбирать каждый. Многое можно сделать на VB, многое на Delphi, еще больше - на VC (сочетание ObjectARX и COM).
К сожалению, последним указанным инструментом могут воспользоваться не очень много инженеров - все-таки на освоение уйдет не менее года. Lisp и VB - месяц с полного нуля.
А при разработке САПР важнее знание тонкостей технологии проектирования конкретной предметной области. Это лучше знают инженеры, да еще имеющие определенный опыт. Но и опыта в программировании им непременно придется набираться, постепенно переквалифицируясь. Впрочем, таких "ренегатов" бывает обычно 1-2 на организацию, чего вполне достаточно.