Тема: Dictionary можно присвоить любому примитиву?
В Helpe написано,что для любого примитива можно создать Dictionary. Что-то я не совсем понимаю. Мне нужно в определенный MText прицепить информацию из базы данных для спецификации. Это возможно?
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → VBA → Dictionary можно присвоить любому примитиву?
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
В Helpe написано,что для любого примитива можно создать Dictionary. Что-то я не совсем понимаю. Мне нужно в определенный MText прицепить информацию из базы данных для спецификации. Это возможно?
> Adel
Много информации? Если < 16Kбайт, то проще в Xdata.
А если хочется посложнее? :)
> Александр Ривилис
А такой вопрос, можно ли добраться из VBA до свойств объекта ADT, например SPACE? Кроме Height, Width, Area и т.д. до свойств, к-рые мы ему сами присваиваем? Или до свойст полученных в результате взаимодействия с др. объектами (с тэгами, марками, например номер помещения)?
В 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 ....
> Anatoly
О! Молодец, спасибо!
Подскажите - как удалить расширенные данные? А то, например, в 1000 коде пусто, а при просмотре Msgbox - GetX выдается два пустых 1000??? Поясните если нетрудно. Спасибо.
Или подскажите как в VBA для слоя с именем Name узнать есть ли расширенные данные?
> Adel
Расширенные данные чьи? Сомого слоя или примитивов, которые на нем содержаться?
> Adel
А поиск по форуму не пробовал?
Искала.
Сделала как в 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
Но я туда данные не заносила! А сообщение выскакивает. Почему?
> Adel
Если ты не присваивала расширенные данные, то это не значит что не присваивала какая-нибудь другая программа или сам AutoCAD. Посмотри какие значения для группы 1001 - это группа имен приложений.
1001 - AcAecLayerStandard. Что это?
Значит ли это что расширенными данными для слоя я не могу воспользоваться?
> Adel
1001 — AcAecLayerStandard. Что это?
Это расширенные данные самого AutoCAD/ADT (IMHO, используются для проверки стандартов)
Для слоя ты можешь добавить свои расширенные данные (т.е. свою группу 1001, например "AdelData", и работать с ними)
Спасибо! Буду пробовать.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → VBA → Dictionary можно присвоить любому примитиву?
Форум работает на PunBB, при поддержке Informer Technologies, Inc