Тема: Объединение макроса Diesel в единую команду

Как объединить макрос в единую команду, так чтобы повторялся при нажатие enter весь макрос, а не последняя команда в его коде? Текст макроса"^C^C*_Menuecho,3;(Setq CL (Getvar "Clayer"));_-Insert;Dim;^C_Menuecho;2;_Dim;_Restore;StyleM;_Exit;_Menuecho;0;_dimaligned;\\\_-Layer;_Make;РАЗМЕРЫ;_Color;1;;;_Change;_Last^m;_Properties;_Layer;РАЗМЕРЫ;;(Setvar "Clayer" CL);_Menuecho;0;"

Re: Объединение макроса Diesel в единую команду

Переписать в лиспе.

Re: Объединение макроса Diesel в единую команду

В Лиспе не нашёл команду которая вставляет размерный стиль из чертежа, не подскажите?
Заранее благодарен!

Re: Объединение макроса Diesel в единую команду

Что значит "вставляет размерный стиль"? В принципе, используя (command), можно тот же макрос переписать:
(command "_menuecho" 3)
(command "_.-insert" "dim")
(command) ;; равнозначно ^C
ну и так далее

Re: Объединение макроса Diesel в единую команду

Благодарю!!!!!!!! сейчас попробую!

Re: Объединение макроса Diesel в единую команду

Только вот что - когда будешь писать лисп, обязательно давай имя ему, ну, например, так:
(defun c:dal()
)
и вызывать его уже как dal

Re: Объединение макроса Diesel в единую команду

Возник следующий вопрос просит имя блока или сам блок, хотя размерные стили подгрузил как сделать чтобы после выполнения (command "_.-insert" "dim")
преступал к выполнению следущей

Re: Объединение макроса Diesel в единую команду

(while (/= (getvar "cmdactive") 0)
(command)
)
Например, так

Re: Объединение макроса Diesel в единую команду

