Тема: Как менять информацию в "ModelSpace"?

Добрый день!
Проблема следующая. Записываю в пространство модели сл. информацию о торговом стеллаже

Sub info_2_model(sh)
Dim DataType(0 To 6) As Integer
Dim Data(0 To 6) As Variant
DataType(0) = 1001: Data(0) = sh.nam
DataType(1) = 1000: Data(1) = sh.nam
DataType(2) = 1040: Data(2) = sh.tipe
DataType(3) = 1040: Data(3) = sh.shirina
DataType(4) = 1040: Data(4) = sh.glubina
DataType(5) = 1040: Data(5) = sh.visota
DataType(6) = 1040: Data(6) = sh.tipe_back_panel             ' ThisDrawing.ModelSpace.SetXData DataType, Data
End Sub

Потом пытаюсь редактировать передавая в процедуру измененный (другой) "sh.nam" и ничего не происходит наименование в моделспейсе остается таким-же ...
Как реально менять инфу в моделспейсе записанную подобным образом?

Re: Как менять информацию в "ModelSpace"?

Sub info_2_model(sh)
Dim DataType(0 To 6) As Integer
Dim Data(0 To 6) As Variant
DataType(0) = 1001: Data(0) = sh.nam
DataType(1) = 1000: Data(1) = sh.nam
DataType(2) = 1040: Data(2) = sh.tipe
DataType(3) = 1040: Data(3) = sh.shirina
DataType(4) = 1040: Data(4) = sh.glubina
DataType(5) = 1040: Data(5) = sh.visota
DataType(6) = 1040: Data(6) = sh.tipe_back_panel              ThisDrawing.ModelSpace.SetXData DataType, Data
End Sub

Re: Как менять информацию в "ModelSpace"?

Может чего неверно изложил. Но проблема в том, что при повторной процедуре записи Data ничего не меняется ... А по идеи должно.

Re: Как менять информацию в "ModelSpace"?

У ModelSpace попросту нет такого метода, поэтому информация и не аттачится.

Re: Как менять информацию в "ModelSpace"?

Объекты которые поддерживают SetXData (опять же из хелпа):

Signature
object.SetXData XDataType, XData
Object
All Drawing Objects , AttributeReference, Block, Dictionary, DimStyle, Group, Layer, Linetype, PlotConfigurations, RegisteredApplication, TextStyle, UCS, View, Viewport; XRecord
The object or objects this method applies to.

Re: Как менять информацию в "ModelSpace"?

> Сергей
Обрати внимание в другую сторону: XRECORD
Чудесно вся Х-запись сохраняется в рисунке
~'J'~

Re: Как менять информацию в "ModelSpace"?

Хотя, при вводе "ModelSpace.", SetXData в выпадающем списке есть:). Тогда я, возможно, не прав, - использовать никогда не приходилось.

Re: Как менять информацию в "ModelSpace"?

А, понял! Объект ModelSpace рассматривается VBA как блок, поэтому к нему применимы и методы блока. Мож действительно с XRecord попробовать..

Re: Как менять информацию в "ModelSpace"?

Т.е. инфа сохраняется. Я ее измнить потом аналогичным способом не могу ... Вот в чем проблема ...

Re: Как менять информацию в "ModelSpace"?

А под видом SH из программы в функцию что передается-то?

Re: Как менять информацию в "ModelSpace"?

Тип - "tipe"

Re: Как менять информацию в "ModelSpace"?

Виноват "type"

Re: Как менять информацию в "ModelSpace"?

Все-равно не понятно!.. - tipe.tipe

> Сергей
А весь код? ..если можно. Даже интересно стало))

Re: Как менять информацию в "ModelSpace"?

> Сергей
Вот на скорую руку проверил, вроде пишет
и читает:

