Тема: Макрос. Многоульник с заданным значением сторон
Т.к. обычно командой _polygon пользуюсь для рисования шестиугольника, то кнопку прописал ^C^C_polygon;6;^C^C;
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → Настройка меню и DIESEL → Макрос. Многоульник с заданным значением сторон
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Т.к. обычно командой _polygon пользуюсь для рисования шестиугольника, то кнопку прописал ^C^C_polygon;6;^C^C;
Денис, но ты ведь экономишь всего один клик мыши, и для этого совсем неразумно держать лишнюю кнопку на экране. Общее правило для составления макросов такое: набираешь на клавиатуре нужную последовательность команд и опций, и сразу-же, после каждого нажатия на клавишу или кнопку мыши, записываешь действие на бумагу. Enter это точка с запятой, у тебя правильно, а ручной ввод данных, в твоем случае - указание центра и радиуса, это наклонная обратная косая черта, вот такая \. Значит, их должно быть две. Так что попробуй опять, но лучше не в этой ветке, а или в основной, или Настройка меню и diesel. Ну а когда приличный и полезный макрос получится, давай его сюда.
> Денис Флюстиков
IMHO.
Зачем там ^C^C в конце? Хватит и такого:
^C^C_polygon;6
Только зачем такой макрос и, соответственно, кнопка вообще? Первый раз указал, что надо 6 сторон, AutoCAD и запомнил.
Вообще-то, по названию темы можно предположить, что задается РАЗМЕР стороны шестиугольника. Вот это было бы поинтересней.
При макросе ^C^C_polygon;6;^C^C; уже при первом запуске задано 6 сторон и в отличии от ^C^C_polygon;6 есть возможность перезадать это кол-во, а насчет темы, приношу извинения, задается только начальное кол-во сторон.
Не удержался и слепил программку отрисовки правильного шестиугольника с заданием размера стороны:
;**************** pg6.lsp ****************************** ; Отрисовка правильного шестиугольника ; с заданным размером стороны. ; (defun C:PG6 ( / echo osm pp st) (setq echo (getvar "CMDECHO")) (setvar "CMDECHO" 0) (setq osm (getvar "OSMODE")) (setvar "OSMODE" 0) (initget 7) (setq pp (getpoint "\n Укажите центр шестиугольника: ")) (initget 7) (setq st (getreal "\n Размер стороны шестиугольника: ")) (vl-cmdf "_polygon" "6" pp "_I" st) (setvar "CMDECHO" echo) (setvar "OSMODE" osm) (princ) )
> Владимир Громов
Я бы заменил
(setq st (getreal "\n Размер стороны шестиугольника: "))
на
(setq st (getdist "\n Размер стороны шестиугольника: "))
> kpblc
Можно и так.
Чем хорош LISP-вариант, что в диалог можно заложить варианты выбора из стандартного ряда размеров "под ключ"
> Денис Флюстиков
Да, только ориентация однозначна, хотя можно добавить, скажем, поворот на 30 градусов.
Как вариант:
;|============================================================================= * Отрисовка многогранника * Параметры вызова: * edge-range количество сторон * Примеры вызова: (_mod-polygon 3) ; отрисовка правильного 3-угольника (_mod-polygon 10) ; отрисовка правильного 10-угольника =============================================================================|; (defun _mod-polygon (edge-range / _cmdecho_ _osmode_ _nomutt_ edge_len pol_center msg adoc) (vl-load-com) (setq adoc (vla-get-activedocument (vlax-get-acad-object)) _cmdecho_ (getvar "cmdecho") _nomutt_ (getvar "nomutt") _osmode_ (getvar "osmode") msg (strcat "\nУкажите центр " (itoa edge-range) "-угольника : ") pol_center (getpoint msg) msg (strcat "\nУкажите длину ребра " (itoa edge-range) "-угольника : ") edge_len (getdist msg) ) ;_ end of setq (vla-startundomark adoc) (mapcar 'setvar (list "cmdecho" "nomutt" "osmode") (list 0 1 0) ) ;_ end of mapcar (command "_.polygon" edge-range pol_center "_I" edge_len) (mapcar 'setvar (list "cmdecho" "nomutt" "osmode") (list _cmdecho_ _nomutt_ _osmode_) ) ;_ end of mapcar (vla-endundomark adoc) ) ;_ end of defun
Без проверки.
> kpblc
Тут досадная неточность. При построении в AutoCAD'е многоугольника надо задавать РАДИУС описанной/вписанной окружности, а не размер стороны. И только для шестиугольника размер стороны равен радиусу описанной окружности, поэтому и в запросе можно было написать "Размер стороны шестиугольника: ". Жаль.
Ну да, верно... Тогда писать лисп/макрос на это дело в принципе бессмысленное занятие - всех вариантов не предусмотришь.
Однако, что такое "многоульник" (см. название темы) так и осталось неизвестным...:-)
> Денис Флюстиков
"Правильный" макрос. Я его уже прописал вместо штатной кнопки. Нет никакой лишней кнопки. И вообще не бывает лишних кнопок. Это "Vova". (автор "...и создание кнопок") :)))
И раздел, где помещен был этот макрос, изначально был правильный.
> Владимир Громов
А LISP- программу можно было- бы написать.
В диалоге которой был- бы только один вопрос:
"Сн. - размер под ключ". И все. Удобная была- бы
программа для машиностроителей.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → Настройка меню и DIESEL → Макрос. Многоульник с заданным значением сторон
Форум работает на PunBB, при поддержке Informer Technologies, Inc