Как стирать объекты в автокаде

Как стирать объекты в автокаде thumbnail

В предыдущем уроке мы начали раздел изучения плоского моделирования и изучили методы создания 2D примитивов. Для того что бы создавать более сложные графические объекты необходимо уметь редактировать плоские объекты. Данный урок посвящен непосредственному изучению вопроса редактирования 2D примитивов.

Редактирование объектов предусматривает возможность удаления, копирования перемещения объектов, изменения их свойств таких, как цвет, вес линий, тип линий и ряда других свойств. Над объектами можно выполнять операции удлинения, обрезания, зеркального отражения, поворота на заданный угол и т.д.

Доступ к командам редактирования осуществляется через:

1. Пункт меню Modify.

2. Панели инструментов Modify.

3. Введение команды с клавиатуры.

modify menu

Команды редактирования

Команда Свойства (Properties)

Способы ввода команды:

  • Набрать с клавиатуры команду: Properties.
  • Вызов меню: Modify ? Properties.
  • Дважды щелкнуть левой кнопкой мыши на объекте.
  • Из контекстного меню объекта выбрать команду Properties.

Данной командой можно изменить свойства одного объекта или общие свойства нескольких выбранных объектов. Команда открывает диалоговое окно Properties, в верхней строке которого содержится список избранных объектов и кнопки:

properties

Окно разделено на две колонки. Первый столбик содержит название свойства, а второй — значение свойства, которое можно изменить.

Команда ERASE (Стереть)

Способы ввода команды:

  • Набрать с клавиатуры команду ERASE.
  • Вызов меню: Modify ? ERASE.
  • Кнопка на панели Modifyerase botton
  • Из контекстного меню объекта выбрать команду Erase.

Допускается выбор объектов до ввода команды или после ввода команды. В первом случае после ввода команды выбранные объекты удаляются. Во втором случае система предлагает выбрать объекты.

В командной строке выводится диалог:

Command: _erase

Select objects: 1 found

Select objects: 1 found, 2 total

Select objects: 1 found, 3 total

Select objects:

После выбора объектов нажмите клавишу Enter. Объекты будут удалены. Если необходимо удалить объект не полностью, а лишь определенную его часть, то используют команды TRIM (Обрезать) и BREAK (Разорвать).

Команда BREAK (Разорвать)

Способы ввода команды:

  • Набрать с клавиатуры команду BREAK.
  • Вызов меню: Modify ? Break.
  • Кнопка на панели Modifybreak botton

Командой удаляется часть объекта между двумя указанными точками. Использование команды позволяет разорвать графический примитив, такой как линия, дуга на два объекта. При удалении части отрезка или дуги первой указывается точка на объекте, а второй — точка за пределами конца, который необходимо удалить. Для круга часть, которая удаляется, задается двумя точками в направлении против часовой стрелки.

break

После ввода команды система выдает запросы:

Command: _break                                                             Команда разорвать.
Select object:                                                                           Выбрать объект или указать первую точку.
Specify second break point or [First point]Указать вторую точку.

Выбор объектов осуществляется после ввода команды.

Команда TRIM (Обрезать)

Способы ввода команды:

  • Набрать с клавиатуры команду TRIM.
  • Вызов меню: Modify ? Trim.
  • Кнопка на панели Modify.  trim botton

Команда обрезает выбранный объект режущей кромкой, которая пересекает его, и может быть дугой, линией, полилинией и т.д.. После ввода команды сначала указывается одна или последовательно выбирается, несколько режущих кромок. Процесс выбора завершается нажатием клавиши Enter. Далее система выдаст запрос на выбор объектов, которые обрезаются. Необходимо указывать ту часть объекта, которая обрезается. Для завершения выбора нажать клавишу Enter.

trim

Работа с командой сопровождается запросам:

Command: TrimКоманда Обрезать
Current settings: Projection = UCS,Edge = NoneSelect cutting edges …Выбрать режущую кромку
Select objects: 1 found Select objects:Первая режущая кромка определена. Выбор режущих кромок можно продолжить или нажать клавишу ENTER, чтобы прекратить выбор кромок.
Select object to trim or shift-select toextend or [Project / Edge / Undo]:                       Выбрать объект, который обрезается. Последовательно можно выбрать несколько объектов прекратить выбор объектов нажатием клавиши ENTER.

