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

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

Опять про _INSERT и диалоговое окно выбора опций

Ответ
Поиск в этой теме
Непрочитано 18.01.2011, 10:54 #1
Опять про _INSERT и диалоговое окно выбора опций
swkx
 
Регистрация: 22.01.2010
Сообщений: 311

Вопрос о применении _INSERT поднимался столько раз, что даже неудобно начинать опять, но и пересмотреть все сообщения тоже нереально))
Поэтому напомните, плиз, почему ввод с командной строки
_-insert и (vl-cmdf "_-insert") даёт одинаковые результаты, а
_insert и (vl-cmdf "_insert") разные:в 1-м случае выдается диалоговое окно, во 2-м ввод имени блока и параметров предлагается с ком. строки ?
AutoCAD 2009.
Просмотров: 14391
 
Непрочитано 18.01.2011, 11:40
#2
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Видимо, так было испокон веков. Во всяком случае, в AutoCAD 2004 происходит тоже самое.
Profan вне форума  
 
Автор темы   Непрочитано 18.01.2011, 11:43
#3
swkx


 
Регистрация: 22.01.2010
Сообщений: 311


Т.е. программно вытащить диалоговое окно выбора имени блока и опций не получится ?
swkx вне форума  
 
Непрочитано 18.01.2011, 11:53
#4
TararykovDG

Программист-энтузиаст
 
Регистрация: 17.07.2009
Воронеж
Сообщений: 575


Цитата:
Сообщение от swkx Посмотреть сообщение
Т.е. программно вытащить диалоговое окно выбора имени блока и опций не получится ?
Почему не получиться, получиться
Код:
[Выделить все]
(vla-Sendcommand (vla-get-ActiveDocument (vlax-get-acad-object)) "_insert ")
__________________
cadtools
TararykovDG вне форума  
 
Непрочитано 18.01.2011, 12:41
#5
ShaggyDoc

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


Если "пересмотреть все сообщения тоже нереально", то почему бы не заглянуть в справку, где говорится об опциях командной строки? Это самый правильный путь.

"_-insert" и "_insert" - разные варианты вызова команды.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 18.01.2011, 12:47
#6
swkx


 
Регистрация: 22.01.2010
Сообщений: 311


2 TararykovDG

Ну да, тоже верно...Можно наверное даже в выпадающем списке установить по умолчанию нужное имя блока.
Хотя всё равно странно, популярнее вставки блока разве что запуск самого Автокада и такое неоднозначное поведение...

2 ShaggyDoc,

"_-insert" и "_insert" ведут себя по-разному, как и положено, с этим всё ясно, а вот
(vl-cmdf "_insert") и (vl-cmdf "_-insert") ведут себя одинаково, вот в чем вопрос !
swkx вне форума  
 
Непрочитано 18.01.2011, 12:47
#7
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


А как вариант попробовать обойтись без командной строки (DXF VLA)?
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 18.01.2011, 12:49
#8
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,013


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
"_-insert" и "_insert" - разные варианты вызова команды.
Разные, но с vl-cmdf и command различия в работе нету независимо от опции. Вы невнимательно прочитали вопрос.
Nike вне форума  
 
Автор темы   Непрочитано 18.01.2011, 13:17
#9
swkx


 
Регистрация: 22.01.2010
Сообщений: 311


Цитата:
Сообщение от Дима_ Посмотреть сообщение
А как вариант попробовать обойтись без командной строки (DXF VLA)?
Например ?..
swkx вне форума  
 
Непрочитано 18.01.2011, 13:21
#10
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Выключить командную строку Ctrl+9.
Profan вне форума  
 
Непрочитано 18.01.2011, 14:18
#11
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Цитата:
Сообщение от swkx Посмотреть сообщение
Например ?..
Код:
[Выделить все]
(vla-insertblock (vla-get-modelspace(vla-get-activedocument(vlax-get-acad-object)))
                      (vlax-3d-point (getpoint "\nТочка вставки: "))
                  "ИМЯ БЛОКА"
                      1 1 1 0)
P.S. до вызова должен быть "активирован" (vl-load-com)
p.p.s - можно и через dxf (тогда vl-load-com не нужен) - там сам блок ихмо покрасивей всавляется, но если с аттрибутами - то "возьня" начинается.
__________________
Когда в руках молоток все вокруг кажется гвоздями.

Последний раз редактировалось Дима_, 18.01.2011 в 14:31.
Дима_ вне форума  
 
Непрочитано 18.01.2011, 14:22
#12
ShaggyDoc

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


Цитата:
Сообщение от Nike Посмотреть сообщение
Разные, но с vl-cmdf и command различия в работе нету независимо от опции. Вы невнимательно прочитали вопрос.
Почему же невнимательно. Внимательно. Автор темы сравнивает "зеленое с квадратным". Т.е. штатную команду Автокада с вызовом функции.