Посмотрите Лисп ерунда какаято получается в каком месте я не прав?
;;;;dimlinear.lsp
(defun c:ll ()
(Setq CL (Getvar "Сlayer"))
(command "_.-insert" "dim" (while (/= (getvar "cmdactive") 0)
(command)
(command "_menuecho" 2)
(command "_dim" )
(command "_Restore" "StyleM")
(command "_Exit" )
(command "_menuecho" 0)
(command "_dimaligned" / / /)

Re: Объединение макроса Diesel в единую команду

Сравни со своим:

(defun c:ll (/ _clayer_ _menuecho_)
  (setq    _clayer_   (getvar "clayer")
    _menuecho_ (getvar "menuecho")
    ) ;_ end of setq
  (command "_.-insert" "dim")
  (while (/= (getvar "cmdactive") 0)
    (command)
    ) ;_ end of while
  (setvar "menuecho" 2)
  (command "_.dimstyle" "_restore" "stylem")
  (setvar "menuecho" _menuecho_)
  (command "_.dimaligned")
  (while (/= (getvar "cmdactive") 0)
    (command pause)
    ) ;_ end of while
  (command "_.-layer" "_make" "Размеры" "_color" 1 "" "")
  (setvar "clayer" _clayer_)
  (command "_.change" "_last" "" "_properties" "_layer" "Размеры" "")
  ) ;_ end of defun

Re: Объединение макроса Diesel в единую команду

Благодарю! Получилось, значительно облегчает жизнь при оформление в соответствие с СТП-предприятия.

Re: Объединение макроса Diesel в единую команду

Вопрос был такой

Как объединить макрос в единую команду, так чтобы повторялся при нажатие enter весь макрос, а не последняя команда в его коде?

И на него есть принципиальный ответ: надо включить меню на правой кнопке мыши. Многие это меню отключают, возвращаясь тем самым в автокад 14. Начиная с 2004 вызов этого меню можно регулировать длительностью нажатия на пр. кнопку. Специально для Владимира Громова-отработать задержку можно за 10-20 тренировочных нажатий. И все, привычка уже укоренилась на вашем среднем пальце. KPBLC запал на LISP, поэтому сразу перескочил с прямого ответа на заданный вопрос (а он ответ знает) на пропаганду лиспа. Это хорошо, если Василий пойдет по стопам KPBLC, но форум читают и другие. Может сложится впечатление, что макросы ущербны, ибо их (в R14) нельза повторить правой кнопкой. Можно!
Василий, ты сам разработал этот макрос?

Re: Объединение макроса Diesel в единую команду

> Vova
Принял к сведению. Некоторе время я и работал с задержкой нажатия правой кнопки мыши. Но, все-таки, для меня оказалось более удобным нажимать пробел для завершения команды или выбора объектов, а также для повтора последней команды. А правая кнопка мыши всегда включает контекстное меню без задержки. Все дело в том, что при всем моем уважении к макросам и при том, что я сам немного тренировался в их написании, и при том еще, что вашу книгу читаю с интересом, даже с удовольствием, - так вот, у меня нет НИ ОДНОЙ кнопки с макросом, подобным тем, которые вы описываете в своей книге. Дожен сказать, что принципы создания макросов я уяснил для себя очень давно, еще до кнопок, только я тоже "запал" на Лисп, хоть и завис несколько в его изучении с появлением Visual Lisp, т.к. работа сдвинулась несколько в сторону от AutoCAD'а. А вот применение предварительного выбора объектов с помощью команды "_select" - тут я не допер вовремя, сознаюсь к стыду своему. Просто в голову не приходило, что, например, копируется не выбранный набор, а именно копия набора. Но сама возможность повтора сложного макроса из контекстного меню, конечно, очень способствует развитию и продвижению программирования в меню.

Re: Объединение макроса Diesel в единую команду

Разработал сам, на производстве внедряем СТП, народ невозможно приучить работать в слоях, чертят всё в одном слое, с чертежём не возможно работать, поэтому и решил раз они не хотят этого сделать пусть сделает этосам AutoCad, есть и другие макросы с линиями, текстом. Но минусом было, то что не повторяется с правой кнопкой мыши. Конечно первое время внедрил тем кто работает с контекстном меню, люди кто не очень разбирается, по началу с ума сходили(ибо не предупредил а решил делать революцию в тихую) Autocad стал слушатся СТП. Но проблема была с людьми кто работает с enter на правой кнопке, благодаря KPBLC, за сегодняшнюю ночь решил эту проблему, думаю втораю половина производственников в понедельник будет довольна.

Re: Объединение макроса Diesel в единую команду

> Василий

> kpblc
Хоть бы обьяснили в чем тут дело. Причем здесь блок и размерный стиль? СТП предприятия и работа в одном слое. Какая связь?

> Владимир Громов
Задержка при нажатии правой клавиши мыши- вообще ерунда какая то. Более 25 лет работаю
на компьютере и не слышал о таком приеме.

Re: Объединение макроса Diesel в единую команду

> Forma
Попробуйте, судя по вашим приемам работы, вам должно очень понравиться...
Настраивается:
1 заходите в настройки акада закладка "User Preferences"
2 ставите галку "shortcut menu in the drawing area"
3 Жмете кнопку "Right-Click Customization"
Далее пробуете различные варианты настроек...

Re: Объединение макроса Diesel в единую команду

> Forma
У нас, например, нет СТП, однако соглашение о слоях и всяких других параметрах рисунка существует. Поэтому я предложил для установки рабочих параметров рисунка программу, описанную здесь:
https://www.caduser.ru/forum/topic19867.html
По поводу задержки нажатой правой кнопки мыши - это надо смотреть в настройках AutoCAD. По-началу (в 2004) эта возможность мне понравилась, потом я почему-то охладел.

Re: Объединение макроса Diesel в единую команду

> Евгений Елпанов

> Владимир Громов
Как это делается, я знаю. Прием мне этот не нравится. Я как инженер люблю компьютер за точность и однозначность. А все эти моторные рефлексы... Ну может для геймеров...

Re: Объединение макроса Diesel в единую команду

Евгений Елпанов пишет:

судя по вашим приемам работы

Мои приемы работы основаны на принципах экспертных систем. А пишу это для Вас потому, что Вы программист. Может пригодится. САПРы, концепции которых я разрабатывал, все работают.
Проверку временем прошли. Да и ничего в них особо моего не было. Все основано на японском опыте 80- 90 годов.

Re: Объединение макроса Diesel в единую команду

> Forma
Очень интересно поподробнее о
>" САПРы, концепции которых я разрабатывал, все работают."
>"Все основано на японском опыте 80- 90 годов."
Очень интересна дальнейшая дискуссия, но наверное лучше по почте...
До понедельника меня не будет, а далее можно продолжить, если у вас найдется время и желание.

Re: Объединение макроса Diesel в единую команду

Так ведь kpblc уже создал тему по поводу экспертных систем:
https://www.caduser.ru/forum/topic21835.html

Re: Объединение макроса Diesel в единую команду

> Евгений Елпанов

> Владимир Громов
Со временем у меня как и всех не очень хорошо.
Но желание есть. Правда, вряд ли это кого то заинтересует. До сих пор не интересовало. Но есть одна категория населения, которая очень "конкретно" интересуется такими делами. :)

Re: Объединение макроса Diesel в единую команду

> Владимир Громов

> Василий
У Владимира Громова всегда есть меню на правой кнопке, а повтор команды идет через Пробел. (то есть В.Г. как-бы не чистый кнопочник). Это второй вариант, альтернатива задержке правой кнопки. И в том и в другом случае есть возможность повторить макрос целиком. Что касается общественных забот Василия, то он выступает как-бы в качестве Cad-manager, и в этом случае надо становиться программистом на лиспе и пр. Макросы все-же больше для индивид. пользования, для тех, кто решил для себя, что лисп им не освоить, а попррграммировать и облегчить себе жизнь хочется. Кстати, в упомянутой В.Г. книге показан подход к созданию единого для всех стиля черчения.

Re: Объединение макроса Diesel в единую команду

> Василий
Почему звездочка после ^C^C? Что за свистопляска с Menuecho-то оно=2, то =3? Прокомментируй, пожалуйста,

;;;_Change;_Last^m;_

Зачем ^m; Почему не ;;? А вообще, узнаю корни-по _-Insert;Dim;^C, по "Cl" и некоторым другим признакам.

Re: Объединение макроса Diesel в единую команду

> Vova
Да вы правы свистопляска от туда!