|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
07.12.2003, 23:20 | #1 | |
Можно ли через VBA динамически двигать объекты?
Инженер по системам безопасности
Рига
Регистрация: 23.11.2003
Сообщений: 1,099
|
||
Просмотров: 5363
|
|
||||
Сообщений: n/a
|
Динамически т. е. чтобы примитив (примитивы) висели на курсоре?
В лиспе это делается так: нужные примитивы собираются в блок, затем во время команды insert когда запрашивается точка вставки делается PAUSE и примитивы висят на курсоре пока пользователь не укажет точку. Затем этот блок можно удалить (предварительно разбив вставленный нами блок). Попробуйте этот алгоритм применить с использованием SendCommand. :roll: |
|||
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
Как это сделать в ЛИСПе я прекрасно знаю. И SendCommand знаю (см. предыдущий постинг). А еще как?
Проблемма в общем то такая. Создаю я объект в точке 0,0,0 . Делаю: SendCommand "_.copyclip" & vbCr & "l" & vbCr & vbCr & "_.erase" & vbCr & "l" & vbCr & vbCr & "_.pasteclip" & vbCr Ну либо (command "_.copyclip" (entlast) "" "_.erase" (entlast) "" "_pasteclip" pause) Все замечательно! НО, если копируемо-стираемо-вставляемый объект строиться за пределами экрана. То объект у меня не вставляеться, а остаеться в точке 0,0,0. И вообще с программой твориться что то нехорошее, вплоть до FATAL ERROR и падения КАДа.. Чем я обязан, подобным чудесам? Может строить новый объект в точке вставки предыдущего или по центру вьюпорта. Честно говоря, пока непопробывал. Надо конечно еще MOVE попробывать. А вообще (command ...) или (vl-cmdf...) выглядят как органичная часть AutoLISP.А в VBA это какой то аппендикс, тем более сказано что работает это ассинхронно (запустил в командную строку и КАД, как может это отрабатывает, а макрос продолжаеться сам по себе). Я многого не знаю. Только начал.[/b] |
|||
|
||||
сисадмин Регистрация: 26.08.2003
Самара
Сообщений: 1,022
|
Делал на Лиспе. Строил объекты за пределами видимости, потом (command "_.move" ss "" "_non" spt pause) + анализ точки, куда ткнул юзер и (vl-cmdf "_.undo" 1) если он делал чето не так. ss - набор объектов, spt - исходная точка в районе построения. В VBA для АКАДа не особо силен, хотя и познакомился с ним раньше чем с Лиспом, не знаю, можно ли этот алгоритм перетащить туда.
Лисп кажется более удобным, а command как-то более корректно обходят подводные камни. Поэтому, если возникают сомнения или надо использовать команду интерактивно, то конечно command. Еще обратил внимание на то, что не всегда удается использовать vla- методы, одноименные с командами. С другой стороны, VBA ориентирован на объектную модель, которая у АКАДа достаточно проста, но громозкий код и более сложная интеграция с АКАДом как-то отодвинули его на второй план. Может быть и незаслуженно. ИМХО. |
|||
|
||||
Инженер по системам безопасности Регистрация: 23.11.2003
Рига
Сообщений: 1,099
|
Да на ЛИСПе это железобетонно работает. Согласен в VBA громозкий код. Очень нравиться мне ЛИСП, но ОЧЕНЬ НЕ НРАВИТЬСЯ мне DCL!!! Хотел даже ObjectDCL закупить, демку недели две мучал. А встала задача писать довольно объемные диалоги. Да и для изучения ActiveX это не самый худший способ. А то "для изучения методов и свойств ActiveX объектов, обращайтесь к документации по VBA". У Полещука (огромное ему спасибо, в любом случае) этот раздел все таки я считаю описан не достаточно подробно. Вот и изучаю я VBA...
Да интеграция не полная. Построить что нибудь -заколебешся. Однако есть и много плюсов. |
|||