VBA, "повесить блок на курсор" - Страница 2
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

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

VBA, "повесить блок на курсор"

Ответ
Поиск в этой теме
Непрочитано 30.07.2008, 12:57
VBA, "повесить блок на курсор"
Vildar
 
AutoCAD
 
Москва
Регистрация: 26.07.2007
Сообщений: 1,064

Задачка такая обресовалась

При вставке блока с кнопки, запросить точку вставки и одновременно "повесить" его на курсор (и чтоб он за курсором перемещался).
Причем, отображаться он должен в заданном масштабе

Какая будет стратегия.

Последний раз редактировалось Vildar, 30.07.2008 в 13:08.
Просмотров: 8158
 
Непрочитано 31.07.2008, 14:08
#21
ShaggyDoc

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


Цитата:
Сообщение от Vildar Посмотреть сообщение
Это просто "чайнику" показали, как использовать командные методы при вставке блока.
По замечаниям от ShaggyDoc. Мои предположения. Остальные условия тоже можно туда прописать.
- Имя блока берем с кнопки (через сис.переменную Userr1), проверяем его наличие. Кнопка, потому что блоков оформления не много, я делаю именно их.
- Масштаб, у меня он в сис.переменной CELTSCALE (и формочка в немодальном режиме для изменения масштаба).
- Дальше черт его знает.

Пока у меня на кнопке макрокоманда, из книжки В.Свет, по простому варианту: ^C^C_-insert;Os;\$M=$(Getvar,CELTSCALE);;;
Значение атрибута - ручками .
И повернут/подвинут/отзеркалят если надо тоже ручками )))

Серьезно. Надо решать поставленные задачи. Это я себе говорю, че-то обленился.
Так мы ж не про макросы из книги, а про VBA. Для решения элементарной задачи. И всё как-то "на соплях". Например CELTSCALE для хранения масштаба, USER... еще для чего-то, атрибуты - "ручками", подвинут "ручками". Блоков "немного" понятие относительное. Ну, зубов у меня, может немного, но это не повод лечить их через разные отверстия в теле ржавыми инструментами.

Где же "нажал и чертеж готов", упоминавшейся в ветке про "зло"?

А вот примерно как делается на LISP.

1. Имеется библиотека функций, которая всегда в памяти. Все функции доступны как друг другу, так и любым программам. Функции имеют аргументы. Вызов любой функции можно и в программе сделать и в другой функции и в макросе меню или кнопки прописать.

2. Применительно к вставке блоков имеем записи макросов наподобие:

Код:
[Выделить все]
(block-multi-insert "common\\ru-lib-common"  "ru_elev_mark_plan" 1  T)
Такой вызов функции выполняет множественную вставку заданного блока, хранящегося в библиотеке блоков в заданном масштабе с поворотом. В данном случае это блок отметки для планов. Причем блок будет автоматически правильно масштабироваться и в пространстве модели, и в пространстве листа, и в модели через дыру ВЭ.

И простой инженер (да просто "тетка"), зная, что это за аргументы, может просто скопировать вызов и вставить в другой пункт меню.

Вот это будет вставка той же отметки, но без запроса поворота:
Код:
[Выделить все]
(block-multi-insert "common\\ru-lib-common"  "ru_elev_mark_plan" 1  nil)
А это - размером в 1.5 раза больше:
Код:
[Выделить все]
(block-multi-insert "common\\ru-lib-common"  "ru_elev_mark_plan" 1.5  nil)
и так далее. А чуть более продвинутый инженер сам легко подобные функции напишет. Безо всякого сопромата, теории упругости и таинственной арифметки, которая вроде как в VBA только и есть.

Заодно уж и диалог выбора покажу (см. рисунок). Там не отметки (что их смотреть). Там что угодно может быть. Это несмотря на то, что считают, что диалоги в VBA хороши, рядом только OA с жалкой троечкой.

Вывод этого диалога делается тоже функцией:

Код:
[Выделить все]
 
(ru-xml-pop-mnu "common/ru_3d_kip" "КИП")
Можете тоже на VBA потренироваться
Миниатюры
Нажмите на изображение для увеличения
Название: xml_3d_kip.png
Просмотров: 106
Размер:	114.5 Кб
ID:	8859  
ShaggyDoc вне форума  
 
