Реклама / ООО «ИЗОЛПРОЕКТ» / ИНН: 7725566484 | ERID: 2Vtzqx6kV7S
IPB IPB
Проектирование, монтаж, наладка, сервис


Здравствуйте, гость ( Вход | Регистрация )

- Стандарт НП «АВОК» 7.11-2024
«Рекомендации по проектированию инженерных систем
дошкольных образовательных организаций»

АВОК в соц. сетях
ИНН: 7714824045 | erid: 2VtzqwzKQiU
20 страниц V  « < 18 19 20 >  
Добавить ответ в эту темуОткрыть тему
> Создание спецификации автоматически (Дубль2), Рассматриваются технология и ее реализация по автоматическому создани
Гость_Supermax_*
сообщение 30.10.2007, 19:46
Сообщение #544





Guest Forum






Так, вот имена (vla-get-name ...)

("*U2" "Отвод Ст 159х4.5-1-ППУ-ПЭ" "*Paper_Space0" "*Paper_Space"
"*Model_Space")

Ты сечешь, у меня файл и в нем один единственный динамический блок
Я его вскрываю
Код
(defun _kpblc-get-all-AcDbBlockLookupActionEntity-with-Blocks ( / )
(vl-load-com)
(setq res3 nil)
(vlax-for blk_def
;(vla-get-ModelSpace (vla-get-activedocument (vlax-get-acad-object)))
(vla-get-Blocks (vla-get-activedocument (vlax-get-acad-object)))
;(if  
;(= (vlax-get-property blk_def 'ObjectName) "AcDbBody")
;(= (vla-get-objectname blk_def) "AcDbBody")
(setq res3 (cons (vla-get-name blk_def) res3));)
);_ end of vlax-for
);_ end of defun. В переменной res3 - результат в виде списка vla-объектов


Ну тут на все случаи жизни
и получаю в данный момент 5 таблиц где name следующие
("*U2" "Отвод Ст 159х4.5-1-ППУ-ПЭ" "*Paper_Space0" "*Paper_Space"
"*Model_Space")

Обрати внимание на звездочки перед именами



Прикрепленные файлы
Прикрепленный файл  Отвод_PPU_DU_159.dwg ( 96,61 килобайт ) Кол-во скачиваний: 81
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 30.10.2007, 20:11
Сообщение #545





Guest Forum






И что это за "*Paper_Space0"?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 31.10.2007, 10:09
Сообщение #546


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



Ну извини, но рассказывать то, что есть у Полещука, я не считаю верным.
А чего тебя зведочки так напрягли? Думаю, более интересным будет вариант
Код
(defun test (/)
  (mapcar
    '(lambda (x)
       (princ
         (strcat "\n"
                 (vla-get-objectname x)
                 " : "
                 (vla-get-name x)
                 (if (and (equal (vla-get-hasextensiondictionary x) :vlax-true)
                          (> (vla-get-count (vla-getextensiondictionary x)) 0)
                          );_ end of and
                   " : has dict **"
                   ""
                   );_ end of if
                 "**"
                 );_ end of strcat
         );_ end of princ
       );_ end of lambda
    ((lambda (/ lst)
       (vlax-for blk
                 (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)))
         (setq lst (cons blk lst))
         );_ end of vlax-for
       );_ end of lambda
     )
    );_ end of mapcar
  (princ)
  );_ end of defun

Обрати внимание на словарные записи (точнее, их наличие)
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 31.10.2007, 10:58
Сообщение #547





Guest Forum






Совершенно случайно, рывшись на форуме AutoDesk-a

http://discussion.autodesk.com/thread.jspa?messageID=5069675

Я нашел вот это:
Перевел автоматическим переводчиком и ахнул.

Цитата
1) Нет никакого выставленного программного ИНТЕРФЕЙСА приложения для создания динамичных блоков. Я имею
как минимум двух клиентов, которые имеют большие библиотеки блоков, которые представляют
их ассортимент изделий. Эти компании могли извлечь выгоду очень из использования
динамичных блоков. Однако, не экономично для них вручную
добавить надлежащих параметров к свыше 15,000 блоков. Логика для
дополнения 'Parametrics' могла программироваться но нет никакого программного ИНТЕРФЕЙСА приложения
, чтобы сделать так. Я предполагаю, что один мог написать сценарий процесса (хотя я буду держать пари, я
нарвался бы на некоторые главные мертвые концы для некоторых вещей, которые только имеют интерфейсы диалога

2) Почему - там предел (из 1) к числу параметров видимости?
Мне нужно быть способным проецировать многоразовые параметры видимости на различные
выборы продукта. Этот один означает, что я не могу рекомендовать динамичные блоки к моим
клиентам, которым нужно это функциональность sad.gif

Кто-либо кроме разочаровал с динамичными блоками от перспективы API?

В случае, если вы не сунули нос в чужие дела acdb16.dll за 2006, здесь есть короткий список
того, что мы пропускаем:

