Как нарисовать прямоугольник в Автокаде.

Любой чертеж может быть разбит на простейшие элементы, примитивы.  В этом уроке мы познакомимся с примитивом, который называется «Прямоугольник».

И рассмотрим следующие вопросы:

Как запустить команду Прямоугольник?

Команду «Прямоугольник» можно запустить несколькими способами:

С клавиатуры.

Набираем на клавиатуре ПРЯМОУГ (большими или маленькими буквами – это не важно) и нажимаем <Enter>.

Причем в последних версия Автокад достаточно набрать только ПРЯ.

Когда вы набираете команду с клавиатуры, при наборе первой буквы от командной строки открывается список команд, и если в нем подсвечена нужная вам команда, то дальше ее набор можно не делать.

В нашем случаи набираем ПРЯ и нажимаем <Enter>. См. Рис. 1.

Как нарисовать прямоугольник в Автокаде

Рис. 1. Запуск команды ПРЯМОУГ

Также вместо команды ПРЯМОУГ можно набрать _rectang.

Команда rectang работает в Английской версии. Английского название с нижним подчеркиванием _rectang, будет работать во всех версиях.

С ленты при помощи мыши.

На ленте перейдите на вкладку «Главная». Поместите указатель мыши на команду ПРЯМОУГОЛЬНИК  и щелкните левой кнопкой мыши См. Рис. 2

Как нарисовать прямоугольник в Автокаде

Рис. 2. Запуск команды ПРЯМОУГОЛЬНИК

Если чуть дольше подержать указатель мыши, то всплывет более подробная подсказка. См. Рис. 3.

Как нарисовать прямоугольник в Автокаде

Рис. 3. Подробная подсказка.

Большинство пользователей используют второй способом.

Построение Прямоугольника.

После того, как мы запустили команду ПРЯМОУГОЛЬНИК, в командной строке появиться запрос: «Первый угол или [Фаска/Уровень/Сопряжение/Высота/Ширина]:», который просит нас задать первый угол прямоугольника

Пометить указатель в нужное место, и нажмите левую кнопку мыши.

Появиться запрос: «Второй угол или [Площадь/Размеры/поВорот]:»

Укажите местоположение второго угла прямоугольника, и нажмите левую кнопку мыши.

Автокад построить прямоугольник. См. Рис. 4.

Как нарисовать прямоугольник в Автокаде

Рис. 4. Прямоугольник

Построение Прямоугольника по координатам.

Как построить прямоугольник нужных размеров?

Один из способов, построить прямоугольник нужных размеров, это задать координаты его углов.

Запустите команду ПРЯМОУГОЛЬНИК, в командной строке появиться запрос: «Первый угол или [Фаска/Уровень/Сопряжение/Высота/Ширина]:»

С клавиатуры введите координаты первого угла прямоугольника. Например: 0, 0 и нажмите <Enter> (или пробел).

Появиться запрос: «Второй угол или [Площадь/Размеры/поВорот]:»

Введите координаты второго угла прямоугольника. Например: 300, 200 и нажмите <Enter>.

Автокад построить прямоугольник по указанным координатам (длиной 300; высотой 200). См. Рис. 5.

Как нарисовать прямоугольник в Автокаде

Рис. 5. Прямоугольник по координатам.

Построение Прямоугольника по длине и ширине.

Второй способ построить прямоугольник нужных размеров – это использовать опцию [Размеры].

Запустите команду ПРЯМОУГОЛЬНИК, в командной строке появиться запрос: «Первый угол или [Фаска/Уровень/Сопряжение/Высота/Ширина]:»

Укажите первый угол.

Появиться запрос: «Второй угол или [Площадь/Размеры/поВорот]:»

Выберите опцию [Размеры] (щелкните по ней левой кнопкой мыши) или введите с клавиатуры Р и нажмите <Enter>.

На запрос: «Длина прямоугольника <300.0000>:»

Введите, например 400 и нажмите <Enter>.

На запрос: «Ширина прямоугольника <200.0000>:»

