Тема: Сохранить string в чертеже

Господа, доброго времени суток!
Проблема вроде бы проста: нужно сохранить строку в чертеже. Удивительно, что пользовательские переменные USERS1-5 SavedIn: Not Saved, а остальные USERI1-5 и USERR1-5 SavedIn: Drawing!!! Неужели AutoDesk'у сложно было пять строчек пришить к файлу!? :'(
Может быть чего-то на знаю, подскажите!
Версия AutoCAD2008...

Re: Сохранить string в чертеже

Для сохранения строки в чертеже можно и нужно использовать расширенные данные.

Re: Сохранить string в чертеже

Согласен, сейчас пробую использовать Get/SetXData прямо к ModelSpace. Все работает хорошо, НО!
Совсем не получается проверить есть ли в данный момент XData у ModelSpace или нет.

Dim xT As Variant
Dim xD As Variant
ThisDrawing.ModelSpace.GetXData "ePath", xT, xD

UBound(), Len() не применимы к xD, если он "пустой"
.HasExtensionDictionary вседа дает False, это видимо из другой оперы..
Поясните, пожалуйста, как осуществить проверку.

Re: Сохранить string в чертеже

IsArray(xT)

Re: Сохранить string в чертеже

> StudentCM
Можно проверить так:

Option Explicit
Sub XdataTest()
    Dim xt(1) As Integer
    Dim xd(1) As Variant
    With ThisDrawing.ModelSpace
    xt(0) = 1001: xd(0) = "ePath"
    xt(1) = 1000: xd(1) = "Моя строка"
    .SetXData xt, xd
    .GetXData "", xt, xd
    ' условие проверки - непустой массив:
    If Not IsEmpty(xd) Then
                MsgBox "Имя приложения : " & vbTab & xd(0) & vbCr & _
                        "Сохраненная строка : " & vbTab & xd(1)
    End If
    End With
End Sub

Насчет словаря расширенных данных то в этом
случае это действительно из другой оперы
Например, если изменить Draworder для каких-либо
объектов в ModelSpace, то словарь появится
~'J'~

Re: Сохранить string в чертеже

Спасибо огромное за хелп! Просто не знал про IsArray() и IsEmpty(). Кстати, интересно, а можно ли поверить так: после считывания обращаемся к xT или xD как к массиву, а потом вставляем
If Err <> 0 Then ...
Еще раз большой сенкс :)

Re: Сохранить string в чертеже

> StudentCM
Так зачем дважды проверять
Готовое условие в коде, уже проверяешь:

If Not IsEmpty(xd) Then
...........

~'J'~

Re: Сохранить string в чертеже

> StudentCM
А, понял ты о чем

On Error Resume Next
.GetXData "", xt, xd
If Err Then
Msgbox "Нет расширенных данных"
Exit Sub
end if

~'J'~
~'J'~

Re: Сохранить string в чертеже

да, оно самое! )))