Любой чертеж может быть разбит на простейшие элементы, примитивы. В этом уроке мы познакомимся с примитивом, который называется «Прямоугольник».
И рассмотрим следующие вопросы:
Команду «Прямоугольник» можно запустить несколькими способами:
Набираем на клавиатуре ПРЯМОУГ (большими или маленькими буквами – это не важно) и нажимаем <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.
Запустите редактор 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.
В функциях расширения специальной функции для построения прямоугольника, я не нашел. Но мы можем, построит прямоугольник при помощи полилинии.
Добавляем строку:
(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
На этом наш урок окончен. В нем рассказывалось: Как нарисовать прямоугольник в Автокаде.
Мы рассмотрели следующие аспекты:
Если у Вас появились вопросы, задавайте их в комментариях.
Если Вы нашли что-то полезное на моем сайте не забудьте порекомендовать статью в социальных сетях.
Пишите в комментариях или мне на почту Ваши пожелания о том, какие статьи Вы хотели бы увидеть на моем сайте.
Хотите получать информацию о выходе новых статей. Оформляйте подписку.
До новых встреч.
«Автор: Михаил Орлов»
Программа "Расчет профиля" создана в помощь инженерам-проектировщикам, работающих с профилями. Автор программы, читатель моего сайта:…
Как нарисовать дугу в Автокаде? Для этого в программе Автокад существует несколько способов. В этом…
Любой чертеж может быть разбит на простейшие элементы, примитивы. В этом уроке мы познакомимся с…
В этой статье мы продолжим процесс автоматизации проектирования систем вентиляции. (далее…)
Одним из эффективных способов автоматизации процесса проектирования в Автокад, может послужить создание своих программ на…
В этой статье мы рассмотрим пример программного управление диалоговым окном. В качестве примера мы возьмем…
View Comments
Спасибо за урок. У меня вопрос по массиву (или это лучше сделать через список).
Есть начальная и конечная точки в плоскости 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.