Введите, например 200 и нажмите <Enter>.

Появится запрос: «Второй угол или [Площадь/Размеры/поВорот]:»

Укажите направление расположение второго угла относительного первого.

Возможны четыре варианта расположение. Выберем, например: Справа вверх.

Отведите указатель в нужном направлении  (Вправо вверх) и нажмите левую кнопку мыши. См. Рис. 6.

Как нарисовать прямоугольник в Автокаде

Рис. 6. Четыре варианта расположения прямоугольника

Остальные опции используются намного реже. Оставляем их для самостоятельного изучения.

Редактирование прямоугольника.

Иногда, когда прямоугольник построен неверно, бывает легче его отредактировать, чем удалять и строить новый. Давайте посмотрим, что мы можем сделать с уже построенным прямоугольником:

Изменение размеров прямоугольника.

Чтобы изменить размер прямоугольника (например Высоту), щелкните по нему левой кнопкой мыши, так чтобы появились ручки. См. Рис. 7.

Как редактировать прямоугольник

Рис. 7. Ручки прямоугольника.

Щелкните по средней ручке, с той стороны, которую хотите переместить. Ручка должна стать красной.

Отведите указатель мыши в направлении перемещения стороны. См. Рис. 8.

Как редактировать прямоугольник

Рис. 8. Направление изменения.

Введите с клавиатуру,  например 100 и нажмите <Enter>.

Сторона переместится на указанное расстояние в нужном направлении. См Рис. 9.

Как редактировать прямоугольник

Рис. 9. Отредактированный прямоугольник

Перемещение прямоугольника за ручку.

Чтобы, перемести прямоугольник за ручку, щелкните по нему левой кнопкой мыши, так чтобы появились ручки.

Затем, выберите нужную ручку (щелкните по ней левой кнопкой мыши) и нажмите <Enter> (или пробел).

Переместите  прямоугольник  в новое местоположение и нажмите  левую кнопку мыши. См. Рис. 10.

Как нарисовать прямоугольник в Автокаде

Рис. 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.

AutoLISP прямоугольник

Рис. 11. Программа построения прямоугольника.

Давайте, проверим, как работает программа:

Нажмите на кнопку «Загрузить активное окно редактора».

Затем на кнопку перехода в AutoCAD.

Введите в командной строке: m_pr и нажмите <Enter>.

На запрос: «Укажите первый угол прямоугольника:

Укажите первый угол.

Программа построит прямоугольник 500х250. См. Рис. 12.

AutoLISP прямоугольник

Рис. 12. Прямоугольник 500х250

Построение прямоугольника при помощи функций расширения языка 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.

AutoLISP прямоугольник

Рис. 13. Построение прямоугольника Vla функциями.

Нажмите на кнопку «Загрузить активное окно редактора».

Затем на кнопку перехода в AutoCAD.

Введите в командной строке: m_pr и нажмите <Enter>.

На запрос: «Укажите первый угол прямоугольника:

Укажите первый угол.

Программа построит два прямоугольника. См. Рис. 14.

AutoLISP прямоугольник

Рис. 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

На этом наш урок окончен. В нем рассказывалось: Как нарисовать прямоугольник в Автокаде.

Мы рассмотрели следующие аспекты:

Если у Вас появились вопросы, задавайте их в комментариях.

Если Вы нашли что-то полезное на моем сайте не забудьте порекомендовать статью в социальных сетях.

Пишите в комментариях или мне на почту Ваши пожелания о том, какие статьи Вы хотели бы увидеть на моем сайте.

Хотите получать информацию о выходе новых статей. Оформляйте подписку.

До новых встреч.

«Автор: Михаил Орлов»

Также на эту тему Вы можете почитать:

