Re: Как написать макрос на кнопку "ORTO-OSNAP-change"?
> Forma
Куда хоть копировать? В буфер обмена, в пределах чертежа, из чертежа в чертеж?
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → Настройка меню и DIESEL → Как написать макрос на кнопку "ORTO-OSNAP-change"?
> Forma
Куда хоть копировать? В буфер обмена, в пределах чертежа, из чертежа в чертеж?
> Александр Ривилис
Между прочим- это диагноз :))))
Если согласны, подробности в новой теме.
А, то нам den-si , действительно, "кердык" сделает.
И мне в первую очередь.
Как бы там ни было, IMHO, F3 и F8 - самый простой вариант, и в командной строке отображаются режимы, и в статусной видно переключение, и мышью не надо двигать, и дополнительная кнопка, на которую еще надо попасть, не нужна...если, конечно, функциональные клавиши не переопределены.
> Support
Мне нужен не простой вариант, а самый эффективный.
> Support
Странный подход для прикладного программиста.
Без работы останешься:))))
и мышью не надо двигать,
Тогда левой рукой надо напрягаться. А, она у меня занята.
> Forma
> Forma
> Forma
Отвечаю в лице Владимира Громова, он и есть доминанта, остальные головы скоро отомрут.
1. Я не чисто прикладной программист, я по специальности инженер-строитель, конструктор, просто жизнь заставила заниматься тысячей вещей.
А для облегчения работы в AutoCAD'е пришлось наклепать пару сотен программ на AutoLisp'е, вот только до ActiveX и ObjectArx руки не доходят, ну да на этой Конференции есть очень знающие и умеющие профессионалы, и перед ними я снимаю шляпу.
2. Если я и берусь за написание программы, то должен быть действительно убежден, что эта программа не однодневка, она может пригодиться многим, а не только отдельно взятому юзеру, почему и ратую за создание специального раздела для накопления результатов индивидуального и коллективного труда и самоучек в программировании, как я, и профессиональных программистов.
3. Для примера. Вот я рисую сложный контур полилинией, скажем, обвожу растровое изображение, вставленное в AutoCAD как подложка. Полилиния имеет линейные и дуговые сегменты, ОРТО и не ОРТО, где-то нужно привязаться к уже существующим объектам, а где-то лучше выключить привязку. То есть, именно твой случай. Полилинию плохо видно поверх растра, за курсором тянется резиновая нить, однако она пропадает, если мне надо нарисовать дуговой сегмент по трем точкам. Контур уже получается достаточно сложный, мне нежелательно передвигать мышь в другое место экрана и тыкать в кнопку, я могу промахнуться и ткнуть в экран или в другую кнопку (ведь внимательность притупляется) и бац! - контур запортился. Давай, обводи сначала. Поэтому мне удобнее задержать мышь в фиксированном месте и нажать F3 или F8. Левой рукой.
4. Возможно, тебе удобнее выполнять большинство операций мышью, я сам сторонник кнопок, а не клавиатурных сочетаний, но в данном случае не могу как-то внутренне согласиться, что включение ОРТО и ОДНОВРЕМЕННОЕ выключение привязок и наоборот настолько необходимо, что может трактоваться как эргономика. Тут я почти согласен с Vova, уж не обессудь и не обижайся.
5. А вот условия другой задачи интересно посмотреть. Только это произойдет через неделю и эта задача, наверное, будет уже решена.
> Support
1. Этот макрос применяю для специфических задач, а именно для работы с текстами и таблицами.
2. Я тоже много векторизирую. Немного по другому. Но отличия не принципиальные. Есть кстати маленький вспомогательный макрос.
И еще:
Полилинию плохо видно поверх растра
Попробуйте линию цветом "magenta" и вес линии 0.3-0.5 mm. Может быть будет лучше видно.
> Support
Ничего не могу сказать, кроме одного - а если рисуется полилиния, зачем делать отдельно дуговые сегменты? Для английской версии када посмотрим на опции ком.строки:
A - Arc, дуговой сегмент. Начинает рисоваться, имея предыдущий сегмент как касательную. Либо (для предыдущего дугового) - общую с ним касательную.
Дополнительно - масса опций выскакивает, уже перечислять их не буду.
Или я не про то?
---
ИМХО.
Удалось упростить код > Александр Ривилис (2005-07-30 14:25:47) и сделать его прозрачным. То есть, будучи в команде, можно жать на кнопку. Он переключает режимы OSNAP и Ortho на перекрестно противоположные и не зависит от предыдущих настроек OSNAP.
$m=$(IF,$(<,$(getvar,osmode),16384),'osmode;$(+,$(getvar,osmode),16384);'orthomode;1;,'osmode;$(-,$(getvar,osmode),16384);'orthomode;0;)^Z
Теперь он выглядит не так страшно и видно логику: если osnap включен (<16384), он отключается (добавка 16384), а Ortho включается, и наоборот.
Прошу заинтересованных прокомментировать. Боюсь, не выпустил-ли чего из виду, код-то почти втрое стал короче. Еще раз мое имхо - такая комбинация вряд-ли имеет практический смысл, и составлена она исключительно поразмять мозги
> Александр Ривилис
Забыл сказать, перед системными переменными точка и подчеркивание не ставятся, они ведь не переводятся на локальный язык. Даже странно, что работает
> Vova
Такая комбинация имеет практический смысл. Иначе, я бы ей не занимался.
Работы у меня полный завал.:) . Поэтому я хочу попросить сделать ее (комбинацию эту) полностью прозрачной. Т.е. что-бы не сбрасывалась селективность сущностей. Возможно это? Спасибо.
У меня еще много идей связанных в основном с эргономичностью.
> Vova
В этом контексте становятся командами, поэтому и работает!
А запись действительно стала намного красивее. Снимаю шляпу!
> Vova
> Александр Ривилис
Так все- таки как о:
что-бы не сбрасывалась селективность сущностей
Можно так:
1) В меню:
'ortosnap;
2) В автозагружаемом файле ortosnap.lsp (или, что хуже, включить в acad.mnl или acaddoc.lsp ...)
(defun C:ORTOSNAP ( / _cm) (setq _cm (getvar "cmdecho")) (setvar "cmdecho" 0) (cond ((< (getvar "osmode") 16384) (setvar "osmode" (+ (getvar "osmode") 16384)) (setvar "orthomode" 1) ) (T (setvar "osmode" (- (getvar "osmode") 16384)) (setvar "orthomode" 0) ) ) ;; (cond (setvar "cmdecho" _cm) (princ) ) (princ)
В AutoCAD 2006 - проверил grip'ы не сбрасываются и лишней печати в командной строке нет. Но! Не работает при запущенных lisp-функциях!
Следующий этап - использовать ObjectARX.
Но! Не работает при запущенных lisp-функциях!
Несколько пугает...
> Александр Ривилис
Оденьте шляпу, магическую цифру 16384 я подсмотрел у вас.
В этом контексте становятся командами, поэтому и работает!
Как это, системные переменные вдруг становятся командами? Есть одноименные команды-сист. переменные, но у Osmode и Orthomode тезок среди имен команд нет. Есть Osnap и Ortho, и при них в русском каде палочка, да и точка нужны.
Проведите опыт на русском автокаде: уберите (-.) Если макрос сработает, снимите шляпу опять. Если не сработает, то шляпу сниму я.
> Vova
Шляпу я снял не по поводу числа 16384, а по поводу красиво записанного макроса.
В религиозных войнах по поводу того Osmode и Orthomode системные переменные или команды я участвовать не буду - не вижу смысла. А запись с _. для них я подсмотрел в стандартном меню AutoCAD.
> Forma
Небольшой offtopic. Все началось с DIESEL, продолжилось в AutoLisp, а закончилось в ObjectARX:
http://www.maestrogroup.com.ua/support/orthosnap.zip
Ставите в автозагрузку orthosnap.arx
В меню:
'orthosnap;
1) Команда прозрачная, работает и с lisp-функциями.
2) Grips остаются на месте
3) Нет лишней печати в командной строке
4) Работает только в линейке AutoCAD 2004-2006 (для предыдущих делать не буду - не просите).
Еще одно замечание. Многие Lisp-функции (в том числе и из поставки AutoCAD) вместо того, чтобы прибавлять к osmode 16384 для снятия привязок просто его обнуляют (на время работы функции). Поэтому не удивляйтесь, что при выполнении 'orthosnap в них orthomode будет переключаться, а osmode - нет.
> Александр Ривилис
Вот теперь отлично. Спасибо. Это приемы работы, которыми пользуешься сотни и сотни раз на дню. Приходится шлифовать. Я так оправдываюсь... и хитро заезжаю по другому вопросу.
Очень удобная функция. Но было бы еще удобней перенести ее в Status Bar Menu.
> Forma
Як мед - так ложкой!
Выкачай обновленную версию и наслаждайся...
Выкачай обновленную версию и наслаждайся...
Где выкачать?
Я на письмо не ответил. Извини. Жду клавиатуру с киррилицей. Проблема на ровном месте.
> Forma
Неужели не ясно, что если я написал "обновленную", то это значит она там же, где и была в прошлый раз:
http://www.maestrogroup.com.ua/support/orthosnap.zip
Форумы CADUser → Программирование → Настройка меню и DIESEL → Как написать макрос на кнопку "ORTO-OSNAP-change"?
Форум работает на PunBB, при поддержке Informer Technologies, Inc