Команда EXTEND (Удлинить)

Способы ввода команды:

  • Набрать с клавиатуры команду EXTEND.
  • Кнопка на панели Modifyextend botton

Командой удлиняются графические примитивы (линия, дуга, полилиния, луч, сплайн) до точек пересечения с другими объектами, которые будут предельными кромками. По своему действию она противоположна команде TRIM. после введения команды выдаются запросы на выбор предельных кромок. Прекратить выбор можно нажатием клавиши Enter. Далее система выдает запрос на выбор объектов, которые необходимо продлить. Завершение выбора осуществляется нажатием клавиши Enter. Указывая объекты, нужно показывать край, который ближе к предельной кромке, иначе команда не будет выполняться.

extend

Подсказки системы будут иметь следующий вид:

Command: _extendКоманда Удлинить.
Current settings: Project i on = UCS, Edge = NoneSelect boundary edges …
Select objects: 1 foundПоказать предельную кромку
Select objects:Нажать ENTER
Select object to extend or shift-select to trim or[Project / Edge / Undo]:Выбрать объекты, которые удлиняются
Select object to extend or shift-select to trim or[Project / Edge / Undo]:Нажать ENTER

Команда MOVE (Перемещение)

Способы ввода команды:

  • Набрать с клавиатуры команду MOVE.
  • Вызов меню: MODIFY ? MOVE.
  • Кнопка на панели Modify.  move botton

Для перемещения нужно на выбранном объекте указать базовую точку и задать координаты нового положения базовой точки после перемещения объекта. Координаты задаются любым из способов.

При использовании команды поддерживайте диалог:

Command: moveКоманда Переместить.
Select objects: 1 foundВыберите объект
Select objects:Нажмите Enter.
Specify base point or displacement:Указать базовую точку.
Specify second point of displacement or <use firstpoint as displacement>:Задать координаты для нового положение базовой точки.

Команда COPY (Копировать)

Способы ввода команды:

  • Набрать с клавиатуры команду COPY.
  • Вызов меню: MODIFY ? COPY.
  • Кнопка на панели Modify.  copy botton

Копирование объектов осуществляется аналогично их перемещению.  Разница заключается в том, что образуется копия объекта в заданной позиции с сохранением оригинала.

Команда ROTATE (Повернуть)

Способы ввода команды:

  • Набрать с клавиатуры команду ROTATE.
  • Вызов меню: MODIFY ? ROTATE.
  • Кнопка на панели Modifyrotate botton

Команда совершает поворот объекта на заданный угол относительно базовой точки (центра поворота). Положительным считается значение угла при повороте в направлении против часовой стрелки. Базовую точку можно выбрать при включенном режиме объектной привязки.

Читайте также:  Как часто стирать шерстяную одежду

Диалог с системой:

Command: rotateКоманда Повернуть.
Current positive angle in UCS:ANGDIR = counterclockwiseANGBASE = 0Система выводит текущие параметры значение угла: ANGDIR = против часовой стрелки.
Select objects: 1 foundВыбрать объект.
Select objects:Нажмите Enter.
Specify base point:Указать базовую точку — центр поворота.
Specify rotation angle or [Reference]: 30Задать значение угла в градусах.

Параметр Reference — (опорный угол) позволяет задать вектор и угол поворота данного  вектора. Положение вектора после поворота задает новое положение объекта.

rotate

При выборе параметра поддерживайте диалог:

Command: rotateКоманда Повернуть.
Current positive angle in UCS:ANGDIR = counterclockwiseANGBASE = 0Система выводит текущие параметры значение угла: ANGDIR = против часовой стрелки.
Select objects: 1 foundВыбрать объект.
Select objects:Нажмите Enter.
Specify base point:Указать базовую точку — центр поворота.
Specify rotation angle or [Reference] RВыбор параметра Reference
Specify the reference angle <0>:Указать первую точку вектора (точка 1).
Specify second point:Указать вторую точку вектора (точка 2).
Specify the new angle: 50Ввести значение угла.