10 комментарии на “Как нарисовать прямоугольник в Автокаде.

  1. Александр 19.05.2015 16:55

    Спасибо за урок. У меня вопрос по массиву (или это лучше сделать через список).
    Есть начальная и конечная точки в плоскости pn (0 10), pk (51 891) соответственно; а также ещё 50 точек между этими (координаты неизвестны). Но известно что каждая следующая точка по Х: увеличивается на 1, а по Y: (координата_по_X * координата_по_X); то есть координаты точки 25 будут (25 625) . Я так понимаю нужен массив или список чтобы по этим 52 точкам построить поллинию. Как загнать в список эти точки?

    • Антон 22.05.2015 14:58

      Если правильно понял, то:

      (setq x1 0
            y1 10
            list_xy '()
            x2 (+ x1 1)
            y2 (* x2 x2))
      (repeat 51
        (setq x2 (+ x2 1)
              y2 (* x2 x2)
              list_xy (append list_xy (list x2 y2 0)))
        )
      
      (vl-load-com)
      (setq acad_application (vlax-get-acad-object))
      (setq active_document (vla-get-activedocument acad_application))
      (setq model_space (vla-get-modelspace active_document))
      (setq list_xy (append (list x1 y1 0) list_xy))
      (setq saf_ar (vlax-make-safearray vlax-vbDouble '(1 . 156)))
      (setq var_coord (vlax-make-variant (vlax-safearray-fill saf_ar list_xy)))
      (vla-AddPolyline model_space var_coord)
      • Михаил Орлов 25.05.2015 21:15

        Список можно составить так:

        (setq x1 0)
        (setq y1 10)
        (setq point (list x1 y1 0))
        (setq list_point (list point))
        
        (repeat 51
          (setq x1 (+ x1 1))
          (setq y1 (* x1 x1))
          (setq point (list x1 y1 0))
          
          (setq list_point (append list_point (list point)))
        )

        Построение полилинии:

        (setq n (* 52 3))
        (setq varcord (vlax-make-variant
        	     (vlax-safearray-fill
        	     (vlax-make-safearray vlax-vbDouble (cons 1 n)) list_point)))
        (setq pl (vla-Addpolyline model_space varcord))
  2. Антон 14.11.2015 10:41

    Добрый день, подскажите пожалуйста, есть ли возможность обрабатывать координаты в формате , то есть на пример, существуют ли vla функции аналогичные polar, car итп? Или работая с объектной моделью придется каждый раз применять конструкции типа: (vlax-safearray->list (vlax-variant-value #))?

  3. Павел 03.05.2017 10:02

    У меня вопрос гораздо проще — почему я могу рисовать прямоугольник только в плоскости ху . То есть он всегда в ней строится, независимо от вида, в котором работаю.

    • Михаил Орлов 03.05.2017 18:21

      По умолчанию все построения происходят в плоскости XY. Но плоскость черчения можно менять (поворот осей, ПСК по трем точкам, ПСК по объекту, ПСК по виду и т.п., т.е. различные опции команды _ucs

  4. Дмитрий 24.12.2018 15:05

    Ищу способ программно указывать сторону смещения прямоугольника с помощью команды _offset.
    Сам только начал изучать и автокад, и автолисп, поэтому очень всё сложно выглядит и не понятно.
    Очень хочется автоматизировать рабочий процесс сразу, минимизируя ручной ввод до ввода размеров прямоугольника. Т.е. мне нужно рисовать очень много прямоугольников разных размеров, потом каждый прямоугольник смещать на фиксированое расстояние внутрь и наружу с присваиванием каждому смещению определённого слоя… и тд и тп
    Загвоздка как раз в автоматизации смещения в нужную сторону!
    Заранее премного благодарен за помощь! И большое спасибо за уроки, они реально помогают!

    • Михаил Орлов 27.12.2018 11:55

      Все про прямоугольники: 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 "")

  5. Анастасия 05.05.2019 18:37

    Спасибо за урок!) Заинтересовало, возможно ли прописать условие, чтобы построить прямоугольник по 2м точкам, которые указывать вручную (функцией getpoint), а оставшиеся две строились по заданной площади прямоугольника?

    • Михаил Орлов 15.05.2019 12:09

      Возможно. Если написать небольшую программку на LISP.

Оставить комментарий

Ваш mail не будет опубликован.

Вы можете использовать HTML теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>