| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Что является элементом коллекции, а что нет?

Что является элементом коллекции, а что нет?

Ответ
Поиск в этой теме
Непрочитано 06.01.2010, 18:44 #1
Что является элементом коллекции, а что нет?
Supermax
 
Руководитель фирмы
 
Москва
Регистрация: 28.03.2007
Сообщений: 1,831

Обнаружил такую несуразицу:
Есть динамический блок, в нем есть словарь "ACAD_EVALUATION_GRAPH". Получаю я его прямо из пространства модели (хотя, какая разница от куда получать).
Код:
[Выделить все]
(setq act-doc (vla-get-ActiveDocument (vlax-get-acad-object)))

(setq lst 
  (entget 
    (TBLOBJNAME "block" 
      (vla-get-EffectiveName 
        (vlax-ename->vla-object 
          (car (entsel "Укажите нужный вам блок"))))) '("*")))

(setq EVAL_GRAPH
  (vlax-ename->vla-object 
    (cdr (assoc 360 
      (entget 
        (cdr (assoc 360 
          (entget (cdr (assoc 330 lst))))))))))
Смотрю его думп на предмет от куда он родом
Код:
[Выделить все]
(vlax-dump-object (vla-ObjectIDToObject act-doc (vla-get-OwnerID EVAL_GRAPH)))
Код:
[Выделить все]
; IAcadDictionary: A container object for storing and retrieving objects
; Property values:
;   Application (RO) = #<VLA-OBJECT IAcadApplication 00d591b4>
;   Count (RO) = 2
;   Document (RO) = #<VLA-OBJECT IAcadDocument 0145dfa8>
;   Handle (RO) = "21E"
;   HasExtensionDictionary (RO) = 0
;   Name = AutoCAD.Application: Not applicable
;   ObjectID (RO) = 2128045424
;   ObjectName (RO) = "AcDbDictionary"
;   OwnerID (RO) = 2128045080
T
Какой-то контейнер-словарь...
Смотрю что в нем еще есть.

Код:
[Выделить все]
(setq col-blc nil)
(vlax-for ini-2 (vla-ObjectIDToObject act-doc 2128045424) (setq col-blc (cons ini-2 col-blc)))
(#<VLA-OBJECT IAcadObject 0afde374> #<VLA-OBJECT IAcadObject 0afdc984>)

Лезу выше

Код:
[Выделить все]
(setq col-blc2 nil)
(vlax-for ini-2 (vla-ObjectIDToObject act-doc 2128045080) (setq col-blc2 (cons ini-2 col-blc2)))
Вижу содержимое блока, чей это ACAD_EVALUATION_GRAPH
(#<VLA-OBJECT IAcadLWPolyline 0afba8e4>)
но не вижу того самого контенера-словаря "AcDbDictionary"!!!

Как это так?!!! есть коллекция, в нее входят элементы блока, она является родителем не только этим элементам, но и контейнеру-словарю, а его в коллекции не видно!???
Его можно только через entget самой коллекции увидеть, да и то, черз левое ухо.

OwnerID указывает на коллекцию блока, а в коллекции нет такого элемента. Кто мне может дать ответ, что тогда считать элементами коллекции?

Этот контейнер-словарь принадлежит только этому блоку и только этой коллекции, а как узнать что еще принадлежит этой коллекции но не через vlax-for? Как видите не все дает vlax-for. Да есть еще сомнение, что entget все может.

Последний раз редактировалось Supermax, 06.01.2010 в 19:01.
Просмотров: 2940
 
Непрочитано 07.01.2010, 22:46
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,787


не очень понял... Я прокрутил такой код:
Код:
[Выделить все]
(setq blk_def (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))
                        (vla-get-effectivename (vlax-ename->vla-object (car (entsel))))
                        ) ;_ end of vla-item
      dict    (car (vl-remove-if-not
                     (function
                       (lambda (x)
                         (= (vla-get-objectname x) "AcDbEvalGraph")
                         ) ;_ end of lambda
                       ) ;_ end of function
                     ((lambda (/ res)
                        (vlax-for sub (vla-getextensiondictionary blk_def)
                          (setq res (cons sub res))
                          ) ;_ end of vlax-for
                        ) ;_ end of lambda
                      )
                     ) ;_ end of vl-remove-if-not
                   ) ;_ end of car
      ) ;_ end of setq
и проверил dict. Что ты хочешь в результате получить?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Что является элементом коллекции, а что нет?

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рифмоплетство. Kryaker Разное 554 14.11.2023 11:59
Саяно-Шушенская ГЭС casemsot Обрушения, аварии, инциденты 1580 03.10.2013 12:49
В Украине эпидемия. Это психоз, или действительно такого еще не было. Vavan Metallist Разное 189 04.11.2009 20:34
Мировой кризис Moris Разное 2271 07.12.2008 12:07
Как не надо строить. Письмо от заказчика))) Fanatic13 Разное 9 24.09.2007 21:33