(изменено: Agens -, 18 сентября 2012г. 16:11:28)

Тема: LIST и VBA

Все знают, что командой list из объектов автокада можно вытянуть параметры примитива.
Вопрос заключается в том, где эти данные хранятся (в словаре, в хдате?)
Как эти же данные вытянуть средствами VBA...
Кто знает помогите разобраться...

Re: LIST и VBA

Никто не знает про эту команду ) (шутка, но я не знал).
Обычно на палитру свойств смотрю первым делом.
Посмотреть через VBA можно в свойствах объекта.
Хранятся они в объекте.

(изменено: Agens -, 18 сентября 2012г. 17:16:15)

Re: LIST и VBA

Если взять простую линию, для нее свойства будут:
LIST и VBA
а вот реакция на "_list" совершенно другая:

Команда: _list

Выберите объекты: найдено: 1

Выберите объекты:

                  ОТРЕЗОК            Слой: "0"
                                     Пространство: Пространство модели
                   Метка = 282be
                от точки, X=57770.0000  Y=198140.0000  Z=   0.0000
                до точки, X=41475.0000  Y=181845.0000  Z=   0.0000
          Длина =23044.6100, Угол в плоскости XY =    225
                  Дельта X =   -16295.0000, Дельта Y =   -16295.0000, Дельта Z
=      0.0000

Re: LIST и VBA

Вот и хотелось бы узнать, как получить с помощью VBA именно свойства LIST.
Тем более, что объекты АРХ не дают смотреть некоторые свойства, в то время как LIST их считывает.

Re: LIST и VBA

Т.е. какое-то конкретное свойство отрезка тебя не интересует. А тебя интересует именно работа команды List для custom объектов?
Тогда тебе в тему objectARX с этим вопросом. Там, насколько знаю, все зависит от самого объекта, если есть публичные свойства, то ты можешь увидишь. Есть свойства специально для палитры свойств.

Ну и могут какие-то данные хранится в словарях и расширенных данных объекта, но тебе они не должны быть нужны, с ними работает конкретное приложение по своей логике.

(изменено: Agens -, 18 сентября 2012г. 17:28:17)

Re: LIST и VBA

А тебя интересует именно работа команды List для custom объектов?

Как частное ДА, как общее нужно знать как работает для любого примитива...

Все открытые свойства objectARX я уже заполучил. Правда может еще какую библиотеку забыл подключить.
Но нужную мне информацию выдает LIST, "ковырял" XData, Dictionary, xRecord... Не нашел...
Вот я подумал, может еще где она записана, или как устроена команда LIST может кто знает...

(изменено: Вильдар, 18 сентября 2012г. 18:10:40)

Re: LIST и VBA

Как из VBA получить все свойства custom объекта, я не знаю. И попробовать не на чем. Вертикалок нет, спдс тоже.
Примитивы нигде не могут хранить свои свойства, кроме самого объекта.
А вот сторонние приложения могут хранить данные для примитива или custom объекта где угодно (хоть во внешнем файле или БД).

Если есть, покажи пример файл.

Re: LIST и VBA

не думаю, что list подключается к базе данных.
информация хранится либо в самом объекте либо не дальше чертежа.
---
если знать механизм получения информации list_ом, то, думаю, можно аналогично получить
свойства и с других объектов.

(изменено: Вильдар, 18 сентября 2012г. 18:24:56)

Re: LIST и VBA

Да, это я не List имел ввиду, а так в общем)

Конкретика нужна.
Если взять отрезок, то все эти свойства, которые дает List, есть у объекта Line в VBA. :D

Re: LIST и VBA

Это понятно.

Re: LIST и VBA

Agens - пишет:

Как частное ДА, как общее нужно знать как работает для любого примитива...

У каждого Custom Object есть виртуальный метод list(), который и выполняется если запустить команду _LIST и выбрать его. Что этот метод делает зависит только от программиста, написавшего его.

Re: LIST и VBA

Т.е. реакция Автокада на команду LIST - вызов модуля из самого автокада или софта, кот. юзер "доставил". Как это сложно. Как определяется "Собственник" объекта?

Re: LIST и VBA

Я не думаю что ты сможешь это сделать на VBA
Хотя можно попробовать для определенного типа
примитивов классы:
Vlax.cls,
Curve.cls

(ищи на форуме или в Google)

Информация для примера:
http://forums.autodesk.com/t5/Visual-Ba … -p/2067539

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

Re: LIST и VBA

Agens - пишет:

Как определяется "Собственник" объекта?

Что ты имеешь в виду под собственником? У любого объекта есть метод ownerid() (имеется в виду в ObjectARX), который определяет его собственника. Например, собственником примитива является блок, в который он входит. А собственником слоя является таблица слоёв.
Но ты явно лезешь в дебри, которые на VBA никак не решаются.

(изменено: Agens -, 19 сентября 2012г. 17:01:32)

Re: LIST и VBA

поставил я, допустим, СПДС, там свои объекты. Выделяю выноску СПДС, жму list, появляются данные о выноске.
Т.е. акад определил, что это объект СПДС, потом нашел модуль СПДС для вывода данных объекта через list и выдал их мне? Не верю...

Re: LIST и VBA

Agens - пишет:

Т.е. акад определил, что это объект СПДС, потом нашел модуль СПДС для вывода данных объекта через list и выдал их мне? Не верю...

Зря не веришь. Именно так и работает. Если модуль СПДС загружен в AutoCAD, то он "регистрирует" свои объекты (если не загружен, то их нет - они прокси). При вызове команды _LIST AutoCAD получает список выбранных примитивов и для каждого из них определяет их тип (и соответственно класс) и обращается к методу list() этого класса (т.к. метод этот виртуальный, то находится соответствующий классу). Например, для отрезка вызывается метод AcDbLine::list(), для текста AcDbText::list() и т.д.
Но к VBA это не имеет никакого отношения.