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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > добавление скрипта к вставке блока с палитры.

добавление скрипта к вставке блока с палитры.

Ответ
Поиск в этой теме
Непрочитано 15.10.2007, 12:37 #1
добавление скрипта к вставке блока с палитры.
TheBuTeK
 
преподавание
 
Москваград
Регистрация: 28.09.2005
Сообщений: 131

уважаемые гуру, можно ли при вставке блока с палитры добавить помимо самой вставки блока вызов дополнительных утилит, предназначенных для последующей обработки данного блока?
так, например, после вставки с палитры блока, содержащего атрибуты, тотчас же возникает необходимость вызвать специально написанную утилиту, позволяющую пользователю через диалоговые окна эти атрибуты заполнить.
возможно ли сделать подобный вызов непосредственно при вставке блока с палитры и как именно?
__________________
Добрым словом и пистолетом можно добиться гораздо большего, чем одним добрым словом.
Просмотров: 5640
 
Непрочитано 15.10.2007, 13:06
#2
Кулик Алексей aka kpblc
Moderator

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


По идее надо писать свой лисп, который и будет вставлять сам блок. Учитывая, что диалог нарисован уже и обрабатывается корректно, не думаю, что будут проблемы с этим делом. Частично проблема решалась здесь
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 15.10.2007, 13:37
#3
TheBuTeK

преподавание
 
Регистрация: 28.09.2005
Москваград
Сообщений: 131
<phrase 1=


просто не хочется переделывать готовые палитры, вот и надеюсь привязать к вставке блока с палитры дополнительную команду.
обидно, если придется делать двойную работу...
__________________
Добрым словом и пистолетом можно добиться гораздо большего, чем одним добрым словом.
TheBuTeK вне форума  
 
Непрочитано 15.10.2007, 14:24
#4
Кулик Алексей aka kpblc
Moderator

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


если честно, я не знаю такого способа
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.10.2007, 15:16
#5
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,255
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
если честно, я не знаю такого способа
Командный реактор на команду INSERT, или я что-то недопонял?
Александр Ривилис вне форума  
 
Непрочитано 15.10.2007, 15:33
#6
Кулик Алексей aka kpblc
Moderator

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


не факт. там же вроде вообще своя команда запускается...
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 15.10.2007, 15:49
#7
Александр Ривилис

программист, рыцарь ObjectARX
 
Регистрация: 09.05.2005
Киев
Сообщений: 2,255
Отправить сообщение для Александр Ривилис с помощью Skype™


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
не факт. там же вроде вообще своя команда запускается...
Ага. DROPGEOM называется.
Александр Ривилис вне форума  
 
Автор темы   Непрочитано 16.10.2007, 10:18
#8
TheBuTeK

преподавание
 
Регистрация: 28.09.2005
Москваград
Сообщений: 131
<phrase 1=


А где можно найти более подробную информацию о том, как привязать реакторы к вставке блоков с палитры?
__________________
Добрым словом и пистолетом можно добиться гораздо большего, чем одним добрым словом.
TheBuTeK вне форума  
 
Непрочитано 16.10.2007, 11:16
#9
Кулик Алексей aka kpblc
Moderator

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


Как пример командного реактора "вообще": http://dwg.ru/f/showthread.php?t=2721 и http://www.arcada.com.ua/forum/viewtopic.php?t=436
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 17.10.2007, 12:25
#10
TheBuTeK

преподавание
 
Регистрация: 28.09.2005
Москваград
Сообщений: 131
<phrase 1=