AcDbBlock1PtParameter
AcDbBlock1PtParameterEntity
AcDbBlock2PtParameter
AcDbBlock2PtParameterEntity
AcDbBlockAction
AcDbBlockActionEntity
AcDbBlockActionEntityWithBasePt
AcDbBlockActionWithBasePt
AcDbBlockAlignmentGrip
AcDbBlockAlignmentGripEntity
AcDbBlockAlignmentParame t er
AcDbBlockAlignmentParameterEntity
AcDbBlockArrayAction
AcDbBlockArrayActionEntity
AcDbBlockBasepointParameter
AcDbBlockBasepointParameterEnti t y
AcDbBlockElement
AcDbBlockElementEntity
AcDbBlockElementEntityMgr
AcDbBlockFlipAction
AcDbBlockFlipActionEntity
AcDbBlockFlipGrip
AcDbBlockFlipGripEntity
AcDbBlockFlipParameter
AcDbBlockFlipParameterEntity
AcDbBlockGrip
AcDbBlockGripEntity
AcDbBlockLinearGrip
AcDbBlockLinearGripEntity
AcDbBlockLinearParameter
AcDbBlockLinearParameterEntity
AcDbBlockLookupAction
AcDbBlockLookupActionEntity
AcDbBlockLookupGrip
AcDbBlockLookupGripEntity
AcDbBlockLookupParameter
AcDbBlockLookupParameterEntity
AcDbBlockMoveAction
AcDbBlockMoveActionEntity
AcDbBlockParamValueSet
AcDbBlockParameter
AcDbBlockParameterEntity
AcDbBlockPointParameter
AcDbBlockPointParameterEntity
AcDbBlockPolarGrip
AcDbBlockPolarGripEntity
AcDbBlockPolarParameter
AcDbBlockPolarParameterEntity
AcDbBlockPolarStretchAction
AcDbBlockPolarStretchActionEntity
AcDbBlockRotateAction
AcDbBlockRotateActionEntity
AcDbBlockRotationGrip
AcDbBlockRotationGripEntity
AcDbBlockRotationParameter
AcDbBlockRotationParameterEntity
AcDbBlockScaleAction
AcDbBlockScaleActionEntity
AcDbBlockStretchAction
AcDbBlockStretchActionEntity
AcDbBlockVisibilityGrip
AcDbBlockVisibilityGripEntity
AcDbBlockVisibilityParameter
AcDbBlockVisibilityParameterEntity
AcDbBlockXYGrip
AcDbBlockXYGripEntity
AcDbBlockXYParameter
AcDbBlockXYParameterEntity


Best regards,

Byron Blattel
CADwerx--Applications for AutoCAD
Autodesk Registered Developer
Contact Info @ http://www.cadwerx.net
Custom Programming Services - ObjectARX/C++/MFC/ASP/STL/ATL/ISAPI...


Короче, не я один оказывается такой вумный. И это датировано прошлым годом.

Сообщение отредактировал Supermax - 31.10.2007, 11:07
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 31.10.2007, 11:06
Сообщение #548


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



Ну и? Через API, тем более с использованием .NET, добраться до состава параметра типа lookup, по-моему, невозможно. Даже на предмет прочитать. Лиспом - возможно, хотя и через пятую точку.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 31.10.2007, 11:24
Сообщение #549





Guest Forum






Дык, я что не понимаю? Читать мы уже читаем, а чтобы сформировать новое значение или скопировать вла-объект в другой блок - только через эмуляцию действий руками. Во всяком случае - это верняк, что получится.
И ты заметь, скользкий ты наш, что идея создания виртуальных изделий на основе динамических блоков летает в воздухе уже с начала 2006 года.
Kpblc, попробуй взять блок и найти в нем все его составляющие вплоть до линий и текста. Не найдутся ли при этом эти чертовы объекты? Если найдутся, то нельзя ли их тупо скопировать в другой блок, лежащий в этом же файле?
И потом, я, чтобы облегчить себе жизнь не копировал свойства из блока в блок, а копировал графику в блок со свойствами, который потом переименовывал. Подумай, нельзя ли сделать это конвейером?
К стати окна в блоке можно создавать программно через Command и префикс "-" Работает.

Еще вопрос (вдруг знаешь) Можно ли конкретное окно (c lookup-oм) установить жестко на конкретную позицию пространства экрана? Оно сейчас перетаскивается туда-сюда. А, помню, есть переменная AutoCAD-a которая отвечает за это.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 31.10.2007, 11:34
Сообщение #550





Guest Forum






Да, к сожалению нет такого метода, как добавление вла-объекта, а то можно было бы.
Есть вторичные свойства, а есть первичные. Ничего нам не даст изменение вторичных свойств. Надо пытаться изменить первичные. И помоему мы просто слепы. Кроме пространства модели и лэйаутов есть наверное пространство блока. Только его не так обозначили и vlax-dump-object его не видит. Методы дают нам возможность вставлять в блок примитивы, но мы по прежнему пространство самого блока не видим. Иначе бы мы могли через vlax-for увидить список элементов каждого блока. Или я совсем сошел с ума.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 31.10.2007, 11:34
Сообщение #551


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