Непрочитано 31.07.2008, 14:53
#22
Кулик Алексей aka kpblc
Moderator

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


insunits немного не то
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 31.07.2008, 15:00
#23
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


ShaggyDoc, может хватит тыкать "в грязь лицом". Я не претендую на звание "программиста", "продвинутого инженера". Могу публично во всем раскаяться (хотя я никогда и не претендовал). Я инженер 3 категории, сегодня только под этим подписался в ОК, можете поздравлять .

По сути. Передо мной стоит задача "соскочить" с СПДС (подробнее см. "Замена ходовых инструментов СПДС на свои собственные"). Ограничений по используемым инструментам нет (Lisp, VBA, макрокоманды, короче все). Результат может быть от 0 до 100%. Я близок к 0% (относительно СПДС, но работать можно и ручками на худой конец). Конечная цель видна, СПДС, а шаги к реализации нет. За что хвататься не пойму, вот поэтому я здесь и ищу помощи.

ruCAD заменяет СПДС?
Vildar вне форума  
 
Автор темы   Непрочитано 31.07.2008, 15:02
#24
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
insunits немного не то
Ухмылка. Значит продолжать поиск в тойже теме! Ладно продолжаю (хоть будет чем заняться).
Vildar вне форума  
 
Непрочитано 31.07.2008, 15:29
#25
ShaggyDoc

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


Цитата:
Сообщение от Vildar Посмотреть сообщение
По сути. Передо мной стоит задача "соскочить" с СПДС (подробнее см. "Замена ходовых инструментов СПДС на свои собственные"). Ограничений по используемым инструментам нет (Lisp, VBA, макрокоманды, короче все). Результат может быть от 0 до 100%. Я близок к 0% (относительно СПДС, но работать можно и ручками на худой конец). Конечная цель видна, СПДС, а шаги к реализации нет. За что хвататься не пойму, вот поэтому я здесь и ищу помощи.
"Соскочить" с СПДС вполне реально. Для этого надо понять, что эта система делает, как делает, и что в ней плохо.
Делать подобная система должна собственно всё, что предусмотрено стандартами СПДС. А это все оформление - форматки, таблицы, различные условные обозначения, тексты, размеры и прочее. Не столь всё и сложно.

Что плохо в программе СПДС? Только на мой личный субъективный взгляд - достаточно простые задачи реализованы сложным путем - созданием собственных объектов с использованием ObjectARX. Вот отсюда все и проблемы, которые неоднократно поднимались на этом форуме.

По отдельности все задачи неоднократно решены. Если есть цель сделать "в комплексе", то читайте книгу "САПР на базе AutoCAD - как это делается". Там как раз описано "пошагово". В том числе с разбором инструментов, да и процентов 90 кода, необходимого, чтобы заменить (пусть без каких-то "фишек") СПДС-График, приведено.

Вот написанием этой книги мы и оказали конкретную помощь.

Самый лучший инструмент для решения подобных задач как раз LISP.

Цитата:
ruCAD заменяет СПДС?
Такой цели вообще нет, кого-то и что-то заменять.

ruCAD - комплексная система для строительной, сантехнических (всех) систем, топографии, генплана, любого оборудования. Оформительская (СПДС-ная) часть там, конечно есть. Но основное - разработка разных разделов проекта по единой методологии.

"Большой Красной Кнопки" там тоже нет. Обещания, что за полчаса можно выполнить работу целого отдела (как у других) - тоже нет.

Имеется нормальная "механизация" выполнения множества рутинных операций. Картинка в моем предыдущем посте - иллюстрация, того как примерно выглядит интерфейс для пользователя. Это только махонькая менюшечка по 3d-моделированию КИП.
ShaggyDoc вне форума  
 
Непрочитано 31.07.2008, 15:45
#26
Кулик Алексей aka kpblc
Moderator

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


Я к тому написал свой пост, что знание про insunits небесполезно. Но оно не решит текущей задачи (а вот незнание - запросто погубит)
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 31.07.2008, 15:58
#27
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Кажись нашел
Код:
[Выделить все]
(vl-cmdf "_.INSERT"  block_name "_PXScale" x_scale "_PYScale" y_scale pause)
Теперь как бы суметь это использовать.

