Любой чертеж может быть разбит на простейшие элементы, примитивы. В этом уроке мы познакомимся с примитивом, который называется «Прямоугольник».
И рассмотрим следующие вопросы:
- Как запустить команду Прямоугольник?
- Построение Прямоугольника;
- Построение Прямоугольника по координатам;
- Построение Прямоугольника по длине и ширине;
- Редактирование прямоугольника;
- Построение прямоугольника программным путем.
Как запустить команду Прямоугольник?
Команду «Прямоугольник» можно запустить несколькими способами:
С клавиатуры.
Набираем на клавиатуре ПРЯМОУГ (большими или маленькими буквами – это не важно) и нажимаем <Enter>.
Причем в последних версия Автокад достаточно набрать только ПРЯ.
Когда вы набираете команду с клавиатуры, при наборе первой буквы от командной строки открывается список команд, и если в нем подсвечена нужная вам команда, то дальше ее набор можно не делать.
В нашем случаи набираем ПРЯ и нажимаем <Enter>. См. Рис. 1.
Также вместо команды ПРЯМОУГ можно набрать _rectang.
Команда rectang работает в Английской версии. Английского название с нижним подчеркиванием _rectang, будет работать во всех версиях.
С ленты при помощи мыши.
На ленте перейдите на вкладку «Главная». Поместите указатель мыши на команду ПРЯМОУГОЛЬНИК и щелкните левой кнопкой мыши См. Рис. 2
Если чуть дольше подержать указатель мыши, то всплывет более подробная подсказка. См. Рис. 3.
Большинство пользователей используют второй способом.
Построение Прямоугольника.
После того, как мы запустили команду ПРЯМОУГОЛЬНИК, в командной строке появиться запрос: «Первый угол или [Фаска/Уровень/Сопряжение/Высота/Ширина]:», который просит нас задать первый угол прямоугольника
Пометить указатель в нужное место, и нажмите левую кнопку мыши.
Появиться запрос: «Второй угол или [Площадь/Размеры/поВорот]:»
Укажите местоположение второго угла прямоугольника, и нажмите левую кнопку мыши.
Автокад построить прямоугольник. См. Рис. 4.
Построение Прямоугольника по координатам.
Как построить прямоугольник нужных размеров?
Один из способов, построить прямоугольник нужных размеров, это задать координаты его углов.
Запустите команду ПРЯМОУГОЛЬНИК, в командной строке появиться запрос: «Первый угол или [Фаска/Уровень/Сопряжение/Высота/Ширина]:»
С клавиатуры введите координаты первого угла прямоугольника. Например: 0, 0 и нажмите <Enter> (или пробел).
Появиться запрос: «Второй угол или [Площадь/Размеры/поВорот]:»
Введите координаты второго угла прямоугольника. Например: 300, 200 и нажмите <Enter>.
Автокад построить прямоугольник по указанным координатам (длиной 300; высотой 200). См. Рис. 5.
Построение Прямоугольника по длине и ширине.
Второй способ построить прямоугольник нужных размеров – это использовать опцию [Размеры].
Запустите команду ПРЯМОУГОЛЬНИК, в командной строке появиться запрос: «Первый угол или [Фаска/Уровень/Сопряжение/Высота/Ширина]:»
Укажите первый угол.
Появиться запрос: «Второй угол или [Площадь/Размеры/поВорот]:»
Выберите опцию [Размеры] (щелкните по ней левой кнопкой мыши) или введите с клавиатуры Р и нажмите <Enter>.
На запрос: «Длина прямоугольника <300.0000>:»
Введите, например 400 и нажмите <Enter>.
На запрос: «Ширина прямоугольника <200.0000>:»
Введите, например 200 и нажмите <Enter>.
Появится запрос: «Второй угол или [Площадь/Размеры/поВорот]:»
Укажите направление расположение второго угла относительного первого.
Возможны четыре варианта расположение. Выберем, например: Справа вверх.
Отведите указатель в нужном направлении (Вправо вверх) и нажмите левую кнопку мыши. См. Рис. 6.
Остальные опции используются намного реже. Оставляем их для самостоятельного изучения.
Редактирование прямоугольника.
Иногда, когда прямоугольник построен неверно, бывает легче его отредактировать, чем удалять и строить новый. Давайте посмотрим, что мы можем сделать с уже построенным прямоугольником:
Изменение размеров прямоугольника.
Чтобы изменить размер прямоугольника (например Высоту), щелкните по нему левой кнопкой мыши, так чтобы появились ручки. См. Рис. 7.
Щелкните по средней ручке, с той стороны, которую хотите переместить. Ручка должна стать красной.
Отведите указатель мыши в направлении перемещения стороны. См. Рис. 8.
Введите с клавиатуру, например 100 и нажмите <Enter>.
Сторона переместится на указанное расстояние в нужном направлении. См Рис. 9.
Перемещение прямоугольника за ручку.
Чтобы, перемести прямоугольник за ручку, щелкните по нему левой кнопкой мыши, так чтобы появились ручки.
Затем, выберите нужную ручку (щелкните по ней левой кнопкой мыши) и нажмите <Enter> (или пробел).
Переместите прямоугольник в новое местоположение и нажмите левую кнопку мыши. См. Рис. 10.
Прямоугольник поменяет свое положение. Таким способом можно перемещать любые примитивы.
Построение прямоугольника программным путем.
Для тех, кто хочет создавать свои собственные команды в Автокад, мы рассмотрим, как построить прямоугольник при помощи языка программирования LISP.
Построение прямоугольника при помощи функции command.
Запустите редактор Visual LISP. В командной строке наберите VLIDE (или VLISP) и нажмите <Enter>.
Откроется редактор Visual LISP.
В нем создаем новый файл и набираем следующие строки.
Запрашиваем координаты первой точки:
(setq p1 (getpoint "\nУкажите первый угол прямоугольника:"))
getpoint – функция, которая просит пользователя задать координаты точки; "\nУкажите первый угол прямоугольника:" – текст запроса, который увидеть пользователь; setq – функция, которая сохраняет заданные координаты точки в переменной р1.
Давайте построим прямоугольник длиной 500 и высотой 250. Для этого вначале создадим список со смещение координат:
(list 500 250 0)
Затем при помощи функции mapcar сложим этот список со списком координат первой точки р1:
(mapcar '+ p1 (list 500 250 0))
В результате получим координаты второго угла. Сохраним их в переменной р2:
(setq p2 (mapcar '+ p1 (list 500 250 0)))
Строим прямоугольник:
(command "_rectang" p1 p2)
command – функция которая имитирует командную строку; "_rectang" – стандартная команда Автокад (Прямоугольник); р1 – переменная, в которой хранятся координаты первого угла; р2 – переменная, в которой хранятся координаты второй второго угла.
Преобразуем программу в команду AutoCAD.
В начале программы добавим функцию defun, придумаем имя новой команды m_pr и перечисляем все временные переменные:
(defun c:m_pr (/ p1 p2) <наша программа> ); end_defun
В конце программы добавим закрывающую скобку.
В результате получаем. См. Рис. 11.
Давайте, проверим, как работает программа:
Нажмите на кнопку «Загрузить активное окно редактора».
Затем на кнопку перехода в AutoCAD.
Введите в командной строке: m_pr и нажмите <Enter>.
На запрос: «Укажите первый угол прямоугольника:”
Укажите первый угол.
Программа построит прямоугольник 500х250. См. Рис. 12.
Построение прямоугольника при помощи функций расширения языка LISP.
В функциях расширения специальной функции для построения прямоугольника, я не нашел. Но мы можем, построит прямоугольник при помощи полилинии.
Добавляем строку:
(vl-load-com)
Которая загружает функции расширения (Vla-функции).
Затем строки, которые помогут нам получить указатель на имя пространства модели:
Получаем указатель на программу AutoCAD:
(setq acad_application (vlax-get-acad-object))
Затем, указатель на активный документ:
(setq active_document (vla-get-activedocument acad_application))
И наконец, указатель на пространство модели
(setq model_space (vla-get-modelspace active_document))
Давайте прямоугольник, который мы строим при помощи функций расширения, построим внутри первого.
Определяем первую точку второго прямоугольника относительно первого угла, первого прямоугольника. Координаты меняем по оси Х на 50, по оси Y на 50:
(setq pr1 (mapcar '+ p1 (list 50 50 0)))
Координаты второй точки определяем относительно pr1, путем смещения по оси Х на 400:
(setq pr2 (mapcar '+ pr1 (list 400 0 0)))
Координаты третьей точки определяем относительно pr2, путем смещения по оси Y на 150:
(setq pr3 (mapcar '+ pr2 (list 0 150 0)))
Координаты четвертой точки определяем относительно pr3, путем смещения по оси Х на -400:
(setq pr4 (mapcar '+ pr3 (list -400 0 0)))
Сложность создания прямоугольника (полилинии) при помощи Vla-функций заключается в том, что координаты точек должны быть представлены в особом виде Variant.
Давайте приведем наши координаты к этому виду:
Объединим координаты точек pr1 pr2 pr3 pr4 pr1 в единый список:
(setq coord (append pr1 pr2 pr3 pr4 pr1))
Строка вернет: объединенный список координат
(1072.64 306.886 0.0 1472.64 306.886 0.0 1472.64 456.886 0.0
1072.64 456.886 0.0 1072.64 306.886 0.0)
Создадим безопасный массив saf_ar, с количеством элементов равным 15:
(setq saf_ar (vlax-make-safearray vlax-vbDouble '(1 . 15)))
vlax-make-safearray – создает безопасный массив; vlax-vbDouble – тип данных, которые будут храниться в безопасном массиве (вещественное число с двоичной точностью); (1 . 15) – размер безопасного массива (массив начинается с элемента 1; заканчивается элементом 15).
Заполним безопасный массив saf_ar данными из списка coord
(vlax-safearray-fill saf_ar coord)
Количество элементов в списке должно совпадать с количеством элементов в безопасном массиве.
Приведем безопасный массив к типу variant:
(vlax-make-variant (vlax-safearray-fill saf_ar coord))
Сохраним variant, в котором хранятся координаты точек, в переменной var_coord:
(setq var_coord (vlax-make-variant (vlax-safearray-fill saf_ar coord)))
Стоим прямоугольник при помощи функции vla-AddPolyline:
(vla-AddPolyline model_space var_coord)
model_space - место, куда добавляем Прямоугольник (пространство модели); var_coord – переменная, в которой хранятся координаты вершин прямоугольника, представленные в особом виде variant.
В список временных переменных добавляем новые переменные.
В результате получим. См. Рис. 13.
Нажмите на кнопку «Загрузить активное окно редактора».
Затем на кнопку перехода в AutoCAD.
Введите в командной строке: m_pr и нажмите <Enter>.
На запрос: «Укажите первый угол прямоугольника:”
Укажите первый угол.
Программа построит два прямоугольника. См. Рис. 14.
Внешний прямоугольник обычный примитив. Внутренний — Vla-объект.
Программный код:
(defun c:m_pr (/ p1 p2 acad_object active_document model_space pr1 pr2 pr3 pr4 coord saf_ar var_coord) (setq p1 (getpoint "\nУкажите первый угол прямоугольника:")) (setq p2 (mapcar '+ p1 (list 500 250 0))) (command "_rectang" p1 p2)
(vl-load-com) ; загружаем функции расширения
(setq acad_object (vlax-get-acad-object))
(setq active_document (vla-get-activedocument acad_object))
(setq model_space (vla-get-modelspace active_document))
(setq pr1 (mapcar '+ p1 (list 50 50 0))) (setq pr2 (mapcar '+ pr1 (list 400 0 0))) (setq pr3 (mapcar '+ pr2 (list 0 150 0))) (setq pr4 (mapcar '+ pr3 (list -400 0 0)))
(setq coord (append pr1 pr2 pr3 pr4 pr1))
(setq saf_ar (vlax-make-safearray vlax-vbDouble '(1 . 15)))
(setq var_coord (vlax-make-variant (vlax-safearray-fill saf_ar coord)))
(vla-AddPolyline model_space var_coord)
); end_defun
На этом наш урок окончен. В нем рассказывалось: Как нарисовать прямоугольник в Автокаде.
Мы рассмотрели следующие аспекты:
- Как запустить команду Прямоугольник?
- Построение Прямоугольника;
- Построение Прямоугольника по координатам;
- Построение Прямоугольника по длине и ширине;
- Редактирование прямоугольника;
- Построение прямоугольника программным путем.
Если у Вас появились вопросы, задавайте их в комментариях.
Если Вы нашли что-то полезное на моем сайте не забудьте порекомендовать статью в социальных сетях.
Пишите в комментариях или мне на почту Ваши пожелания о том, какие статьи Вы хотели бы увидеть на моем сайте.
Хотите получать информацию о выходе новых статей. Оформляйте подписку.
До новых встреч.
«Автор: Михаил Орлов»
Спасибо за урок. У меня вопрос по массиву (или это лучше сделать через список).
Есть начальная и конечная точки в плоскости pn (0 10), pk (51 891) соответственно; а также ещё 50 точек между этими (координаты неизвестны). Но известно что каждая следующая точка по Х: увеличивается на 1, а по Y: (координата_по_X * координата_по_X); то есть координаты точки 25 будут (25 625) . Я так понимаю нужен массив или список чтобы по этим 52 точкам построить поллинию. Как загнать в список эти точки?
Если правильно понял, то:
Список можно составить так:
Построение полилинии:
Добрый день, подскажите пожалуйста, есть ли возможность обрабатывать координаты в формате , то есть на пример, существуют ли vla функции аналогичные polar, car итп? Или работая с объектной моделью придется каждый раз применять конструкции типа: (vlax-safearray->list (vlax-variant-value #))?
У меня вопрос гораздо проще — почему я могу рисовать прямоугольник только в плоскости ху . То есть он всегда в ней строится, независимо от вида, в котором работаю.
По умолчанию все построения происходят в плоскости XY. Но плоскость черчения можно менять (поворот осей, ПСК по трем точкам, ПСК по объекту, ПСК по виду и т.п., т.е. различные опции команды _ucs
Ищу способ программно указывать сторону смещения прямоугольника с помощью команды _offset.
Сам только начал изучать и автокад, и автолисп, поэтому очень всё сложно выглядит и не понятно.
Очень хочется автоматизировать рабочий процесс сразу, минимизируя ручной ввод до ввода размеров прямоугольника. Т.е. мне нужно рисовать очень много прямоугольников разных размеров, потом каждый прямоугольник смещать на фиксированое расстояние внутрь и наружу с присваиванием каждому смещению определённого слоя… и тд и тп
Загвоздка как раз в автоматизации смещения в нужную сторону!
Заранее премного благодарен за помощь! И большое спасибо за уроки, они реально помогают!
Все про прямоугольники: https://acad-prog.ru/kak-narisovat-pryamougolnik-v-avtokade/
Offset для прямоугольника:
(while(not(setq ent (car(entsel "\nУкажите объект : ")))))
(setq ps (getpoint "\nУкажите точку направления смещения: "))
(setq sm 100)
(command "_offset" sm ent ps "")
Спасибо за урок!) Заинтересовало, возможно ли прописать условие, чтобы построить прямоугольник по 2м точкам, которые указывать вручную (функцией getpoint), а оставшиеся две строились по заданной площади прямоугольника?
Возможно. Если написать небольшую программку на LISP.