Тема: AcadDictionary и AcadXRecord

Доброе утро! По работе с AcadDictionary возник вопрос :
- какая максимальная длина имени AcadXRecord?
- имя должно быть уникальным?
- XRecordData - максимальная длина?

Dim DictScale As AcadDictionary, dicXRecord As AcadXRecord
Dim XRecordDataType As Variant, XRecordData As Variant
Dim ArraySize As Long, iCount As Long
Dim DataType As Integer, Data As String, msg As String
' Unique identifiers to distinguish this XRecordData from other XRecordData
Const TYPE_STRING = 1
Const DICT_NAME = "Ts_Dict_Products"
Const XRECORD_NAME = "Ts_File_Products"
Dict_Scale = False
' Connect to the dictionary in which to store the XRecord
On Error GoTo CREATE
Set DictScale = ThisDrawing.dictionaries(DICT_NAME)
Set dicXRecord = DictScale.GetObject(XRECORD_NAME)
On Error GoTo 0
' Get current XRecordData
dicXRecord.GetXRecordData XRecordDataType, XRecordData
If VarType(XRecordData) <> vbEmpty Then
fl_Scale = XRecordData(0)
fl_Scale_Num1 = XRecordData(1)
fl_Scale_Num2 = XRecordData(2)
Kod_Sector = XRecordData(3)
Name_Sector = XRecordData(4)
Endif

Re: AcadDictionary и AcadXRecord

Уточняю:

- XRecordData — максимальная длина?

Имеется ввиду - XRecordData(0). Ограничивается ли 256 символами?

Re: AcadDictionary и AcadXRecord

AcadXRecord - длину имени задавала 320 символов прошло все удачно, но не проходят символы как в имени файла :(

Re: AcadDictionary и AcadXRecord

> Adel
Попробуй заменить обратную косую черту
на обычную косую черту
Еще не любит пробелы в имени файла
а также немецкие и французские символы
(горький опыт)
~'J'~

Re: AcadDictionary и AcadXRecord

Поделитесь! Как лучше назвать XRecord -

Set dicXRecord=DictProducts.AddXRecord(str)

Хотела конкретно по str="Наименование+Марка", но слишком много неугодных символов.
Или просто условное, например, число? Если номер записи, но записи могут удаляться. Можно ли как-то ещё?

Re: AcadDictionary и AcadXRecord

> Adel
Думаю в названии должна быть четкая
информативность, возможно, сокращенная запись
типа "NM" (наименование + марка в твоем случае)
~'J'~

Re: AcadDictionary и AcadXRecord

В рисунке дин.блоки со словарями.

Dim ent As AcadBlockReference
Dim EDictionary As AcadDictionary
Dim dicXRecord As AcadXRecord
Dim XRecType As Variant, XRecData As Variant
Set EDictionary = ent.GetExtensionDictionary
For Each dicXRecord In EDictionary
      dicXRecord.GetXRecordData XRecType, XRecData
Next

Работает нормально, но если у блока изменить или длину или видимость на Next вылетает ошибка - Run-time error ‘13’:  Type mismatch !
Но после F5 программа завершает работу как обычно.
Почему это происходит?

Re: AcadDictionary и AcadXRecord

Помогите, пожалуйста!
Эту ошибку просто проигнорировать?

Re: AcadDictionary и AcadXRecord

Я правильно поняла - При изменении динамического свойства в блоке AutoCAD заносит в словарь объекта запись.
При чтении этой записи dicXRecord.GetXRecordData XRecType, XRecData и вылетает 13 ошибка! :(
Можно ли программно узнать что эта запись сделана AutoCADом?