Re: Как написать макрос на кнопку "ORTO-OSNAP-change"?

> Forma
Куда хоть копировать? В буфер обмена, в пределах чертежа, из чертежа в чертеж?

Re: Как написать макрос на кнопку "ORTO-OSNAP-change"?

> Александр Ривилис
Между прочим- это диагноз :))))

Re: Как написать макрос на кнопку "ORTO-OSNAP-change"?

Если согласны, подробности в новой теме.
А, то нам den-si , действительно, "кердык" сделает.
И мне в первую очередь.

Re: Как написать макрос на кнопку "ORTO-OSNAP-change"?

Как бы там ни было, IMHO, F3 и F8 - самый простой вариант, и в командной строке отображаются режимы, и в статусной видно переключение, и мышью не надо двигать, и дополнительная кнопка, на которую еще надо попасть, не нужна...если, конечно, функциональные клавиши не переопределены.

Re: Как написать макрос на кнопку "ORTO-OSNAP-change"?

> Support
Мне нужен не простой вариант, а самый эффективный.

Re: Как написать макрос на кнопку "ORTO-OSNAP-change"?

> Support
Странный подход для прикладного программиста.
Без работы останешься:))))

Re: Как написать макрос на кнопку "ORTO-OSNAP-change"?

Support пишет:

и мышью не надо двигать,

Тогда левой рукой надо напрягаться. А, она у меня занята.

Re: Как написать макрос на кнопку "ORTO-OSNAP-change"?

> Forma

> Forma

> Forma
Отвечаю в лице Владимира Громова, он и есть доминанта, остальные головы скоро отомрут.
1. Я не чисто прикладной программист, я по специальности инженер-строитель, конструктор, просто жизнь заставила заниматься тысячей вещей.
А для облегчения работы в AutoCAD'е пришлось наклепать пару сотен программ на AutoLisp'е, вот только до ActiveX и ObjectArx руки не доходят, ну да на этой Конференции есть очень знающие и умеющие профессионалы, и перед ними я снимаю шляпу.
2. Если я и берусь за написание программы, то должен быть действительно убежден, что эта программа не однодневка, она может пригодиться многим, а не только отдельно взятому юзеру, почему и ратую за создание специального раздела для накопления результатов индивидуального и коллективного труда и самоучек в программировании, как я, и профессиональных программистов.
3. Для примера. Вот я рисую сложный контур полилинией, скажем, обвожу растровое изображение, вставленное в AutoCAD как подложка. Полилиния имеет линейные и дуговые сегменты, ОРТО и не ОРТО, где-то нужно привязаться к уже существующим объектам, а где-то лучше выключить привязку. То есть, именно твой случай. Полилинию плохо видно поверх растра, за курсором тянется резиновая нить, однако она пропадает, если мне надо нарисовать дуговой сегмент по трем точкам. Контур уже получается достаточно сложный, мне нежелательно передвигать мышь в другое место экрана и тыкать в кнопку, я могу промахнуться и ткнуть в экран или в другую кнопку (ведь внимательность притупляется) и бац! - контур запортился. Давай, обводи сначала. Поэтому мне удобнее задержать мышь в фиксированном месте и нажать F3 или F8. Левой рукой.
4. Возможно, тебе удобнее выполнять большинство операций мышью, я сам сторонник кнопок, а не клавиатурных сочетаний, но в данном случае не могу как-то внутренне согласиться, что включение ОРТО и ОДНОВРЕМЕННОЕ выключение привязок и наоборот настолько необходимо, что может трактоваться как эргономика. Тут я почти согласен с Vova, уж не обессудь и не обижайся.
5. А вот условия другой задачи интересно посмотреть. Только это произойдет через неделю и эта задача, наверное, будет уже решена.

Re: Как написать макрос на кнопку "ORTO-OSNAP-change"?

> Support
1. Этот макрос применяю для специфических задач, а именно для работы с текстами и таблицами.
2. Я тоже много векторизирую. Немного по другому.  Но отличия не принципиальные. Есть кстати маленький вспомогательный макрос.
И еще:

Полилинию плохо видно поверх растра

Попробуйте линию цветом "magenta" и вес линии 0.3-0.5 mm. Может быть будет лучше видно.

Re: Как написать макрос на кнопку "ORTO-OSNAP-change"?