Команда MIRROR (Зеркало)

Способы ввода команды:

  • Набрать с клавиатуры команду MIRROR.
  • Вызов меню: MODIFY ? MIRROR.
  • Кнопка на панели Modifymirror botton

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

mirror

Диалог с системой:

Command: _mirrorКоманда Зеркало.
Select objects: 1 foundВыбрать объект.
Select objects:Нажмите Enter.
Specify first point of mirror line:Указать первую точку оси.
Specify second point of mirror line:Указать вторую точку оси
Delete source objects? [Yes / No] <N>: nЗапрос на удаление исходного объекта

Команда SCALE (Масштаб)

Способы ввода команды:

  • Набрать с клавиатуры команду SCALE  .
  • Вызов меню: MODIFY ? SCALE.
  • Кнопка на панели Modify.  scale botton

Пропорциональное увеличение или уменьшение размеров объекта или группы объектов относительно заданной базовой точки. Для увеличения объектов задают коэффициент больше единицы. Для уменьшения объектов коэффициент имеет значение меньше единицы.

scale

Подсказки, которые выдаются системой:

Command  _scaleКоманда Масштаб
Select objects: 1 foundВыбрать объект или группу объектов
Select objects :Нажать Enter
Specify base point:Указать базовую точку
Specify scale factor or [ Reference ] : 2Задать коэффициент масштабирования.

Задать масштабный коэффициент можно интерактивным способом. После выбора базовой точки от нее до перекрестка тянется резиновая нить. Увеличивая или уменьшая ее размер, можно задать значение коэффициента.

Опция Reference (Опорный отрезок) позволяет задать коэффициент масштабирования, введя первоначальную длину отрезка и его новую длину. Коэффициент рассчитывается как отношение второго числа к первому. Длина отрезка при этом может быть определена автоматически как расстояние между двумя указанными с помощью курсора точками .

Используем команду для увеличение объекта в 8 / 5 раз.

Диалог с системой будет иметь вид:

Command : _scaleКоманда Масштаб
Select objects: 1 foundВыбрать объект 1
Select objects: 1 found, total 2Выбрать объект 2
Select objects :Нажать Enter
Specify scale factor or [ Reference ] : rВыбрали опцию Reference.
Specify reference length < 1 > : 5Длинна отрезка.
Specify new length : 8Новая длинна отрезка.

Команда STRETCH (Растянуть)

Способы ввода команды:

  • Набрать с клавиатуры команду STRETCH.
  • Вызов меню: MODIFY ? STRETCH.
  • Кнопка на панели Modify.  stretch botton

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

stretch

Работа с командой сопровождается диалогом:

Command: _stretch  Команда Растянуть.
Select  objects  to  stretch  by  crossing-windowor crossing-polygon…Выбрать объекты секущей рамкой или секущим многоугольником.
Select  objects:  Specify  opposite  corner:  2found

Select objects:Нажать Enter.Specify  base point or displacement:  Выбрать базовую точку.Specify second point of  displacement or <usefirst point as displacement>:Выбрать базовую точку.

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

Команда LENGTHEN (Продлить)

Способы ввода команды:

  • Набрать с клавиатуры команду LENGTHEN.
  • Вызов меню: MODIFY ? LENGTHEN.
  • Кнопка на панели Modifylenghten botton

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

Опции команды:

DElta — значение величины прироста длины.

Percent — значение увеличения или уменьшения длины отрезка или дуги задается в процентном отношении текущего значения к новому. Если задается величина, превышающая 100%, происходит увеличение длины. Если заданная величина менее 100%, происходит уменьшение длины.

Total — позволяет указать новую полную длину объекта. Для дуги можно указать новое значение внутреннего угла.

DYnamic — длина изменяется динамически с помощью курсора.

Команда OFFSET (Сходство)

Способы ввода команды:

  • Набрать с клавиатуры команду OFFSET.
  • Вызов меню: MODIFY ? OFFSET.
  • Кнопка на панели Modify.  offset botton

