Тема: Икс Дата

Помогите пожалуйста с Икс Датой.
Посмотрела в справке. Там есть пример. Пыталась его переделать, но не получилось. Этот код присваивает икс дату выбранному объекту, а затем поочередно выводит каждый объект в Мсдж Бокс.
Передо мной стоит проблема как найти общее колличество объектов с одинаковой икс датой.

Re: Икс Дата

Вот код:

Sub AttachXDataToSelectionSetObjects()
    ' Создаем набор
    Dim sset As Object
    Set sset = ThisDrawing.SelectionSets.Add("SS1")
    ' Предложим пользователю выбрать объекты
    sset.SelectOnScreen
    ' Определим расширенные данные
    Dim appName As String, xdataStr As String
    appName = "MY_APP"
    xdataStr = "Пример xdata (дополнительных данных)"
    Dim xdataType(0 To 1) As Integer
    Dim xdata(0 To 1) As Variant
    ' Зададим значения для каждого массива
    ' 1001 = appName
    xdataType(0) = 1001
    xdata(0) = appName
    ' 1000 отображает строковое значение
    xdataType(1) = 1000
    xdata(1) = xdataStr
    ' Проходим по элементам набора и устанавливаем
    ' каждому расширенные данные
    Dim ent As Object
    For Each ent In sset
        ent.SetXData xdataType, xdata
    Next ent
End Sub
Sub ViewXData()
    ' Ищем набор, созданный в предыдущем примере
    Dim sset As Object
    Set sset = ThisDrawing.SelectionSets.Item("SS1")
    ' Создаем переменные для хранения расширенных данных
    Dim xdataType As Variant
    Dim xdata As Variant
    Dim xd As Variant
    Dim xdi As Integer
    xdi = 0
    ' Проходим по всем объектам набора, читая расширенные данные
    Dim msgstr As String
    Dim appName As String
    Dim ent As AcadEntity
    appName = "MY_APP"
    For Each ent In sset
        msgstr = ""
        xdi = 0
        ' Имя приложения (appName) xdata Тип и Значение
        ent.GetXData appName, xdataType, xdata
        ' Если переменная xdataType не инициализирована, не
        ' будет appName xdata
        If VarType(xdataType) <> vbEmpty Then
            For Each xd In xdata
                msgstr = msgstr & vbCrLf & xdataType(xdi) & ": " & xd
                xdi = xdi + 1
            Next xd
        End If
        ' Если полученная строка пуста (NULL), нет расширенных данных
        If msgstr = "" Then msgstr = vbCrLf & "NONE"
        MsgBox appName & " xdata " & ent.ObjectName & ":" & vbCrLf & msgstr
    Next ent
End Sub

Re: Икс Дата

А поподробнее можно задачу описать?
Я нечто подобное делал по гайперлинкам, а они как известно сохраняются как раз в экс-дэйта.

Re: Икс Дата

Вот задача:
Есть некии блоки. Они расставляются на чертеже.
Каждому надо присвоить при вставке икс дату.
Далее подсчитать блоки и подсчитать икс даты, прикрепленные к ним.
Пример:
Вставляем блок с именем П11-(2х1х1) в чертеж. При вставке ему присваевается номер №1.
Далее вставляем такой же блок П11-(2х1х1) в чертеж. При вставке ему присваевается номер №2.
Далее считаем и выводим результат по следующей схеме:
Блоков П11-(2х1х1) - 2 штуки
Номера блоков - №1, №2
Я немного упростила схему, но в целом она именно так и выглядит.

Re: Икс Дата

именно с экс-дэйта нажно работать???
гдето в афтокаде видел встроенную функцию подсчёт блоков с одинаковыми атрибутами...
у меня задача была сложнее - я рисовал трбопроводную обвязку, и делал спецификацию по деталям и трубам...

Re: Икс Дата

> todesengel
Я в упрощенном виде обрисовала Вам задачу. Если я целиком опишу - то получится гораздо сложнее чем у Вас была задача!!!
Я пытаюсь облегчить себе проектирование ЛЭП 0,4-10 кВ. Там тысячи деталей, тысячи видов опор, сотни типовых альбомов и т.д.
На одной опоре висит только пару десятков деталек!!!
И все это надо подсчитать, загнать в спецификации и таблицы!!!!
Я же говорю - я немного упростила и написала не все!!!!
Но мне очень нужно знать как в зависимости от вида блока считывалась бы его икс дата. Помогите пожалуйста, если Вам не трудно!!!!

Re: Икс Дата

давайте уже мне на мыло - и пообщаемся