Ну ёпырысыты... Да не в объектах дело, а в словарях! Получить-то объекты - запросто!
Код
(defun getcont (/ blk res)
  (vl-load-com)
  (if
    (and
      (= (type (setq
                 ent (vl-catch-all-apply
                       '(lambda () (car (entsel "\nУкажи дин.блок <Отмена> : ")))
                       );_ end of vl-catch-all-apply
                 );_ end of setq
               );_ end of type
         'ename
         );_ end of =
      (= (cdr (assoc 0 (entget ent))) "INSERT")
      (equal (vla-get-isdynamicblock (setq ent (vlax-ename->vla-object ent)))
             :vlax-true
             );_ end of equal
      );_ end of and
     (progn
       (vlax-for subent
                 (vla-item (vla-get-blocks
                             (vla-get-activedocument (vlax-get-acad-object))
                             );_ end of vla-get-blocks
                           (vla-get-effectivename ent)
                           );_ end of vla-item
         (setq res (cons subent res))
         );_ end of vlax-for
       );_ end of progn
     );_ end of if
  res
  );_ end of defun

А словари лежат в описании блока, и не привязаны к примитивам блока.
---
Добавлено:
> #549 : Как спозиционировать окно в строго определенном месте - не знаю, единственное что могу порекомендовать - смотреть реестр, окна хранят информацию о своем состоянии там. Конкретная ветка - не знаю, но искать надо в HKEY_CURRENT_USER\Software, а там, скорее всего, в \Autodesk\AutoCAD<бла-бла-бла>\Profiles\<Current profile>\Dialogs, либо в Microsoft где-то. Надо шерстить RegShot'ом.
> #550 : Да ну??? А чем же тебя vla-addline BlockDefinition не устраивает? Я тебе блок в 5 секунд создам (но не динамический wink.gif)

Сообщение отредактировал kpblc - 31.10.2007, 11:43
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 31.10.2007, 12:13
Сообщение #552





Guest Forum






Ну и что я говорил? - Нету в списке этих объектов!
Вот как должен выглядеть в списке объект
Код
#<VLA-OBJECT IAcadBlockLookupActionEntity 05a97ebc>

Не нашел твой лисп этот эелемент.

Все нашел, до последней точки и черточки, а эти - не видит в упор.
Поскольку нет их в коллекциях Blocks и ModelSpace

Про позиционирование окна - разобрался. Теперь можно и мышку сэмулировать и тыкать в ячейки программно.
Не морщись, мы ведь Русские, не получается "по человечески" сделаем "по Русски" с помощью зубила и какой-то матери.
Надо корефея в Delphi найти, чтоб помог значит. Если удасться всковырнуть всетаки мозг дин блокам - сделаем программно. А пока - где мое зубило и молоток?

Сообщение отредактировал Supermax - 31.10.2007, 12:34
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 31.10.2007, 12:32
Сообщение #553


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