Команда предназначена для построения примитивов подобных существующих на чертеже. Подобный объект будет построен на заданном расстоянии и в заданной позиции относительно существующего (режим offset distance). Можно также построить подобный объект, проходящей через заданную точку (выбрать опцию Through). Для линии строится параллельная ей линия. Подобным круга является концентрический круг. Подобной дуги является концентрическая дуга с тем же внутренним углом. Для полилинии строится подобная полилиния.

Диалог с системой:

Command: _offsetКоманда Сходство.
Specify offset distance or [Through]<Through>: 15Задать расстояние.
Select object to offset or <exit>:Выбрать объект, для которого строится подобный.
Specify point on side to offset:Показать, с какой стороны объекта строить ему подобный.
Select object to offset or <exit>:* Cancel *
Читайте также:  Когда можно стирать приметы

 Выбрать следующий объект, для которого строится схожий с тем же значением или нажать клавишу ENTER для выхода из режима.

Чтобы выбрать точку, через которую будет проходить подобный объект, поддерживайте диалог:

Command: _offsetКоманда Сходство.
Specify offset distance or [Through]<Through>: TВыбрать режим Through.
Select object to offset or <exit>:Выбрать объект, для которого строится подобный.
Specify through point:Задайте точку, через которую будет проходить подобный объект

Команда FILLET ( Сопряжение )

Способы ввода команды :

  • Набрать с клавиатуры команду FILLET.
  • Вызов меню: MODIFY ? FILLET.
  • Кнопка на панели Modify.  fillet botton

Команда предназначена для выполнения сопряжения двух графических примитивов, а именно: дуг, отрезков, полилиний, дугой заданного радиуса; позволяет закруглить углы, а также может быть использована вместо команд TRIM (Обрезать) и EXTEND (Продлить) при нулевом значении радиуса. При сопряжении двух параллельных отрезков радиус определяется автоматически как половина расстояния между отрезками.

Опции команды:

Polyline — выбор данной опции служит указанием выполнить закругления по всех вершинах полилинии дугой заданного радиуса. Значение радиуса нужно задать заранее. Система выдает запрос — Select 2D polyline : в ответ на который необходимо выбрать полилинию .

Radius — задается значение радиуса закругления в ответ на запрос системы — Specify fillet radius < 0.0000 >: 20

Trim — разрешается (Trim по умолчанию) или запрещается (No trim) подрезать отрезки при закруглении.

mUltiple — многократное выполнение сопряжения в ходе работы с одной командой FILLET .

fillet

Пример диалога с системой:

Command: _filletКоманда Сопряжение.
Current settings: Mode = NOTRIM,Radi us = 0.0000Вывод значений параметров, заданных по умолчанию.
Select first object or[Polyline / Radius / Trim / mUltiple]: RВыбор параметра Radius.
Specifyfilletradius <0.0000>: 70Задать значение радиуса.
Select first object or[Polyline / Radius / Trim / mUltiple]: PВыбор параметра Polyline для закругления всехуглов
Select 2D polyline:Выбрать полилинию.

Команда CHAMFER (Фаска)

Способы ввода команды:

  • Набрать с клавиатуры команду CHAMFER.
  • Вызов меню: MODIFY ? CHAMFER.
  • Кнопка на панели Modify.  chamfer botton

Фаска — это срезанный угол. Построить фаску можно двумя методами:

1. Задать размер фаски — значение дистанции от вершины угла по каждой из сторон.

Система выдаст диалог:

Command: _chamferКоманда Фаска.
(TRIM mode) Current chamfer Dist1 = 0.0000, Di st2 =0.0000Значениепараметров по умолчанию.
Select first line or[Polyline / Distance / Angle / Trim / Method / mUltiple]: dВыбрать опцию Distance.
Specifyfirstchamferdistance <0.0000>: 30Задать первое значение дистанции.
Specify second chamfer distance <30.0000>: 30Задать второе значение дистанции.
Select first line or[Polyline / Distance / Angle / Trim / Method / mUltiple]Выбрать первую сторону.
Select second line:Выбрать другую сторону.

2. Задать значение размера фаски по первой стороне и значение угла в градусах относительно первого выбранного отрезка.