> Support
Ничего не могу сказать, кроме одного - а если рисуется полилиния, зачем делать отдельно дуговые сегменты? Для английской версии када посмотрим на опции ком.строки:
A - Arc, дуговой сегмент. Начинает рисоваться, имея предыдущий сегмент как касательную. Либо (для предыдущего дугового) - общую с ним касательную.
Дополнительно - масса опций выскакивает, уже перечислять их не буду.
Или я не про то?
---
ИМХО.

Re: Как написать макрос на кнопку "ORTO-OSNAP-change"?

Удалось упростить код > Александр Ривилис (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 включается, и наоборот.
Прошу заинтересованных прокомментировать. Боюсь, не выпустил-ли чего из виду, код-то почти втрое стал короче. Еще раз мое имхо - такая комбинация вряд-ли имеет практический смысл, и составлена она исключительно поразмять мозги

Re: Как написать макрос на кнопку "ORTO-OSNAP-change"?

> Александр Ривилис
Забыл сказать, перед системными переменными точка и подчеркивание не ставятся, они ведь не переводятся на локальный язык. Даже странно, что работает

Re: Как написать макрос на кнопку "ORTO-OSNAP-change"?

> Vova
Такая комбинация имеет практический смысл. Иначе, я  бы ей не занимался.
Работы у меня полный завал.:) . Поэтому я хочу попросить сделать ее (комбинацию эту) полностью прозрачной. Т.е. что-бы не сбрасывалась селективность сущностей.  Возможно это? Спасибо.
У меня еще много идей связанных в основном с эргономичностью.

Re: Как написать макрос на кнопку "ORTO-OSNAP-change"?

> Vova
В этом контексте становятся командами, поэтому и работает! smile
А запись действительно стала намного красивее. Снимаю шляпу!

Re: Как написать макрос на кнопку "ORTO-OSNAP-change"?

> Vova

> Александр Ривилис
Так все- таки как о:

что-бы не сбрасывалась селективность сущностей

Re: Как написать макрос на кнопку "ORTO-OSNAP-change"?

Можно так:
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. smile

Re: Как написать макрос на кнопку "ORTO-OSNAP-change"?

Александр Ривилис пишет:

Но! Не работает при запущенных lisp-функциях!

Несколько пугает...

Re: Как написать макрос на кнопку "ORTO-OSNAP-change"?

> Александр Ривилис
Оденьте шляпу, магическую цифру 16384 я подсмотрел у вас.

В этом контексте становятся командами, поэтому и работает!

Как это, системные переменные вдруг становятся командами? Есть одноименные команды-сист. переменные, но у Osmode и Orthomode тезок среди имен команд нет. Есть Osnap и Ortho, и при них в русском каде палочка, да и точка нужны.
Проведите опыт на русском автокаде: уберите (-.) Если макрос сработает, снимите шляпу опять. Если не сработает, то шляпу сниму я.

Re: Как написать макрос на кнопку "ORTO-OSNAP-change"?

> Vova
Шляпу я снял не по поводу числа 16384, а по поводу красиво записанного макроса.
В религиозных войнах по поводу того Osmode и Orthomode системные переменные или команды я участвовать не буду - не вижу смысла. А запись с _. для них я подсмотрел в стандартном меню AutoCAD.

Re: Как написать макрос на кнопку "ORTO-OSNAP-change"?

> 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 - нет.

Re: Как написать макрос на кнопку "ORTO-OSNAP-change"?

> Александр Ривилис
Вот теперь отлично. Спасибо. Это приемы работы, которыми пользуешься сотни и сотни раз на дню. Приходится шлифовать. Я так оправдываюсь... и хитро заезжаю по другому вопросу.

Re: Как написать макрос на кнопку "ORTO-OSNAP-change"?

Очень удобная функция. Но было бы еще удобней перенести ее в Status Bar Menu.

Re: Как написать макрос на кнопку "ORTO-OSNAP-change"?

> Forma
Як мед - так ложкой! biggrin
Выкачай обновленную версию и наслаждайся...

Re: Как написать макрос на кнопку "ORTO-OSNAP-change"?

Александр Ривилис пишет:

Выкачай обновленную версию и наслаждайся...

Где выкачать?
Я на письмо не ответил. Извини. Жду клавиатуру с киррилицей. Проблема на ровном месте.

Re: Как написать макрос на кнопку "ORTO-OSNAP-change"?

> Forma
Неужели не ясно, что если я написал "обновленную", то это значит она там же, где и была в прошлый раз:
http://www.maestrogroup.com.ua/support/orthosnap.zip