Чтобы не создавать новую тему, задам вопрос здесь же.
Прописал реактор на команду (например, LINE). При первом выполнении команды он выполняется, пишет "работает". Ура? Не ура!
При втором выполнении команды он пишет "работает" два раза, при третьем - три и т.д.
А почему?
Код:
[Выделить все]
(vlr-command-reactor "line" '((:vlr-commandended . MakeID)))
(defun MakeID(calling-reactor endcommandinfo / thecommandended cblok)
   (princ "работает")
 )
__________________
Добрым словом и пистолетом можно добиться гораздо большего, чем одним добрым словом.
TheBuTeK вне форума  
 
Непрочитано 17.10.2007, 12:47
#11
Кулик Алексей aka kpblc
Moderator

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


Так на аркаде же рассказано...
Код:
[Выделить все]
(if *vlr-cmd*
  (progn
    (setq *vlr-cmd* nil)
    (vlr-remove-all :vlr-command-reactor)
    ) ;_ end of progn
  ) ;_ end of if

(if (not *vlr-cmd*)
  (setq   *vlr-cmd* (vlr-command-reactor
          "cmd"
          '(
            (:vlr-commandwillstart . cmd-start)
            (:vlr-commandended . cmd-end)
            (:vlr-commandcancelled . cmd-cancel)
            (:vlr-commandfailed . cmd-fail)
            )
          ) ;_ end of VLR-Command-Reactor
   ) ;_ end of setq
  ) ;_ end of if
Сначала проверяешь, загружен уже или нет твой реактор, и только если нет, загружаешь его и активизируешь.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 17.10.2007, 17:26
#12
TheBuTeK

преподавание
 
Регистрация: 28.09.2005
Москваград
Сообщений: 131
<phrase 1=


Немного изменю вопрос.
Есть несколько палитр, с одной вставляются блоки одного оборудования, с другой - другого, и формы заполнения этих блоков совершенно различные. Как мне понять, когда именно требутся запускать реактор А, а когда реактор B? Команда вставки блока с палитры - ExecuteTool, но как я при вставке блока определю, какой именно блок вставляется в данный момент?
__________________
Добрым словом и пистолетом можно добиться гораздо большего, чем одним добрым словом.
TheBuTeK вне форума  
 
Непрочитано 17.10.2007, 21:25
#13
Кулик Алексей aka kpblc
Moderator

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


ИМХО заморачиваться с реакторами в данном конкретном случае вредно. Намного проще нарисовать лисп примерно такого вида:
Код:
[Выделить все]
(defun my-insert-and-show-form(
<Имя файла-библиотеки блоков>
<Имя блока>
<Список доп.параметров>
)
)
И вызывать уже его.
Если имя файла-библиотеки пусто, подставлять какое-то штатное имя "всеобщей" библиотеки. Если имя блока nil, вставлять целиком файл как блок. В списке доп.параметров может быть, например, такое:
  1. Масштаб по Х. nil -> (getvar "dimscale")
  2. Масштаб по У. nil -> брать из Х
  3. Масштаб по Z. nil -> брать из Х
  4. Точка вставки. nil -> запрашивать у пользователя
  5. Угол поворота. nil -> запрашивать у пользователя
  6. Разбивать после вставки
  7. Имя диалога для вызова
Ну и так далее. Задача вставки блоков рассматривалась, например, здесь. Там же и варианты исходников. Всяких и разных.
__________________

---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 17.10.2007, 21:29
#14
ShaggyDoc

Thượng Tá Quân Đội Nhân Dân Việt Nam
 
Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 11,005


Цитата:
Сообщение от TheBuTeK Посмотреть сообщение
просто не хочется переделывать готовые палитры, вот и надеюсь привязать к вставке блока с палитры дополнительную команду.
обидно, если придется делать двойную работу...
Двойную не хочется, а "четверную" хочется? Ввязаться в реакторы?
Делается просто - пишется функция, в которую аргументами передается имя блока и все, что связано с последующей обработкой. Вызовы функции привязываются куда угодно. Хоть в меню, хоть в палитры. И сделать это придется руками, но это будет одинарная работа.

Пытаться сэкономить на вписывании "команд" за счет, например, реакторов - дохлый номер. Как раз здесь работы много, гарантий - никаких.
ShaggyDoc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > добавление скрипта к вставке блока с палитры.

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по вставке блока Джек Программирование 4 26.06.2007 00:34
Ошибка при вставке блока G.A.W. AutoCAD 6 20.03.2007 20:13
Есть ли возможность при вставке блока разрывать линии Незнайка AutoCAD 13 03.04.2006 20:34
Добавление текста в аттрибут блока. Mikhail Программирование 3 05.04.2005 09:04