Команда предназначена для вызова штатного диалога. Функция, вызывающая команду INSERT в любых вариантах не вызовет диалоговое окно, так как в нем нет смысла (оно ничего не возвратит).

Команды предназначены для обычных пользователей, а функции - для программирования. Программирование вставки блоков связано с передачей аргументов (имени блока, масштаба, поворота) и вызов здесь штатного диалога не нужен. Если нужен какой-то диалог, он пишется самостоятельно.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 18.01.2011, 14:47
#13
swkx


 
Регистрация: 22.01.2010
Сообщений: 311


ShaggyDoc,

обстоятельный ответ, не поспоришь))

Но замечу, что хоть и создать собственный диалог для вставки блока не представляет особого труда, при всём многообразии вариантов применения блоков наверняка может оказаться и такой, при котором самым оптимальным будет программный вызов штатного диалога.

Вопрос можно считать исчерпанным
swkx вне форума  
 
Непрочитано 18.01.2011, 14:47
#14
Profan


 
Регистрация: 25.12.2005
Москва
Сообщений: 13,627


Однако, выражение из сообщения #4
Код:
[Выделить все]
(vla-Sendcommand (vla-get-ActiveDocument (vlax-get-acad-object)) "_insert ")
кое-что "возвращает".
Profan вне форума  
 
Автор темы   Непрочитано 19.01.2011, 12:28
#15
swkx


 
Регистрация: 22.01.2010
Сообщений: 311


Неожиданно наткнулся на простое решение:

(initdia)
(vl-cmdf "_insert")

Эта связка вызывает диалоговое окно вставки блока
Похоже, все про него забыли
swkx вне форума  
 
Непрочитано 19.01.2011, 12:47
#16
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 6,013



http://www.caduser.ru/forum/index.ph...6#message30176
Nike вне форума  
 
Непрочитано 19.01.2011, 14:13
#17
ShaggyDoc

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


Цитата:
(initdia)
(vl-cmdf "_insert")
Да не забыли про это. Программисту сам факт вывода диалога вставки блока ничего не дает. Если бы ещё, предположим, после обработки диалога можно было бы получить список созданных в нем параметров или NIL при отмене, то какой-то смысл был бы.

В каких-то других случаях, с другими командами, наподобие PLOT, смысл может быть.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 19.01.2011, 14:39
#18
swkx


 
Регистрация: 22.01.2010
Сообщений: 311


ShaggyDoc,

я, когда писал "забыли", в основном себя имел в виду

Вопрос чисто теоретический: ты допускаешь вариант, что в LISP-программе выполняются какие-то действия, построения, вычисления и т.д. и т.п. и в самом конце пользователю предоставляется возможность осуществить вставку блока ?
Как он этой возможностью воспользуется, уже никого не интересует, в т.ч. и программу, которая ему эту возможность предоставила...
swkx вне форума  
 
Непрочитано 19.01.2011, 18:32
#19
ShaggyDoc

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


Цитата:
Вопрос чисто теоретический: ты допускаешь вариант, что в LISP-программе выполняются какие-то действия, построения, вычисления и т.д. и т.п. и в самом конце пользователю предоставляется возможность осуществить вставку блока ?
Как он этой возможностью воспользуется, уже никого не интересует, в т.ч. и программу, которая ему эту возможность предоставила...
Нет, не допускаю. Программы, связанные со вставками блока для того и делаются, чтобы облегчить жизнь. Т.е. не думать о имени блока, масштабе. Программная вставка блока должна дать пользователю задать точку вставки (и то не всегда) и угол поворота (и то не всегда).

Штатный диалог здесь не нужен, хотя могут быть и свои диалоги. Штатным может быть диалог редактирования атрибутов блока (если нужно), причем желательно предварительно заполненных.

Вот уметь управлять вызовом этого диалога надо уметь, там тоже есть тонкости.
ShaggyDoc вне форума  
 
Автор темы   Непрочитано 19.01.2011, 19:04
#20
swkx


 
Регистрация: 22.01.2010
Сообщений: 311


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
Программная вставка блока должна дать пользователю задать точку вставки (и то не всегда) и угол поворота (и то не всегда).
Я с этим на 99% согласен. Сходу тоже не могу придумать ситуацию, в которой пользователь не знает масштабы по X и Y (а может даже и базовую точку!), пока не увидит висящий на курсоре блок, но просто уверен, что такие задачи встречаются.
swkx вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Опять про _INSERT и диалоговое окно выбора опций

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Опять про перепуск арматуры AlfF1 Железобетонные конструкции 52 14.11.2017 08:55
Опять про сбор нагрузок (сильно не бить, поиск юзал) Gevo Конструкции зданий и сооружений 39 21.04.2009 23:19
И опять про лицензирование Aragorn Разное 39 27.02.2009 15:31
Опять про системные переменные DEL AutoCAD 4 03.11.2006 11:12