Тема: Dictionary можно присвоить любому примитиву?

В Helpe написано,что для любого примитива можно создать Dictionary. Что-то я не совсем понимаю. Мне нужно в определенный MText прицепить информацию из базы данных для спецификации. Это возможно?

Re: Dictionary можно присвоить любому примитиву?

> Adel
Много информации? Если < 16Kбайт, то проще в Xdata.

Re: Dictionary можно присвоить любому примитиву?

А если хочется посложнее? :)

Re: Dictionary можно присвоить любому примитиву?

> Александр Ривилис
А такой вопрос, можно ли добраться из VBA до свойств объекта ADT, например SPACE? Кроме Height, Width, Area и т.д. до свойств, к-рые мы ему сами присваиваем? Или до свойст полученных в результате взаимодействия с др. объектами (с тэгами, марками, например номер помещения)?

Re: Dictionary можно присвоить любому примитиву?

В Reference надо подключить AecXSchedule
.........
Dim selset As AcadSelectionSet
Dim Dict As AcadDictionary, subdict As AcadDictionary
Dim sch_propset As AecSchedulePropertySet
Dim sch_prop As AecScheduleProperty
.......
For Each obj In selset
If obj.ObjectName = "AecDbSpace" Or obj.ObjectName = "AecDbArea" Then
Set Dict = obj.GetExtensionDictionary
If Dict.Count > 0 Then
Set subdict = Dict.Item("AEC_PROPERTY_SETS
For Each sch_propset In subdict
If sch_propset.Name = "имя_PROPERTY_SET" Then
For Each sch_prop In sch_propset.Properties
If sch_prop.Name = "имя_свойства" Then ....

Re: Dictionary можно присвоить любому примитиву?

> Anatoly
О! Молодец, спасибо!

Re: Dictionary можно присвоить любому примитиву?

Подскажите - как удалить расширенные данные? А то, например, в 1000 коде пусто, а при просмотре Msgbox - GetX выдается два пустых 1000??? Поясните если нетрудно. Спасибо.

Re: Dictionary можно присвоить любому примитиву?

Или подскажите как в VBA для слоя с именем Name узнать есть ли расширенные данные?

Re: Dictionary можно присвоить любому примитиву?

> Adel
Расширенные данные чьи? Сомого слоя или примитивов, которые на нем содержаться?

Re: Dictionary можно присвоить любому примитиву?

Самого слоя

Re: Dictionary можно присвоить любому примитиву?

> Adel
А поиск по форуму не пробовал?

Re: Dictionary можно присвоить любому примитиву?

Искала.
Сделала как в Helpe

Dim xtypeOut As Variant
Dim xdataOut As Variant
entry.GetXData "", xtypeOut, xdataOut
If VarType(xtypeOut) <> vbEmpty Then
xdi = 0
For Each xd In xtypeOut
 msgstr = msgstr & vbCrLf & xtypeOut _(xdi) & ": " & xd
 xdi = xdi + 1
Next xd
MsgBox msgstr
End If

Но я туда данные не заносила! А сообщение выскакивает. Почему?

Re: Dictionary можно присвоить любому примитиву?

> Adel
Если ты не присваивала расширенные данные, то это не значит что не присваивала какая-нибудь другая программа или сам AutoCAD. Посмотри какие значения для группы 1001 - это группа имен приложений.

Re: Dictionary можно присвоить любому примитиву?

1001 - AcAecLayerStandard. Что это?
Значит ли это что расширенными данными для слоя я не могу воспользоваться?

Re: Dictionary можно присвоить любому примитиву?

> Adel

1001 — AcAecLayerStandard. Что это?

Это расширенные данные самого AutoCAD/ADT (IMHO, используются для проверки стандартов)
Для слоя ты можешь добавить свои расширенные данные (т.е. свою группу 1001, например "AdelData", и работать с ними)

Re: Dictionary можно присвоить любому примитиву?

Спасибо! Буду пробовать.