|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
|
||||
Имеем polar stretch в блоке, добавляем в сам stretch объекты...
Меняются только пары в описании BLOCKSTRETCHACTION: 71 - количество объектов в action`е 330 - имена объектов 73* - см 71 331* - см 330 *(только если объект находится в рамке влияния actiona`а, плюс к каждой строке 331 идут парочки 74.1 и 94.1) Supermax, расскажи пожалуйста, имеет ли значение, в каком месте я добавлю имя нового объекта в описание BLOCKSTRETCHACTION? Т.е.: 1) (append new_330 acad_eval_graph) 2) (append acad_eval_graph new_330) 3) искать нужное место в описании и сувать туда [Верное отметить] Последний раз редактировалось 5hev, 22.12.2010 в 15:11. Причина: добавил |
||||
|
||||
Выкладываю распечатку описания BLOCKSTRETCHACTION:
((-1 . <Entity name: 7eb8c1f8>) (0 . "BLOCKSTRETCHACTION") (330 . <Entity name: 7eb8c1b8>) (5 . "35F") (100 . "AcDbEvalExpr") (90 . 5) (98 . 27) (99 . 25) (100 . "AcDbBlockElement") (300 . "Stretch") (98 . 27) (99 . 25) (1071 . 0) (100 . "AcDbBlockAction") (70 . 0) (71 . 1) (330 . <Entity name: 7eb8c1a8>) (1010 4.25338 20.7466 0.0) (100 . "AcDbBlockStretchAction") (92 . 1) (301 . "EndXDelta") (93 . 1) (302 . "EndYDelta") (72 . 2) (1011 -5.0 5.0 0.0) (1011 13.4784 40.3757 0.0) (73 . 1) (331 . <Entity name: 7eb8c1a8>) (74 . 1) (94 . 1) (75 . 0) (140 . 1.0) (141 . 0.0) (280 . 0)) ((-1 . <Entity name: 7eb8c498>) (0 . "BLOCKSTRETCHACTION") (330 . <Entity name: 7eb8c470>) (5 . "3AB") (100 . "AcDbEvalExpr") (90 . 5) (98 . 27) (99 . 25) (100 . "AcDbBlockElement") (300 . "Stretch") (98 . 27) (99 . 25) (1071 . 0) (100 . "AcDbBlockAction") (70 . 0) (71 . 2) (330 . <Entity name: 7eb8c458>) (330 . <Entity name: 7eb8c460>) (1010 4.25338 20.7466 0.0) (100 . "AcDbBlockStretchAction") (92 . 1) (301 . "EndXDelta") (93 . 1) (302 . "EndYDelta") (72 . 2) (1011 -4.95064 19.1229 0.0) (1011 13.4784 40.3757 0.0) (73 . 1) (331 . <Entity name: 7eb8c458>) (74 . 1) (94 . 1) (75 . 0) (140 . 1.0) (141 . 0.0) (280 . 0)) ((-1 . <Entity name: 7eb8c300>) (0 . "BLOCKSTRETCHACTION") (330 . <Entity name: 7eb8c2d8>) (5 . "380") (100 . "AcDbEvalExpr") (90 . 5) (98 . 27) (99 . 25) (100 . "AcDbBlockElement") (300 . "Stretch") (98 . 27) (99 . 25) (1071 . 0) (100 . "AcDbBlockAction") (70 . 0) (71 . 2) (330 . <Entity name: 7eb8c2c8>) (330 . <Entity name: 7eb8c328>) (1010 4.25338 20.7466 0.0) (100 . "AcDbBlockStretchAction") (92 . 1) (301 . "EndXDelta") (93 . 1) (302 . "EndYDelta") (72 . 2) (1011 -5.0 5.0 0.0) (1011 13.4784 40.3757 0.0) (73 . 2) (331 . <Entity name: 7eb8c2c8>) (74 . 1) (94 . 1) (331 . <Entity name: 7eb8c328>) (74 . 1) (94 . 1) (75 . 0) (140 . 1.0) (141 . 0.0) (280 . 0)) * - зона влияния подразумевает рамку которую acad просит обвести перед указанием объектов для набора в actionset. Последний раз редактировалось 5hev, 22.12.2010 в 15:55. |
||||
|
||||
Тебе надо добавить свой новый элемент в этот список
Цитата:
и добавить в конец Цитата:
пары 1010 и 1011 надо просто выкинуть перед entmod-ом Они сами восстановятся |
||||
|
||||
Попробовал самый простой вариант:
Возможно, где-то еще надо менять описания? Supermax, я, видимо, спустя несколько лет после создания темы, выгляжу тут олухом, но не взыщи, подскажи. Сам сижу и ругаюсь, - где я был в 2008... |
||||
|
||||
Оказалось, что 1011 неразрывно связана с 72 парой, которая считает их количество. Порезал 72ую - и все работает!
Вот только выбирать имя того объекта, который надо включить в set, приходится через (entnext <block_ename>), неудобно. Кстати, можно включить в set любой объект даже вне блока, entmod съест, но вот двигаться объект не будет... Может, с другими parameter будет такой фокус прокатывать |
||||
|
||||
Не, не из других элементов, а из этого же.
Картина вырисовывается следующая: 1. Есть пары, которые определяют принадлежность DXF описания к объекту. 2. Есть пары и DXF списки, которые менять нельзя. Они не обрабатываются entmod 3. Есть пары, которые менять можно. Entmod держит перед собой два описания, старое и новое. Определяет отличия, проверяет их на допустимость изменения и изменяет. Пары 1010, 1011, 1071 и т.п берет из старого описания. Где-то похоже так. P.S. Про 72 пару ценная инфа, я не знал. Надо запомнить. В блоке есть возможность выбора многоугольником. Не квадратом. В таком случае 1011 пар будет много и 72 пара будет давать их количество. Попробуй проделать такой фокус: Размести блок в пространстве модели так, чтобы пространство блока по координатам совпало с пространством модели и попробуй привяжи элемент вне блока, но чтобы координаты его точек попадали в рамку выбора. Последний раз редактировалось Supermax, 23.12.2010 в 11:30. |
||||
|
||||
Добавлять элементы внутри блока легко - промодить ...parameter и всё.
А как быть, если задача сложнее:
Получается, необходимо модить сам evaluation-graph, меняя в нем 330ую и может что-то еще. Но даже если заморочиться, то в какой момент его entmak`ить в процессе формирования нового блока Supermax, странно, но ни на одном форуме такие вопросы не поднимаются... Ты где-нибудь нашел? Последний раз редактировалось 5hev, 24.12.2010 в 16:35. |
||||
|
||||
Ну, я так думаю:
Есть в пространстве модели блок (точнее, вхождение) и он динамический. Есть рядом с ним объект. Запоминаем точку вставки блока (назовем его "первоначальный") и нормаль. Нужный (нужные) объекты объединяем программно в блок с любой точкой вставки (0,0,0 к примеру). Запоминаем эту точку и нормаль этого блока. Также вычисляем смещение этой точки относительно точки вставки "первоначального блока" Программно открываем редактор блока, вставляем программно созданный нами блок, смещаем точку вставки так, как она смещена относительно нашего первоначального блока и разворачиваем нормаль. Технический блок взрываем. Все. элементы в блоке. Тут же корректируем активатор и выходим из редактора. Можно попробовать редактировать активатор после выхода из редактора блоков. |
||||
|
||||
Хех, я пошел по тому же пути, и теперь юзера веду в bedit, делаю дела, закрываю. Уже реализовал...
Спрашивал я скорее про то - теперь уже могу сформулировать - как программно эмулировать bedit. Сам себе ответил что это будет *опа, и решил мол зачем выдумывать велик, коли автодэск не публикует свои тайные функции для таких вещей (или тут надо курить ObjectARX)? Только есть один момент: как подавить строку редактора блоков, ведь это же тулбар или нет? Не догнал. Я хочу чтоб юзер bclose`зился только через меня. |
||||
|
||||
Программно сделать динамический блок нельзя по двум причинам.
1. Не все словари, входящие в блок можно создать программно. 2. все те же 1010, 1011, 1071 списки. Первоначальный динамический блок и динамические параметры со свойствами должны быть. ObjectARX тут не помощник. В нем ты того, что сделал в лиспе не повторишь. а последнее переведи с гоблинского, а то я не догнал. |
||||
|
||||
|
||||
|
||||
А вот так.. Создается-то он программно, но не нам это дано.
Можно конечно Автокад надурить, но надо разобраться со структурой файла и базы блоков. Я, к примеру, visibility-set создаю программно, но его автокад не принимает и его глючит, благодаря чему я заставляю сам автокад себе вставлять новый visibility-set. Можно попробовать всетаки создать visibility-set программно и правильно его вставить в базу. Я на коленке все это ваял и не со всеми парами разбирался "по мужски". А панель скрыть можно, но надо в скрипты лезть, писать всякие ковырялки. Я как-то все эти окна изучал, да лень одолела дальше изучать. |
||||
|
||||
Регистрация: 30.03.2011
Сообщений: 1
|
Подскажите как быть в этом случае:
Есть 2 Visibility Set - в одном выбирается элемент, во втором по идее должны включаться и выключаться размеры. Проблема в том, что если сначала выключить размеры, а потом их включить, то включаются все имеющиеся размеры. Мучаюсь уже который день - но могу разобраться... |
|||
|
||||
Инженер-строитель Регистрация: 15.08.2007
Киров
Сообщений: 2,204
|
Supermax, тут такая ситуация: поставил новый MS Office 2007. При попытке использования Excel-Lookup.lsp, прога пишет "Невозможно запустить Microsoft Excel 2003", ну и не работает соответственно.
Не мог бы ты допилить своё творение на предмет этого? Добавлено: А, не, погорячился я. Есть уже в этой теме решение: http://forum.dwg.ru/showpost.php?p=425895&postcount=425 Ложная тревога. Отбой. )) |
|||
|
Опции темы | Поиск в этой теме |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
как с помощью vba начертить линию | vasyavip | Программирование | 77 | 09.10.2008 23:17 |
Femap и VBA | Makson | Программирование | 11 | 05.08.2008 14:54 |
Создание списка чертежей из Sheet Set Manager | krokh | AutoCAD | 2 | 20.06.2008 16:46 |