Ну ты что, издеваешься?
Есть несколько видов объектов: графические (отрезки, полилинии, точки, тексты, атрибуты блоков) и неграфические (словари, расширенные данные, свойства файла). Поведение динамического блока обуславливается наличием в его описании словарей - неграфических данных, которые в своем составе, судя по всему, содержат указатели на обрабатываемые примитивы. Для доступа к словарям описания блока надо использовать код, аналогичный приведенному в #507.
Визуальное отображение Action обеспечивается несколькими arx-приложениями, работающими напрямую с графическим ядром acad.exe. Эти ручки, черточки и прочая лабуда - его в графических примитивах блоков нет!
Ты просил получить доступ к примитивам блока? Я сделал.
Тебе надо словари? Смотри #507. Или:
Код
_$ (setq lst (entget (TBLOBJNAME "block" (vla-get-EffectiveName (vlax-ename->vla-object (car (entsel))))) '("*")))
((-1 . <Имя объекта: 7edf9fb0>) (0 . "BLOCK") (330 . <Имя объекта: 7edf9f68>) (5 . "10E") (100 . "AcDbEntity") (67 . 0) (8 . "0") (62 . 5) (100 . "AcDbBlockBegin") (70 . 0) (10 0.0 0.0 0.0) (-2 . <Имя объекта: 7edd0430>) (2 . "Отвод Ст 159х4.5-1-ППУ-ПЭ") (1 . ""))
_$ (setq aa (cdr (assoc 330 lst)))
<Имя объекта: 7edf9f68>
_$ (entget aa)
((-1 . <Имя объекта: 7edf9f68>) (0 . "BLOCK_RECORD") (5 . "E5") (102 . "{ACAD_XDICTIONARY") (360 . <Имя объекта: 7edf5190>) (102 . "}") (330 . <Имя объекта: 7edf9c08>) (100 . "AcDbSymbolTableRecord") (100 . "AcDbBlockTableRecord") (2 . "Отвод Ст 159х4.5-1-ППУ-ПЭ") (360 . <Имя объекта: 7edf9fb0>) (340 . <Имя объекта: 0>)
(310 . "2800000020000000200000000100080000000000000400000000000000000000000000000000000000000000000080000080000000808000800000008000800080800000C0C0C000C0DCC000F0CAA6000020400000206000002080000020A0000020C0000020E00000400000004020000040400000406000004080000040A0")
(310 . "000040C0000040E00000600000006020000060400000606000006080000060A0000060C0000060E00000800000008020000080400000806000008080000080A0000080C0000080E00000A0000000A0200000A0400000A0600000A0800000A0A00000A0C00000A0E00000C0000000C0200000C0400000C0600000C0800000C0")
(310 . "A00000C0C00000C0E00000E0000000E0200000E0400000E0600000E0800000E0A00000E0C00000E0E00040000000400020004000400040006000400080004000A0004000C0004000E00040200000402020004020400040206000402080004020A0004020C0004020E000404000004040200040404000404060004040800040")
(310 . "40A0004040C0004040E00040600000406020004060400040606000406080004060A0004060C0004060E00040800000408020004080400040806000408080004080A0004080C0004080E00040A0000040A0200040A0400040A0600040A0800040A0A00040A0C00040A0E00040C0000040C0200040C0400040C0600040C08000")
(310 . "40C0A00040C0C00040C0E00040E0000040E0200040E0400040E0600040E0800040E0A00040E0C00040E0E00080000000800020008000400080006000800080008000A0008000C0008000E00080200000802020008020400080206000802080008020A0008020C0008020E00080400000804020008040400080406000804080")
(310 . "008040A0008040C0008040E00080600000806020008060400080606000806080008060A0008060C0008060E00080800000808020008080400080806000808080008080A0008080C0008080E00080A0000080A0200080A0400080A0600080A0800080A0A00080A0C00080A0E00080C0000080C0200080C0400080C0600080C0")
(310 . "800080C0A00080C0C00080C0E00080E0000080E0200080E0400080E0600080E0800080E0A00080E0C00080E0E000C0000000C0002000C0004000C0006000C0008000C000A000C000C000C000E000C0200000C0202000C0204000C0206000C0208000C020A000C020C000C020E000C0400000C0402000C0404000C0406000C0")
(310 . "408000C040A000C040C000C040E000C0600000C0602000C0604000C0606000C0608000C060A000C060C000C060E000C0800000C0802000C0804000C0806000C0808000C080A000C080C000C080E000C0A00000C0A02000C0A04000C0A06000C0A08000C0A0A000C0A0C000C0A0E000C0C00000C0C02000C0C04000C0C06000")
(310 . "C0C08000C0C0A000F0FBFF00A4A0A000808080000000FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000")
(310 . "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000")
(310 . "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000")
(310 . "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000A4A4A4FF00000000000000000000000000")
(310 . "000000000000000000000000000000A4A4A4FF00000000000000000000000000000000000000000000000000000000A4A4A4FF00000000000000000000000000000000000000000000000000000000A4A4A4FF00000000000000000000000000000000000000000000000000000000A4A4A4FF000000000000000000000000")
(310 . "00000000000000000000000000000000A4A4A4FF0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000")
(310 . "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000")
(310 . "00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000")
(310 . "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"))
Вот aa и надо разбирать "по косточкам". Примерно так:
Код
_$ (entget (cdr (assoc 360 (entget aa))))
((-1 . <Имя объекта: 7edf5190>) (0 . "DICTIONARY") (330 . <Имя объекта: 7edf9f68>) (5 . "33EA") (100 . "AcDbDictionary") (280 . 1) (281 . 1) (3 . "ACAD_ENHANCEDBLOCK") (360 . <Имя объекта: 7edf5198>) (3 . "AcDbDynamicBlockRoundTripPurgePreventer") (360 . <Имя объекта: 7edf5458>))
И проходить по 360 группе.
Код
_$ (setq lst_dict (mapcar 'cdr (vl-remove-if-not '(lambda(x) (= (car x) 360)) (entget (cdr (assoc 360 (entget aa)))))))
(<Имя объекта: 7edf5198> <Имя объекта: 7edf5458>)
Попытки получить (entget) для каждого элемента моментально показывают наличие реакторов, завязанных на другие словари. в 360-й группе лежат действия на Visibility и Rotation - и Action, и Parameter:
Код
_$ (mapcar '(lambda(y) (mapcar '(lambda(z) (cdr(assoc 0 (entget (cdr z))))) (vl-remove-if-not '(lambda(x) (= (car x) 360)) (entget y)))) lst_dict)
(("BLOCKVISIBILITYPARAMETER" "BLOCKROTATIONPARAMETER" "BLOCKROTATEACTION" "BLOCKROTATIONPARAMETER" "BLOCKROTATEACTION" "BLOCKROTATIONPARAMETER" "BLOCKROTATEACTION" "BLOCKROTATIONPARAMETER" "BLOCKROTATEACTION" "BLOCKROTATIONPARAMETER" "BLOCKROTATEACTION" "BLOCKROTATIONPARAMETER" "BLOCKROTATEACTION" "BLOCKROTATIONPARAMETER" "BLOCKROTATEACTION" "BLOCKROTATIONPARAMETER" "BLOCKROTATEACTION" "BLOCKROTATIONPARAMETER" "BLOCKROTATEACTION" "BLOCKROTATIONPARAMETER" "BLOCKROTATEACTION" "BLOCKROTATIONPARAMETER" "BLOCKROTATEACTION" "BLOCKROTATIONPARAMETER" "BLOCKROTATEACTION" "BLOCKLINEARPARAMETER" "BLOCKSTRETCHACTION" "BLOCKLINEARPARAMETER" "BLOCKSTRETCHACTION" "BLOCKLINEARPARAMETER" "BLOCKSTRETCHACTION" "BLOCKROTATIONPARAMETER" "BLOCKROTATEACTION" "BLOCKLINEARPARAMETER" "BLOCKSTRETCHACTION" "BLOCKROTATIONPARAMETER" "BLOCKROTATEACTION" "BLOCKLOOKUPPARAMETER" "BLOCKLOOKUPACTION" "BLOCKLOOKUPPARAMETER" "BLOCKLOOKUPACTION" "BLOCKLOOKUPPARAMETER" "BLOCKLOOKUPACTION" "BLOCKLOOKUPPARAMETER" "BLOCKLOOKUPACTION" "BLOCKLOOKUPPARAMETER" "BLOCKLOOKUPACTION" "BLOCKLOOKUPPARAMETER" "BLOCKLOOKUPACTION" "BLOCKLOOKUPPARAMETER" "BLOCKLOOKUPACTION" "BLOCKLOOKUPPARAMETER" "BLOCKLOOKUPACTION" "BLOCKLOOKUPPARAMETER" "BLOCKLOOKUPACTION" "BLOCKLOOKUPPARAMETER" "BLOCKLOOKUPACTION" "BLOCKLOOKUPPARAMETER" "BLOCKLOOKUPACTION" "BLOCKLOOKUPPARAMETER" "BLOCKLOOKUPACTION" "BLOCKLOOKUPPARAMETER" "BLOCKLOOKUPACTION" "BLOCKLOOKUPPARAMETER" "BLOCKLOOKUPACTION" "BLOCKLINEARPARAMETER" "BLOCKSTRETCHACTION" "BLOCKLINEARPARAMETER" "BLOCKSTRETCHACTION" "BLOCKLINEARPARAMETER" "BLOCKSTRETCHACTION") nil)
Еще раз говорю - это неграфические данные! Но запутано там все конкретно для сторннего разработчика...
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 31.10.2007, 13:27
Сообщение #554





Guest Forum






Ага, это уже что-то. Я чуток поковырял твою письменность
Код
(mapcar '(lambda(y) (mapcar '(lambda(z) (entget (cdr z))) (vl-remove-if-not '(lambda(x) (= (car x) 360)) (entget y)))) lst_dict)


Вывалился офигенный список, из которго я нашел
Код
((-1 . <Entity name: 7ef83400>)
(0 . "BLOCKSTRETCHACTION")
(330 . <Entity name: 7ef83198>)
(5 . "3430")
(100 . "AcDbEvalExpr")
(90 . 180)
(98 . 25)
(99 . 76)
(100 . "AcDbBlockElement")
(300 . "Стенка")
(98 . 25)
(99 . 76)
(1071 . 0)
(100 . "AcDbBlockAction")
(70 . 0)
(71 . 1)
(330 . <Entity name: 7ef83180>)
(1010 1757.68 2828.87 0.0)
(100 . "AcDbBlockStretchAction")
(92 . 176)
(301 . "EndXDelta")
(93 . 176)
(302 . "EndYDelta")
(72 . 2)
(1011 1629.34 2847.83 0.0)
(1011 1326.06 3187.61 0.0)
(73 . 1)
(331 . <Entity name: 7ef83180>)
(74 . 1)
(94 . 1)
(75 . 0)
(140 . 1.0)
(141 . 0.0)
(280 . 0))


Там почти все лежат. Этот объект "Стенка" я знаю хорошо. И вот StretchAction к нему нашелся и его все свойства.
Kpblc - ты гений!

Сообщение отредактировал Supermax - 31.10.2007, 14:14
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 31.10.2007, 14:21
Сообщение #555





Guest Forum






Вот так, лучше не делать!
Код
(mapcar '(lambda(y) (mapcar '(lambda(z) (entget (cdr (assoc 330 (entget (cdr z)))))) (vl-remove-if-not '(lambda(x) (= (car x) 360)) (entget y)) )) lst_dict)
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 31.10.2007, 14:34
Сообщение #556





Guest Forum






Во всех элементах лежит один и тот же словарь (0 . "BLOCKVISIBILITYPARAMETER") В нем очень большой список и (330 . <Entity name: 7ef83198>) (0 . "ACAD_EVALUATION_GRAPH") в нем (0 . "DICTIONARY") и ссылка вверх по словарю. В общем дальше не интересно.
Щас попробую создать объект по DXF кодам.

Сообщение отредактировал Supermax - 31.10.2007, 14:41
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 31.10.2007, 14:39
Сообщение #557


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



> #555 : интересно, почему? Ну получишь длиннющий список, и ладно - расковыривай его до посинения smile.gif
> #556 : неправда ваша. Как же я получил разные имена словарей в #553?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 31.10.2007, 14:52
Сообщение #558





Guest Forum






#556 Наоборот, это они лежат в этом словаре и в них ссылка на него. Считай 360-х кодов больше нет. а по ззо-ым я прошел до упора. Но это уже не главное. Есть набор DXF-кодов динамического элемента и можно попробовать его по ним создать.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 31.10.2007, 15:09
Сообщение #559





Guest Forum






Увы
Код
(entmake (cdr (car (reverse (car (mapcar '(lambda(y) (mapcar '(lambda(z) (entget (cdr z))) (vl-remove-if-not '(lambda(x) (= (car x) 360)) (entget y)))) lst_dict))))))


; error: bad DXF group: (1071 . 0)
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 31.10.2007, 15:31
Сообщение #560





Guest Forum






Кстати, (entget (car (entsel))) на динамических свойсвах дает только один код (-1 . ...) и все. Что говорит о том, что создать или отредактировать такой объект через Entmod или entmake или entmakex не получится.
Давай зубилом, а? Ну что ты в самом деле уперся? Не ты один бьешся лбом об эту стену, о кстати и смайлик такой есть bang.gif . Хочешь стать таким blink.gif ? Умный в гору не пойдет, умный гору обойдет. Или: Умный в гору не пойдет, он в ней сделает проход, или умный в гору не пойдет, он и так на ней живет (это про грузин), или: умный в гору не пойдет, умный гору подорвет (это про американцев), или: умный в гору не пойдет, он других туда пошлет (это про хохлов). Все иссяк.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 31.10.2007, 15:34
Сообщение #561


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



ИМХО (поскольку работы немеряно, коды рисовать не получается): надо разбирать словарь полностью, вплоть до примитивов, на которые он указывает. Возможно, придется постоянно выполнять преобразования vla<->ename. Создание словарей должно быть привязано именно к ним.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 31.10.2007, 15:39
Сообщение #562





Guest Forum






У тебя MS Project есть?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 31.10.2007, 15:44
Сообщение #563


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



Может, и болтается где-то инсталл. А что?
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 31.10.2007, 16:00
Сообщение #564





Guest Forum






В нем очень круто можно дерево вложенности сделать, с заметками, в которых сохранить распечатку свойств каждого шага. Я уже начал сегодняшний результат разворачивать.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
kpblc
сообщение 31.10.2007, 16:04
Сообщение #565


CAD Developer


Группа: Участники форума
Сообщений: 409
Регистрация: 6.2.2006
Из: C.-Петербург, Россия
Пользователь №: 2062



Я в нем последний раз работал года 3 назад smile.gif
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 31.10.2007, 16:22
Сообщение #566





Guest Forum






Так ничего и не надо, кроме первой колонки

Прикрепленные файлы
Прикрепленный файл  Lookup.rar ( 53,27 килобайт ) Кол-во скачиваний: 62
 
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 31.10.2007, 17:39
Сообщение #567





Guest Forum






По закону подлости, то, что я искал и ты тоже, было в самом конце. Разбирая элемент BLOCKLOOKUPACTION
В нем я создал две строки с наименованием значения "Первая надпись" и "Вторая надпись" и привязал к длинне в левой колонке "Первая надпись" к длинне 100мм. а "Вторая надпись" к длинне 200мм. Название этого Lookup-a "Второй".

Код
(nth 18 (car (mapcar '(lambda(y) (mapcar '(lambda(z) (entget (cdr z))) (vl-remove-if-not '(lambda(x) (= (car x) 360)) (entget y)))) lst_dict)))

(
(-1 . <Entity name: 7efa21b0>)
(0 . "BLOCKLOOKUPACTION")
(330 . <Entity name: 7efa2020>)
(5 . "126")
(100 . "AcDbEvalExpr")
(90 . 19)
(98 . 25)
(99 . 76)
(100 . "AcDbBlockElement")
(300 . "Второй")
(98 . 25)
(99 . 76)
(1071 . 0)
(100 . "AcDbBlockAction")
(70 . 0)
(71 . 0)
(1010 566.948 -247.188 0.0)
(100 . "AcDbBlockLookupAction")
(92 . 2)
(93 . 2)
(301 . "")
(302 . "100.0000000000000")
(302 . "Первая надпись")
(302 . "200.0000000000000")
(302 . "Вторая надпись")
(303 . "")
(94 . 5)
(95 . 40)
(96 . 2)
(282 . 0)
(305 . "Custom")
(281 . 0)
(304 . "UpdatedDistance")
(303 . "")
(94 . 15)
(95 . 1)
(96 . 0)
(282 . 1)
(305 . "Custom")
(281 . 1)
(304 . "lookupString")
(280 . 1)
)


Вот они где зарыты эти строчки из Lookup-a!
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 31.10.2007, 17:59
Сообщение #568





Guest Forum






А вот так выглядит Lookup action если в него вставить привязку этих строк еще и к углу поворота объекта.
Код
(
(-1 . <Entity name: 7efa2750>)
(0 . "BLOCKLOOKUPACTION")
(330 . <Entity name: 7efa26b8>)
(5 . "1D2")
(100 . "AcDbEvalExpr")
(90 . 19)
(98 . 25)
(99 . 76)
(100 . "AcDbBlockElement")
(300 . "Второй")
(98 . 25)
(99 . 76)
(1071 . 0)
(100 . "AcDbBlockAction")
(70 . 0)
(71 . 0)
(1010 566.948 -247.188 0.0)
(100 . "AcDbBlockLookupAction")
(92 . 2)
(93 . 3)
(301 . "")
(302 . "100.0000000000000")
(302 . "0.3490658503988659")
(302 . "Первая надпись")
(302 . "200.0000000000000")
(302 . "0.6981317007977318")
(302 . "Вторая надпись")
(303 . "")
(94 . 5)
(95 . 40)
(96 . 2)
(282 . 0)
(305 . "Custom")
(281 . 0)
(304 . "UpdatedDistance")
(303 . "")
(94 . 10)
(95 . 40)
(96 . 1)
(282 . 0)
(305 . "Custom")
(281 . 0)
(304 . "UpdatedAngle")
(303 . "")
(94 . 15)
(95 . 1)
(96 . 0)
(282 . 1)
(305 . "Custom")
(281 . 0)
(304 . "lookupString")
(280 . 1)
)


Только вот я первую строку привязал к углу поворота 10 градусов, а вторую 20 градусов, а тут радианы чтоли?

Сообщение отредактировал Supermax - 31.10.2007, 18:10
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 31.10.2007, 18:09
Сообщение #569





Guest Forum






А вот я привязал эти две строки еще и VisibilityParametr-у то есть к окнам и поменял значение "только для чтения" к значению "для управления"
Код
(
(-1 . <Entity name: 7efa2aa0>)
(0 . "BLOCKLOOKUPACTION")
(330 . <Entity name: 7efa2a08>)
(5 . "234")
(100 . "AcDbEvalExpr")
(90 . 19)
(98 . 25)
(99 . 76)
(100 . "AcDbBlockElement")
(300 . "Второй")
(98 . 25)
(99 . 76)
(1071 . 0)
(100 . "AcDbBlockAction")
(70 . 0)
(71 . 0)
(1010 566.948 -247.188 0.0)
(100 . "AcDbBlockLookupAction")
(92 . 2)
(93 . 4)
(301 . "")
(302 . "100.0000000000000")
(302 . "0.3490658503988659")
(302 . "VisibilityState0")
(302 . "Первая надпись")
(302 . "200.0000000000000")
(302 . "0.6981317007977318")
(302 . "VisibilityState0")
(302 . "Вторая надпись")
(303 . "")
(94 . 5)
(95 . 40)
(96 . 2)
(282 . 0)
(305 . "Custom")
(281 . 0)
(304 . "UpdatedDistance")
(303 . "")
(94 . 10)
(95 . 40)
(96 . 1)
(282 . 0)
(305 . "Custom")
(281 . 0)
(304 . "UpdatedAngle")
(303 . "")
(94 . 1)
(95 . 1)
(96 . 0)
(282 . 0)
(305 . "Custom")
(281 . 0)
(304 . "VisibilityState")
(303 . "")
(94 . 15)
(95 . 1)
(96 . 0)
(282 . 1)
(305 . "Custom")
(281 . 1)
(304 . "lookupString")
(280 . 1)
)


Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 31.10.2007, 18:27
Сообщение #570





Guest Forum






Тоже самое, только доступ к Lookup-У "только для чтения"
Код
(
(-1 . <Entity name: 7ebf5120>)
(0 . "BLOCKLOOKUPACTION")
(330 . <Entity name: 7ebf5088>)
(5 . "2F4")
(100 . "AcDbEvalExpr")
(90 . 19)
(98 . 25)
(99 . 76)
(100 . "AcDbBlockElement")
(300 . "Второй")
(98 . 25)
(99 . 76)
(1071 . 0)
(100 . "AcDbBlockAction")
(70 . 0)
(71 . 0)
(1010 566.948 -247.188 0.0)
(100 . "AcDbBlockLookupAction")
(92 . 2)
(93 . 4)
(301 . "")
(302 . "100.0000000000000")
(302 . "0.3490658503988659")
(302 . "VisibilityState0")
(302 . "Первая надпись")
(302 . "200.0000000000000")
(302 . "0.6981317007977318")
(302 . "VisibilityState0")
(302 . "Вторая надпись")
(303 . "")
(94 . 5)
(95 . 40)
(96 . 2)
(282 . 0)
(305 . "Custom")
(281 . 0)
(304 . "UpdatedDistance")
(303 . "")
(94 . 10)
(95 . 40)
(96 . 1)
(282 . 0)
(305 . "Custom")
(281 . 0)
(304 . "UpdatedAngle")
(303 . "")
(94 . 1)
(95 . 1)
(96 . 0)
(282 . 0)
(305 . "Custom")
(281 . 0)
(304 . "VisibilityState")
(303 . "")
(94 . 15)
(95 . 1)
(96 . 0)
(282 . 1)
(305 . "Custom")
(281 . 0)
(304 . "lookupString")
(280 . 1)
)


281 DXF-код:

0 - Read only; 1 - Allow reverse lookup
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 31.10.2007, 18:35
Сообщение #571





Guest Forum






Да, как все оказалось просто. Тупая таблица. 301 кодом начинается (маркер) 303 кончается. 302 код - значение ячеек в столбцах. Название столбцов, их ширина ниже.
Идет банальное перечисление слева направо значений ячеек. Закончилась строка - следующая пошла.

Вот сейчас ширину столбца первого изменю.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 31.10.2007, 18:46
Сообщение #572





Guest Forum






Вот что получилось: Поменял ширину первого столбца, примерно в два раза больше сделал.
Код
(
(-1 . <Entity name: 7ebf55a0>)
(0 . "BLOCKLOOKUPACTION")
(330 . <Entity name: 7ebf5508>)
(5 . "37C")
(100 . "AcDbEvalExpr")
(90 . 19)
(98 . 25)
(99 . 76)
(100 . "AcDbBlockElement")
(300 . "Второй")
(98 . 25)
(99 . 76)
(1071 . 0)
(100
. "AcDbBlockAction")
(70 . 0)
(71 . 0)
(1010 566.948 -247.188 0.0)
(100 . "AcDbBlockLookupAction")
(92 . 2)
(93 . 4)
(301 . "")
(302 . "100.0000000000000")
(302 . "0.3490658503988659")
(302 . "VisibilityState0")
(302 . "Первая надпись")
(302 . "200.0000000000000")
(302 . "0.6981317007977318")
(302 . "VisibilityState0")
(302 . "Вторая надпись")
(303 . "")
(94 . 5)
(95 . 40)
(96 . 2)
(282 . 0)
(305 . "Custom")
(281 . 0)
(304 . "UpdatedDistance")
(303 . "")
(94 . 10)
(95 . 40)
(96 . 1)
(282 . 0)
(305 . "Custom")
(281 . 0)
(304 . "UpdatedAngle")
(303 . "")
(94 . 1)
(95 . 1)
(96 . 0)
(282 . 0)
(305 . "Custom")
(281 . 0)
(304 . "VisibilityState")
(303 . "")
(94 . 15)
(95 . 1)
(96 . 0)
(282 . 1)
(305 . "Custom")
(281 . 0)
(304 . "lookupString")
(280 . 1)
)


Не, ширина колонок не здесь зарыта, а в описании окна, которое создается под диктовку этого объекта, но свойство окна прописаны там скорее всего.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения
Гость_Supermax_*
сообщение 31.10.2007, 18:55
Сообщение #573





Guest Forum






Добавил строк, но соответствия значениям динамических параметров не ставил и вот что получилось:

Код
(
(-1 . <Entity name: 7ebf58e8>)
(0 . "BLOCKLOOKUPACTION")
(330 . <Entity name: 7ebf5850>)
(5 . "3DD")
(100 . "AcDbEvalExpr")
(90 . 19)
(98 . 25)
(99 . 76)
(100 . "AcDbBlockElement")
(300 . "Второй")
(98 . 25)
(99 . 76)
(1071 . 0)
(100 . "AcDbBlockAction")
(70 . 0)
(71 . 0)
(1010 566.948 -247.188 0.0)
(100 . "AcDbBlockLookupAction")
(92 . 6)
(93 . 4)
(301 . "")
(302 . "100.0000000000000")
(302 . "0.3490658503988659")
(302 . "VisibilityState0")
(302 . "Первая надпись")
(302 . "200.0000000000000")
(302 . "0.6981317007977318")
(302 . "VisibilityState0")
(302 . "Вторая надпись")
(302 . "")
(302 . "")
(302 . "")
(302 . "Третья надпись")
(302 . "")
(302 . "")
(302 . "")
(302 . "Четвертая надпись")
(302 . "")
(302 . "")
(302 . "")
(302 . "Пятая надпись")
(302 . "")
(302 . "")
(302 . "")
(302 . "И нигде не ставлю значений соответствия")
(303 . "")
(94 . 5)
(95 . 40)
(96 . 2)
(282 . 0)
(305 . "Custom")
(281 . 0)
(304 . "UpdatedDistance")
(303 . "")
(94 . 10)
(95 . 40)
(96 . 1)
(282 . 0)
(305 . "Custom")
(281 . 0)
(304 . "UpdatedAngle")
(303 . "")
(94 . 1)
(95 . 1)
(96 . 0)
(282 . 0)
(305 . "Custom")
(281 . 0)
(304 . "VisibilityState")
(303 . "")
(94 . 15)
(95 . 1)
(96 . 0)
(282 . 1)
(305 . "Custom")
(281 . 0)
(304 . "lookupString")
(280 . 1)
)


Как видим, все равно надо вставлять пустые 302-е коды это очень важно.
Вернуться в начало страницы
 
+Ответить с цитированием данного сообщения

20 страниц V  « < 18 19 20 >
Добавить ответ в эту темуОткрыть тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

Реклама
ООО «Арктика групп» ИНН: 7713634274



ООО "Русич" ИНН 9721068883 / ЕРИД 2VtzqvMjLF8


ООО «УНИСПЛИТ» ИНН: 6453155081 erid:2VtzqxXgvJi

Реклама: ООО «СибСтронг» | ИНН 6670013662 | ERID: 2VtzqwyM2dc
Реклама: ООО «СЛ-ЛАЗЕР» ИНН 7727447267 | erid: 2VtzquvhFWx

Последние сообщения Форума






RSS Текстовая версия Сейчас: 30.7.2025, 8:24
Политика ООО ИИП «АВОК-ПРЕСС» в отношении обработки персональных данных