Для данного метода диалог системы будет таким:

Command: _chamferКоманда Фаска.
(TRIM mode) Current chamfer Dist1 = 0.0000, Di st2 =0.0000Значениепараметров по умолчанию.
Select first line or[Polyline / Distance / Angle / Trim / Method / mUltiple]: aВыбрать опцию Angle.
Specify chamfer length on the first line <0.0000>: 40Задать значение дистанции.
Specify chamfer angle from the first line <0>: 75Задать значение угла.
Select first line or[Polyline / Distance / Angle / Trim / Method / mUltiple]Выбрать первую сторону.
Select second line:Выбрать другую сторону.

 chamfer 2

Опции команды:

Polyline —  используется, чтобы построить фаску сразу во всех вершинах полилинии.

Distance —  задается размер фаски по каждой и из сторон.

Angle — задается размер фаски по первой и стороне и значение угла относительно первого отрезка.

Trim — в режиме Trim (задается по умолчанию) линии обрезаются. При нулевом смысле дистанции можно задать обрезку линий, которые пересекаются. No Trim — фаска создается без обрезки. При нулевом значении дистанции линии, которые не имеют общих точек, удлиняются до точки пересечения.

Method — выяснение, какой метод активный Distance или Angle.

mUltiple — многократное построение фаски в ходе работы с одной командой CHAMFER.

На этом знакомство с командами редактирования плоских объектов законченно. А в следующей уроке мы изучим методы нанесения размеров и штриховки.

