Тема: MOVE от конечной точки объекта на определенное расстояние до другого объекта

Задача : MOVE объект от его конечной точки (OSNAP=end) на определенное расстояние от конечной точки другого объекта (from_end).
Созданный мной макрос переносит объект в конечную точку другого объекта, но не на определенное расстояние, т.е. OSNAP from не работает.
Где ошибка в макросе ?
^C^C_setvar;"ORTHOMODE";1;_setvar;"OSMODE";1;_move;\;_end;_from_end;

Re: MOVE от конечной точки объекта на определенное расстояние до другого объекта

После from надо поставить точку с запятой:

^C^C_setvar;"ORTHOMODE";1;_setvar;"OSMODE";1;_move;\;_end;_from;_end;

Re: MOVE от конечной точки объекта на определенное расстояние до другого объекта

> Владимир
Громов
спасибо!
но к сожалению тот же результат, from не работает

Re: MOVE от конечной точки объекта на определенное расстояние до другого объекта

я работаю в Autocad 2006 LT, так что macros единственное средство для автоматизации Autocad

Re: MOVE от конечной точки объекта на определенное расстояние до другого объекта

^C^C_setvar;"ORTHOMODE";1;_setvar;"OSMODE";1;_move;\;_end;\from
А кто будет возвращать орто и оснэп в исходное состояние?

Re: MOVE от конечной точки объекта на определенное расстояние до другого объекта

^C^C_setvar;"ORTHOMODE";1;_setvar;"OSMODE";0;_move;end;\;@;from;end

Re: MOVE от конечной точки объекта на определенное расстояние до другого объекта

> Vova
СПАСИБО!!!
заработало!!!

Re: MOVE от конечной точки объекта на определенное расстояние до другого объекта

А кто будет возвращать орто и оснэп в исходное состояние?

Re: MOVE от конечной точки объекта на определенное расстояние до другого объекта

> Vova
1-я кнопка:

^C^C_setvar;"Userr1";$M=$(Getvar,OSMODE);+
_setvar;"Userr2";$M=$(Getvar,ORTHOMODE);+
_setvar;"ORTHOMODE";1;_setvar;"OSMODE";0;+
_move;end;\;@;from;end

2-я кнопка:

^C^C_setvar;"OSMODE";$M=$(getvar,"Userr1");_setvar;"ORTHOMODE";$M=$(getvar,"Userr2")

не получилось посадить на одну кнопку и Move и возврат OSMODE c ORTHOMODE.

^C^C_setvar;"Userr1";$M=$(Getvar,OSMODE);+
_setvar;"Userr2";$M=$(Getvar,ORTHOMODE);+
_setvar;"ORTHOMODE";1;_setvar;"OSMODE";0;+
_move;end;\;@;from;end\_setvar;"OSMODE";$M=$(getvar,"Userr1");+
_setvar;"ORTHOMODE";$M=$(getvar,"Userr2")

где ошибка?

Re: MOVE от конечной точки объекта на определенное расстояние до другого объекта

Настырно спрашивая Riva o восстановлении Ortho и Osnap я хотел сподвигнуть его думать в этом направлении. То, что легко дается лиспом вызывает проблему в Diiesel. Я уже пробовал применить для этого User, но безуспешно. Желающие могут повозится с таким макросом, на первый взгляд он кажется логичным:

^C^CSETVAR;USERR1;$M=$(GETVAR,ORTHOMODE);_ORTHO;1;OSMODE;0;+
\_MOVE;_END;\;@;_FROM;_END;\SETVAR;ORTHOMODE;$M=$(GETVAR,USERR1);

Здесь для упрощения я убрал OSNAP, сделал попытку запомнить и вернуть исходное Ortho. Логика такая: 1. Задаем переменной Userr1 численное значение из Orthomode. 2. Выставляем ORTHO =1, Osmode=0, так нужно для работы макроса. 3.Начиная от слова Move выполняется действие-подвинуть объект за конечную точку, использовав привязку From от какого-то объекта. 4. Командой Setvar пытаемся слить из Userr1 численное значение в Ortomode, полагая, что там хранится его исходное состояние.
Работает эта конструкция странно. Хотя команда (от Move и дальше) выполняется корректно, Ortho восстанавливается то сразу, то через раз. Надо разгадать какой-то секрет, чтобы найти аналог Setq в дизеле.
Что касается Osnap, задача решается через мгическое число 16384, здесь https://www.caduser.ru/forum/topic19494.html  Александр Ривилис (2005-07-30 14:25:47) и  Vova (2005-08-03 05:42:54)

Re: MOVE от конечной точки объекта на определенное расстояние до другого объекта

этот вариант работает :

^C^C_setvar;"Userr1";$M=$(Getvar,"OSMODE");+
_setvar;"Userr2";$M=$(Getvar,ORTHOMODE);+
_setvar;"ORTHOMODE";1;_setvar;"OSMODE";0;+
_move;end;\;@;from;end;\+
_setvar;"OSMODE";$M=$(getvar,"Userr1");+
_setvar;"ORTHOMODE";$M=$(getvar,"Userr2")

>Vova
Cпасибо за корректировку!
Проблема возникает во время прерывания выполнения макроса, что впрочем естественно, т.к. не учтен откат в случае аварийного выхода из команды.
И у меня вопрос, а вообше существует в DIESEL такая вещь как метка (по типу LISP) для возврата  системных переменных в первоначальное состояние?

Re: MOVE от конечной точки объекта на определенное расстояние до другого объекта

> riva
1. Открываем Options, System и ставим птицу Beep on error in user input. To есть даем возможность автокаду поругаться вслух.
2. Жмем кнопку вышепоказанного макроса и слышым: Beep! В ком строке написано, что такой команды, как +  нет. Надо плюсы удалить. Они ставились в файле *.mns чтобы сделать перенос строки. В поле Customize он не нужен.
3. Ставим изначально Ortho On. Запускаем макрос. На выходе осталось ON. Правильно. Теперь выставляем Ortho, Off. На выходе после работы макроса On. Если вторично выставить Off, то на выходе получим правильное Off. То-же самое происходит с Osnap. После его смены на выходе-старое значение. То есть запоминание на User не корректно. Хорошо-бы, подклучились  программисты.
Еще пару замечаний: не нужны кавычки. В одном выражении они у тебя упущены, и ничего не случилось. Добавь подчеркивание перед End, From, а то не сработает на русском автокаде.