|
||
| Правила | Регистрация | Пользователи | Поиск | Сообщения за день | Все разделы прочитаны | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
30.07.2008, 12:57 | #1 | |
VBA, "повесить блок на курсор"
AutoCAD
Москва
Регистрация: 26.07.2007
Сообщений: 1,064
|
||
Просмотров: 7896
|
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,835
|
http://dwg.ru/f/showthread.php?t=11905 - там есть лисповые решения. Это тот случай, когда от командных методов отказаться невозможно.
Я понимаю, что "задели" невозможности VBA в теме "VBA - зло"
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
Цитата:
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,835
|
Дима_, а если вспомнить BricsCAD и Ко? Там ET нет и не будет
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,840
|
А жаль! В чем же интересно у самих автодесков это (прорисовка тела у курсора) написанно? Вопрос у кого голый автокад без ET - там при перемещении тела оно у курсора наблюдаеться?
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
|
||||
Lisp/VBA/VB.NET Hobbyist Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367
|
Цитата:
Можно только с использованием лисп выражения и функции SendCommand: Код:
|
|||
|
||||
AutoCAD Регистрация: 26.07.2007
Москва
Сообщений: 1,064
|
Попробоввал на 2008 LT без експрессов. Вставил блок, причем с атрибутом. До указания точки вставки, при перемещении мышки по экрану, блок перемещается (перерисовывается), с задержкой в отрисовке текста.
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,835
|
В LT вообще Express Tools существовать не могут (официально)
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
AutoCAD Регистрация: 26.07.2007
Москва
Сообщений: 1,064
|
fixo, мне кажется Вы недописали, после:
Код:
Насчет DoEvents, поясните. В справке непонятно написано. Во время паузы в: Код:
Вернее не выполняется, а может выполняться еще одна команда. Хотя нет. Во время "pause", запрвшивается точка вставки. Тогда вообще непонятно. Вы извените за глупые вопросы, ладно. Ё, я кажется понял. Вставка блока через команду, это оно самое и есть. Т.е. блок (с помощью Автокада) вешается на курсор? Футы, так просто. А как насчет реализации после указания точки вставки блока. Нужно управлять его размещением, в зависимости от расположения курсора относительно точки вставки. Последний раз редактировалось Vildar, 30.07.2008 в 19:34. |
|||
|
||||
Lisp/VBA/VB.NET Hobbyist Регистрация: 24.03.2005
Славен Град Петров
Сообщений: 367
|
Опять же на VBA это не сделать
Но можно тупо вставлять блок куда-нибудь скажем в точку 0,0,0 а затем по аналогии использовать команду "Move" через SendCommand Так на языке и вертится: через ж.. Насчет DoEvents в данном контексте она не выполняет никакой роли можешь убрать А в принципе эта функция передает управление Windows, для обработки других событий. И после обработки Windows'ом всех событий из очереди и передачи всех нажатий клавиш из очереди функции SendKeys возвращает управление обратно в VBA Фактически здесь она работает как Sleep ~'J'~ |
|||
|
||||
AutoCAD Регистрация: 26.07.2007
Москва
Сообщений: 1,064
|
А что значит - "~'J'~"? Где-то (на caduser кажись) уже встречал!
Не совсем понял про "через жо...": Но можно тупо вставлять блок куда-нибудь скажем в точку 0,0,0 а затем по аналогии использовать команду "Move" через SendCommand Если есть возможность, посмотрите как вставляется, например, высотная отметка в СПДС. На мой взгляд, только move не обойтись. Ну ладно, для меня пока это не критично (проблема остро не стоит). |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,835
|
я бы использовал не _.move, а либо _.change (для варианта 2Д), либо _.-insert (для варианта 3Д)
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,381
|
Код:
Далее. Эта строка будет отображаться в командной строке AutoCAD. Кому этот мусор нужен? А почему стоит "1"? Разве блок только в единичном масштабе вставляется? Масштаб должен быть рассчитан в зависимости от назначения блока, а блок перед вставкой должен быть смасштабирован. Что толку, если на курсоре будет болтаться какая-то козявка или наоборот, громадина? А поворот обязательно 0? А если надо еще и разворачивать (или визуально или с заданием угла любым стандартным методом), что другой проект делать? А если атрибуты в блоке будут? Че тогда? А откуда вообще имя блока будет браться? Спрашивать, как показано в #7? Или зашивать в dvb? А если блоков сотни? Что, на каждый блок проект? А как в меню записать? А если определения блока нет в DWG? Exit Sub и всё? и т.д. |
|||
|
||||
AutoCAD Регистрация: 26.07.2007
Москва
Сообщений: 1,064
|
Это просто "чайнику" показали, как использовать командные методы при вставке блока.
По замечаниям от ShaggyDoc. Мои предположения. Остальные условия тоже можно туда прописать. - Имя блока берем с кнопки (через сис.переменную Userr1), проверяем его наличие. Кнопка, потому что блоков оформления не много, я делаю именно их. - Масштаб, у меня он в сис.переменной CELTSCALE (и формочка в немодальном режиме для изменения масштаба). - Дальше черт его знает. Пока у меня на кнопке макрокоманда, из книжки В.Свет, по простому варианту: ^C^C_-insert;Os;\$M=$(Getvar,CELTSCALE);;; Значение атрибута - ручками . И повернут/подвинут/отзеркалят если надо тоже ручками ))) Серьезно. Надо решать поставленные задачи. Это я себе говорю, че-то обленился. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,835
|
Такой переменной нет. Прочти ссылку, которую я давал - там ShaggyDoc все по полочкам разложил
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
Опции темы | Поиск в этой теме |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Хитрый блок | Vova | Динамические блоки | 166 | 20.03.2017 15:13 |
Пароль к VBA | karp_b | Программирование | 24 | 29.08.2013 12:43 |
Как удалить существующий блок? | dextron3 | Динамические блоки | 21 | 24.12.2012 10:19 |
Помогите доделать программу добавления объектов в блок | МишаVBA | Программирование | 1 | 20.05.2006 01:04 |