Источник

  1. Klodik

    Форумчанин

    Регистрация:
    23 июн 2011
    Сообщения:
    241
    Симпатии:
    6
    Адрес:

    vladivostok

    Привет всем есть дилема которую не могу решить. На скриншоте зеленым то что нужно оставить , остальное обрезать. Стандартными инструментами автокада это ОООчень долго. Есть ли что-нибудь полегче инструмента “Обрезать”?

    Вложения:

    • Screenshot_1.jpg

    #1

  2. Ламаград

    Форумчанин

    Может заметочка эта поможет:

    Вложения:

    • P90422-093733.jpg

    #2

    Qvinto и dda нравится это.

  3. sergtor

    Форумчанин

    Регистрация:
    23 сен 2012
    Сообщения:
    1.603
    Симпатии:
    526
    Адрес:

    Ухта

  4. АлексЮстасу

    Форумчанин
    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.556
    Симпатии:
    576
    Адрес:

    Маськва

    Специальная команда MAPTRIM из Map 3D.

    Альтернативный вариант – накрыть ненужное маской – _WIPEOUT.
    В т.ч. был lisp, позволяющий пачкой сделать маски для всех указанных контуров.

    #4

  5. Klodik

    Форумчанин

    Регистрация:
    23 июн 2011
    Сообщения:
    241
    Симпатии:
    6
    Адрес:

    vladivostok

    Уже нашел этот лисп вчера. Он выделил все объекты внутри контура. НО горизонтали цельные, они не выделяются.

    — Сообщения объединены, 22 апр 2019, Оригинальное время сообщения: 22 апр 2019 —

    Это потом сдавать нужно, там маски увы не принимают. Все по их стандартам (((

    — Сообщения объединены, 22 апр 2019 —

    Нашел тул пак, скажем так “Купил” за 435 баксов. ( ну и цены же). Захожу по пути как написано, он мне предлагает Y/N , жму N , и ничего не происходит… может мой “купленный” тул пак с браком ?

    — Сообщения объединены, 22 апр 2019 —

    Весь файл не загружается к сожалению, пишет что слишком большой.

    #5

  6. АлексЮстасу

    Форумчанин
    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.556
    Симпатии:
    576
    Адрес:

    Маськва

    Предложить принимающим товарищам улучшение – маски. Улучшение, т.к. сохраняются данные, в т.ч. цельные горизонтали и пр.
    Попробуйте сначала сделать Break, а потом уже удалять.

    Обрезал MAPTRIM. На юго-западе замкнул формально – не знал, как нужно.
    Блоки не резал.
    MAPTRIM.png

    #6

    Последнее редактирование: 22 апр 2019

    geo_rva и Klodik нравится это.

  7. Klodik

    Форумчанин

    Регистрация:
    23 июн 2011
    Сообщения:
    241
    Симпатии:
    6
    Адрес:

    vladivostok

    Результат прям нравится.
    Ушел качать мап 3 д.
    А можно полный путь куда зайти и что нажать?

    #7

  8. АлексЮстасу

    Форумчанин
    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.556
    Симпатии:
    576
    Адрес:

    Маськва

    Вы чуть ли не первый, кто повелся. 🙂 Остальные железобетонно упираются на базовом Автокаде! Как будто это форум не геодезистов, а конструкторов или проектировщиков…

    MAPTRIM в комстроке и нажать. 🙂
    А в меню здесь:
    MAPTRIM_call.png

    #8

  9. by_kortez

    Регистрация:
    8 май 2009
    Сообщения:
    16
    Симпатии:
    22

  10. kheylan66

    Форумчанин

    Обрезать и Стереть
    Обрезает, а при желании, удаляет примитивы внутри или снаружи относительно выбранного объекта
    ^C^C^P(if (not C:CC) (load “CookieCutter2”));^PCC;

    PS. Файл.lsp разместить в путях доступа AutoCAD

    #10

  11. Alex_Shaton

    Форумчанин
    Форумчанин

    Хорошая штука, но очень внимательно смотрите мультилинии, они удаляются.

    #11

  12. АлексЮстасу

    Форумчанин
    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.556
    Симпатии:
    576
    Адрес:

    Маськва

    Очень даже ничего штука!
    Но также удаляются попавшие на границы штриховки, тексты, и разбиваются блоки.

    #12

  13. agajohn

    Форумчанин

    Регистрация:
    3 апр 2013
    Сообщения:
    300
    Симпатии:
    167
    Адрес:

    Москва

  14. Alex_Shaton

    Форумчанин
    Форумчанин

    Никто ж и не спорит – лисп стоящий, но внимательно нужно смотреть мультилинии, по остальным примитивам вопросов нет. Я еще в качестве резерва использую такой лисп. Правда, плохо обрезает прерывистые линии, но зато с мультилиниями без проблем.

    #14

  15. kheylan66

    Форумчанин

    по нежнее будут команды, чем предыдущая
    Обрезать окном
    Вырезка окном, обрезает и удаляет
    ^C^C^P(setq *error* CadalystErr)(load “Trim-In-Out”) ti;
    и
    Обрезать полосой
    Вырезка полосой вокруг рамки, шириной, которую укажем
    ^C^C^P(setq *error* CadalystErr)(load “Trim-In-Out”) to;

    PS. Файл.lsp разместить в путях доступа AutoCAD

    #15

  16. АлексЮстасу

    Форумчанин
    Форумчанин

    Регистрация:
    28 май 2012
    Сообщения:
    1.556
    Симпатии:
    576
    Адрес:

    Маськва

    В смысле – “вопросов нет”?
    Кроме удаления мультилиний

    #16

  17. BlowSmoke

    Регистрация:
    17 июн 2019
    Сообщения:
    2
    Симпатии:
    0

    При отрисовке топосъёмки появилась необходимость вырезать из уже готового чертежа часть хаотичной формы, и именно вырезать, не просто скрыть, а обрезать объекты по контуру и удалить. Есть ли какие-нибудь lispф?

    #17

  18. agajohn

    Форумчанин

    Регистрация:
    3 апр 2013
    Сообщения:
    300
    Симпатии:
    167
    Адрес:

    Москва

  19. burvil

    Форумчанин

    Регистрация:
    15 июл 2013
    Сообщения:
    149
    Симпатии:
    41
    Адрес:

    Москва

  20. Patron

    Patron
    Бронебойный Старожил

    Форумчанин

    Регистрация:
    28 июн 2007
    Сообщения:
    1.627
    Симпатии:
    1.552
    Адрес:

    Москва

    Под acad:

    1. Оконтурить участок замкнутым полигоном

    2. С помощью лиспа (спойлер)

    lisp (раскрыть)

    (defun SelectContour ( opt / en ss lst)
    (defun DTR (a)(* pi (/ a 180.0)))
    (defun lib:pt_extents (vlist / tmp)
    (setq tmp (mapcar ‘(lambda (x) (vl-remove-if ‘null x))
    (mapcar ‘(lambda (what) (mapcar ‘(lambda (x) (nth what x)) vlist))
    ‘(0 1 2))));_setq
    (list (mapcar ‘(lambda(x)(apply ‘min x)) tmp)(mapcar ‘(lambda(x)(apply ‘max x)) tmp)))
    (defun lib:IsPtInView (pt / VCTR Y_Len SSZ X_Pix Y_Pix X_Len Lc Uc)
    (setq pt (trans pt 0 1))
    (setq VCTR (getvar “VIEWCTR”) Y_Len (getvar “VIEWSIZE”)
    SSZ (getvar “SCREENSIZE”)
    X_Pix (car SSZ) Y_Pix (cadr SSZ)
    X_Len (* (/ X_Pix Y_Pix) Y_Len)
    Lc (polar VCTR (dtr 180.0) (* 0.5 X_Len))
    Uc (polar Lc 0.0 X_Len)
    Lc (polar Lc (dtr 270.0) (* 0.5 Y_Len))
    Uc (polar Uc (dtr 90.0) (* 0.5 Y_Len)))
    (if (and (> (car pt) (car Lc))(< (car pt) (car Uc))
    (> (cadr pt) (cadr Lc))(< (cadr pt) (cadr Uc)))
    T nil))
    (defun lib:Zoom2Lst( vlist / bl tr Lst OS)
    (setq Lst (lib:pt_extents vlist) bl (car Lst) tr (cadr Lst))
    (if (not (and (lib:IsPtInView bl) (lib:IsPtInView tr)))
    (progn (setq OS (getvar “OSMODE”))(setvar “OSMODE” 0)
    (command “_.Zoom” “_Window” (trans bl 0 1)(trans tr 0 1)
    “_.Zoom” “0.95x”)
    (setvar “OSMODE” OS) T) NIL))
    (defun TraceObject (obj / typlst typ TracePline TraceACE TraceLine
    TraceSpline TraceType1Pline
    TraceType23Pline)
    (defun ZClosed (lst)
    (if (and (vlax-curve-isClosed obj)
    (not(equal (car lst)(last lst) 1e-6)))
    (append lst (list (car lst)))
    lst))
    (defun TracePline (obj / param endparam anginc tparam pt blg
    ptlst delta inc arcparam flag)
    (setq param (vlax-curve-getStartParam obj)
    endparam (vlax-curve-getEndParam obj)
    anginc (* pi (/ 7.5 180.0)))
    (setq tparam param)
    (while (<= param endparam)
    (setq pt (vlax-curve-getPointAtParam obj param))
    (if (not (equal pt (car ptlst) 1e-12))
    (setq ptlst (cons pt ptlst)))
    (if (and (/= param endparam)
    (setq blg (abs (vlax-invoke obj ‘GetBulge param)))
    (/= 0 blg))
    (progn
    (setq delta (* 4 (atan blg)) ;included angle
    inc (/ 1.0 (1+ (fix (/ delta anginc))))
    arcparam (+ param inc))
    (while (< arcparam (1+ param))
    (setq pt (vlax-curve-getPointAtParam obj arcparam)
    ptlst (cons pt ptlst)
    arcparam (+ inc arcparam))))
    )
    (setq param (1+ param)))
    (if (and (apply ‘and ptlst)
    (> (length ptlst) 1))
    (ZClosed (reverse ptlst)))) ;end
    (defun TraceACE (obj / startparam endparam anginc
    delta div inc pt ptlst)
    (setq startparam (vlax-curve-getStartParam obj)
    endparam (vlax-curve-getEndParam obj)
    anginc (* pi (/ 5.0 180.0)))
    (if (equal endparam (* pi 2) 1e-12)
    (setq delta endparam)
    (setq delta (NormalAngle (- endparam startparam))))
    (setq div (1+ (fix (/ delta anginc)))