PS: Нагрянул гл.специалист, он в отпуске сейчас, сказал что не видит смысла пытаться заменить СПДС, и что он от него не откажется. Вроде и полегчало, но теперь не будет стимула к дальнейшему изучению (смешно) чего-либо, а жаль. Что делать?
Vildar вне форума  
 
Непрочитано 31.07.2008, 16:05
#28
Кулик Алексей aka kpblc
Moderator

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


Изучать СПДС. Хочешь задачку?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 31.07.2008, 16:17
#29
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Цитата:
Сообщение от ShaggyDoc Посмотреть сообщение
"Соскочить" с СПДС вполне реально.
Для "простого инженера", оказалось, нереально.
Цитата:
читайте книгу "САПР на базе AutoCAD - как это делается"
Есть такая книжка. Начинал читать, бросил. Продолжу!
Цитата:
Вот написанием этой книги мы и оказали конкретную помощь.
Спасибо!
Цитата:
Самый лучший инструмент для решения подобных задач как раз LISP.
]
IMHO. А самая лучшая книжка "AutoLisp и VisualLisp в среде AUtoCAD". Есть, и ни что (сомневаюсь, может ничто ) не мешает опять взяться за неё!

Про ruCAD слышал, но не "пробовал". Зазырить бы

Offtop: Но VBA не брошу,
Потому что он хороший.
Vildar вне форума  
 
Автор темы   Непрочитано 31.07.2008, 16:19
#30
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Цитата:
Сообщение от Кулик Алексей aka kpblc Посмотреть сообщение
Изучать СПДС. Хочешь задачку?
Конечно хочу. Гав-гав. Жду с нетерпением!
А на каком языке?
Надо пристраиваться в очередь на "Научите лиспу на примере (или как kpblc, VVA и компания пытаются обучить чайника лиспу)", а то поздно будет.
Vildar вне форума  
 
Непрочитано 31.07.2008, 16:33
#31
Кулик Алексей aka kpblc
Moderator

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


поздно не будет
Попробуй проставить 3-4 десятка выносок и собрать количество узловых по типу "Обознач1" - 10 шт, "Обознач2 - 20 шт" и т.п. По ходу дела (усложнения сразу, потом забуду или лениво будет ): файл с выносками "захлами" еще чем-нибудь; вставь его как внешнюю ссылку в другой файл (раза 3) и опять-таки "собери спецификацию". Данные свести в объект ACAD_TABLE собственного стиля и собственного оформления.
---
Задача 2: запросить у пользователя точку "начала" выноски; радиус круга (крайне желательно с отрисовкой его - если будешь делать на VBA, то используй временные примитивы); потом точка перелома. Проанализировать введенные координаты. Нарисовать выноску, назначить ей соответствующую "стрелку", установить габариты. Должно работать в любом пространстве (что модели, что листа); в любой системе координат.
---
Добавлено: задача 2 для гимнастики. Тяжелой гимнастики.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 31.07.2008, 17:00
#32
Vildar

AutoCAD
 
Регистрация: 26.07.2007
Москва
Сообщений: 1,064


Послал меня, на неделю минимум
Узловой выноски я еще не делал пока. Это будет доп. задача (bonus ).
Сразу загвоздка возникает с ней. Это же не готовый блок вставляется (ведь кружок, а в СПДС он еще и в овальчик превращается, может быть разного диаметра), а рисуется по параметрам, так, с атрибутом. Буду пробовать.
Со спецификацией проблем, в оригинале, пока не вижу. Про ссылки, еще и 3-х кратные, посмотрю, не сталкивался.

Задача 2. О, а это и есть "bonus", только с "фишками". Наполовину облегчил задачу, разжевал пошагово, спс . Правда про любое пространство и в любой системе коор. это круто для меня.

Начну пожалуй.

Спасибо за заботу и внимание

Блин, выноска - _qleader, с пользовательской стрелко (кружком).

Последний раз редактировалось Vildar, 31.07.2008 в 17:56.
Vildar вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > VBA, "повесить блок на курсор"



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Хитрый блок 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