Sub TestSet_Xdata()
Dim sh As AcadModelSpace
Dim DataType(0 To 6) As Integer
Dim Data(0 To 6) As Variant
Set sh = ThisDrawing.ModelSpace
Dim nam As Variant
nam = "Store Model XDATA"
Dim tipe As Variant
tipe = 10.25
Dim shirina As Variant
shirina = 1200.05
Dim glubina As Variant
glubina = 800.5
Dim visota As Variant
visota = 500#
Dim tipe_back_panel As Variant
tipe_back_panel = 300#
DataType(0) = 1001: Data(0) = nam
DataType(1) = 1000: Data(1) = nam
DataType(2) = 1040: Data(2) = tipe
DataType(3) = 1040: Data(3) = shirina
DataType(4) = 1040: Data(4) = glubina
DataType(5) = 1040: Data(5) = visota
DataType(6) = 1040: Data(6) = tipe_back_panel
sh.SetXData DataType, Data
End Sub
'J'_________________________________________'J'
Sub TestGet_Xdata()
Dim sh As AcadModelSpace
Dim DataType As Variant
Dim Data As Variant
Dim i As Integer
Set sh = ThisDrawing.ModelSpace
sh.GetXData "", DataType, Data
For i = 0 To UBound(Data)
Debug.Print Data(i)
Next
End Sub

~'J'~

Re: Как менять информацию в "ModelSpace"?

Олег! Спаисбо Вам огромное. Но все это я проходил ...
Смысл такой. Однажды записав инфу я не могу ее таким же способом изменить!

Re: Как менять информацию в "ModelSpace"?

Для Лютого

Public Type shelvng
 nam As String
 tipe As Double
 shirina As Double
 glubina As Double
 visota As Double
 tipe_back_panel As Double
End Type

Re: Как менять информацию в "ModelSpace"?

> Олег(jr.)
Это код задания и считывания массива явным образом (каждому элементу массива присваивается определенное значение и все..) А Сергею, как я понял, нужно в зависимости от названия пользовательского типа SH записывать в моделспейс значения его элементов. Идея интересная..
Сергей, А в каком месте элементам этого типа (nam, tipe, glubina.. и т.д.) присваиваются значения?..

Re: Как менять информацию в "ModelSpace"?

Я в модел спейс записываю информацию о наименовании стеллажа габаритах, типе задней стенки. Стелаж рисуется автоматически из диалога. Каждому элементу стеллажа ставится в соответсвие наименование и прочее ... В каждом элементе может быть несколько таких записей ...И я эти записи редактирую. Все получается если я обращаюсь к объектам на чертеже.
Но нифига не получается отредактировать такимже способом моделспейс ... Вот в чем беда. Почему элементы редактируются а моделспейс нет? В чем дело?

Re: Как менять информацию в "ModelSpace"?

> Сергей
У меня получилось, но я не спец по VBA
проверь на своем (A2005 only)

Sub Ch_Xdata()
Dim sh As AcadModelSpace
Dim newData(0 To 4) As Variant 'data array size - 2
Dim DataType As Variant
Dim Data As Variant
Dim i As Integer
newData(0) = 100#
newData(1) = 200#
newData(2) = 300#
newData(3) = 400#
newData(4) = 500#
Set sh = ThisDrawing.ModelSpace
sh.GetXData "Store Model XDATA", DataType, Data
For i = 2 To UBound(Data)
Data(i) = newData(i - 2)
Next
sh.SetXData DataType, Data
End Sub

~'J'~

Re: Как менять информацию в "ModelSpace"?

Я в модел спейс записываю информацию о наименовании стеллажа габаритах, типе задней стенки. Стелаж рисуется автоматически из диалога. Каждому элементу стеллажа ставится в соответсвие наименование и прочее ... В каждом элементе может быть несколько таких записей ...И я эти записи редактирую. Все получается если я обращаюсь к объектам на чертеже.

- трудно понять не увидев в натуре:/...
Могу только посоветовать контролировать содеражние каждого элемента msgbox-ами на каждом шагу выполнения кода. Ведь если 1)sh.nam="jjj", затем 2)data(0)=sh.nam, а затем 3)ModelSpace.SetXData, то в любом случае 4)ModelSpace.GetXData должно вернуть: 5)data(0)="jjj" Думаю, проблема где-то на шаге 1)..

Re: Как менять информацию в "ModelSpace"?

Буду пробовать!