Самопересечение (self-intersecting)
Проблема:
Создаю контур полининии, выдавить которую затем не удаётся, т.к. Автокад утверждает, что имеется самопересечение, которого на самом деле вроде нет.
Пошаговые действия:
1. На вспомогательном слое создаю окружность диаметром 500.
2. На том же слое командой _divide делю её на 50 равных частей, создавая тем самым множество объектов «Point».
3. Соединяю две соседние точки на дуге прямой линией, из середины которой, перпендикулярно, в сторону центра окружности,черчу линию, длиной 10.
Результат выглядит так:
4. По трём точкам вычерчиваю дугу:
9. Проверяю свойство созданной полилинии: Closed = Yes.
На всякий случай смотрю ближе места стыков:
Вижу, что контур сам себя нигде не пересекает (т.е. на этот счёт я спокоен).
Т.е. теоретически при выдавливании проблем возникнуть не должно.
10. Запускаю команду _extrude, указываю свою полилинию и получаю сообщение:
Cannot sweep or extrude a self-intersecting curve.
Но ведь самопересечения на самом деле нет.
Количество сегментов у меня равно количеству точек, т.е. дуги нигде не накладываются др. на др.
Однако, если полученную полилинию отмасштабирую с коэф. 1.1, то выдавить удаётся.
Баг, или я где-то ошибся?
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Сообщения 7
#1 Тема от Дмитрий 30 января 2008г. 15:17:51
Здравствуйте!
При выдавливание (Extrude) замкнутой полилинии,а также прямоугольников для построения 3Д тела, периодически автокад 2007 выдает сообщение в командной строке, что линия является самопересекающейся кривой и выдавить ее не удается. Что это может быть? и как данную полилинию или другую фигуру привести в нормальный вид и как этого избежать в дальнейшим?
#2 Ответ от Александр Ривилис 30 января 2008г. 15:42:57
#3 Ответ от Дмитрий 30 января 2008г. 16:43:14
Но, а как же тогда понять, когда рисуешь прямоугольник командой _rectang по двум точкам, а он всё равно пишет, что невозможно выдавить т.к. самоперес.
#4 Ответ от Александр Ривилис 30 января 2008г. 16:49:35
> Дмитрий
А вот такого быть не должно.
#5 Ответ от Atol 31 января 2008г. 11:38:19
> Александр Ривилис
Дело может быть не только во взаимопересечении внутри полилинии траектории/профиля, а и в возможном взаимопересечении объемов тела. Во вреня движения по траектории профиля на последующих сегментах траектории происходит накладка на объем, полученный на предыдущих.
#6 Ответ от ttt 2 февраля 2008г. 20:43:18
Дело может быть не только во взаимопересечении внутри полилинии траектории/профиля, а и в возможном взаимопересечении объемов тела.
Важная для меня информация. Попытался воспроизвести. Не получилось. Можете привести пример или источник информации.
#7 Ответ от Atol 3 февраля 2008г. 17:04:33
> ttt
Источник:
«И опыт, сын ошибок. «
Попробуй пустить контур, пересекающий сам себя
Или построить тело вращения, ось которого также пересекает контур, а не по внешней грани.
Подобное пересечение возможно и при выдавливании по траектории, которая не пересекает себя. Все зависит от того, какой край\узел контура будет перемещаться по указанной траектории. Если представить движение других узлов, то их траектория как раз и может оказаться самопересекающая, что и является ошибкой построения тела.
почему не выдавливает?
Вот что коммандная строки указывает:
Команда: _presspull
Нажмите кнопку мыши в области контура для вытягивания.
Извлечено: 0 замкнутых контуров
Создано: 0 области(ей).
Lovemurder, команду _extrude используешь? дело в том что у опции _extrude команды _solidedit точно такая-же иконка.
только _extrude
_presspull- для блондинок
Что посоветуете начинающему для создания пространственного моделирования объектов(жилые дома, здания и т.п.)?
а.) Делать каркас объектов в автокаде, и потом импортировать в 3дмакс, накладывая там материалы, малые архитектурные формы вставляя, разлаживать свет и т.п.;
б.) Послать 3д-Автокад в болото, и делать все с нуля в 3д-Максе.
в.) Ваш вариант.
П.с. имею опыт работы только в 2д-автокаде, фотошопе.
Спасибо за ответ.
ведущий инженер отдела автоматизации проектных работ
Как я говорю своим подопечным: «ВНИМАТЕЛЬНО смотрим в текстовое окно!» Итого, что мы имеем при запуске выдавливания:
Команда: _extrude
Текущая плотность каркаса: ISOLINES=4, Режим создания замкнутых профилей = Тело
Выберите объекты для выдавливания или [РEжим]: _MO Режим создания замкнутых
профилей [Тело/Поверхность] : _SO
Выберите объекты для выдавливания или [РEжим]: найдено: 1
Выберите объекты для выдавливания или [РEжим]: РE
Режим создания замкнутых профилей [Тело/Поверхность] :
Догадываетесь, какой режим нужно выбрать для получения тела? 
Свиридов, не знаю какой у вас Автокад, но мой 2007 был весьма немногословен при возникновении нашей вышеописанной спорной ситуации. А именно, именно вещал оное:
Команда: _extrude
Текущая плотность каркаса: ISOLINES=4
Выберите объекты для выдавливания: найдено: 1
Выберите объекты для выдавливания:
Высота выдавливания [Направление/Траектория/Угол сужения] :
Все. И получается пустотная форма, не так как «чертится» с нуля. Откуда вы взяли все эти «рэ», «со»?
Вывод проблемы судя по всему такова: не важно, что ты вставил из буфера, возьми нарисуй это еще раз, и Выдави/вытяни. Получается ограниченная функциональность ;(.
Но небольшое отступление. Что по сообщению номер #9. А, б, в? Ваше имхо?
ведущий инженер отдела автоматизации проектных работ
Нельзя выдавить самопересекающуюся кривую автокад
![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
Тела и поверхности можно получать посредством выдавливания выбранных объектов. Для построения тела или поверхности на основе контура пересечения объекта служит команда ВЫДАВИТЬ.
Если осуществляется выдавливание замкнутого объекта, получается тело. Если осуществляется выдавливание незамкнутого объекта, получается поверхность.
Операцию выдавливания можно применить к следующим объектам и подобъектам:
Невозможно получить операцией выдавливания следующие объекты.
Если заданная полилиния имеет ширину, эта ширина игнорируется, и полилиния выдавливается из центра своей траектории. Если выбранный объект имеет толщину, эта толщина игнорируется.
Для построения тела на основе контура с использованием отрезков или дуг служит параметр «Соединить» команды ПОЛРЕД, чтобы преобразовать их в единый объект полилинии. Перед использованием команды ВЫДАВИТЬ можно также преобразовать объекты в область.
При выдавливании объектов задаются любые из следующих параметров:
задание траектории для тела выдавливания
Параметр «Траектор» служит для задания объекта в виде траектории для выдавливания. Для построения тела или поверхности контур выбранного объекта выдавливается вдоль выбранной траектории. Наилучшие результаты достигаются, если траектория лежит на или внутри границы выдавливаемого объекта.
Операция выдавливания отличается от операции сдвига. При выдавливании контура вдоль траектории, если она уже не пересекает контур, траектория перемещается к контуру. Затем контур сдвигается вдоль траектории.
Тело выдавливания начинается в плоскости исходного контура и заканчивается в плоскости, перпендикулярной траектории в ее конечной точке.
Траекториями могут быть следующие объекты:
Задание угла конуса для тела выдавливания
Конусное выдавливание часто применяется при рисовании объектов с наклонными сторонами; например, литейных форм. Не рекомендуется задавать большие углы сужения. Если угол слишком большой, образующие конуса могут сойтись в одну точку до того, как будет достигнута требуемая глубина выдавливания.
Задание направления для тела выдавливания
Параметр «Направление» позволяет задать длину и направление выдавливания посредством указания двух точек.
AutoCAD
Не удалось извлечь оглавление
ВЫДАВИТЬ (команда)
Создание 3D-тела из объекта, ограничивающего область, или 3D-поверхности из объекта с открытыми концами.
Объекты можно выдавить ортогонально из плоскости исходного объекта, в указанном направлении или вдоль выбранной траектории. Можно также указать угол конуса.
Системная переменная DELOBJ определяет, будут ли исходные объекты или выбранная траектория удаляться автоматически после построения тела или поверхности, или для этого будет появляться запрос.
Могут использоваться следующие объекты и подобъекты.
| Тип объекта | Может быть выдавлен? | Может стать траекторией выдавливания? | Заметки |
|---|---|---|---|
| 3D грани | X | ||
| Дуги | X | X | |
| Круги | X | X | |
| эллипсы | X | X | |
| Эллиптические дуги | X | X | |
| Спирали | X | ||
| Oтрезки | X | X | |
| Сети: грани | |||
| Сети: кромки | Нажмите клавишу CTRL и используйте гизмо для изменения местоположения кромки. | ||
| 2D полилинии | X | X | |
| 3D полилинии | X | X | |
| Области | X | ||
| 2D тела | X | ||
| 3D тела: кромки | X | X | |
| 3D тела: грани | X | ||
| Сплайны: 2D и 3D | X | X | |
| Поверхности: кромки | X | X | |
| Поверхности: плоские и пространственные | X |
Отображаются следующие запросы.
Объекты для выдавливания
Задание выдавливаемых объектов.
Управление типом выдавливаемого объекта (тело или поверхность).
Поверхности выдавливаются как NURBS-поверхности либо как процедурные поверхности в зависимости от значения системной переменной SURFACEMODELINGMODE.
Выдавливание выбранных объектов в положительном или отрицательном направлении по оси Z. Направление рассчитывается на основе ПСК, установленной в момент создания объекта, или (при выборе нескольких объектов) на основании исходной ПСК для последнего созданного объекта.
Задание длины и направления выдавливания с помощью двух указанных точек. (Направление выдавливания не может быть параллельным плоскости кривой сдвига, созданной выдавливанием).
Задание траектории выдавливания на основе выбранного объекта. Траектория перемещается к центру тяжести профиля. Затем профиль выбранного объекта выдавливается вдоль выбранной траектории для создания тел или поверхностей.
Траектория не должна принадлежать той же плоскости, что и объект, и не должна иметь участков большой кривизны.
Выдавливание начинается от плоскости объекта и сохраняет его ориентацию относительно траектории.
Если в траектории имеется излом, программа выполняет выдавливание объекта в направлении каждого сегмента, а затем выполняет в месте соединения скос в плоскости, делящей пополам угол между сегментами. Если траектория замкнута, объект должен лежать в плоскости скашивания. Только в этом случае начальное и конечное сечения тела будут совпадать. Если объект не лежит в плоскости скашивания, он будет поворачиваться до тех пор, пока не окажется в плоскости скашивания.
Объекты с несколькими замкнутыми контурами выдавливаются таим образом, что в конечном сечении выдавленного тела все контуры оказываются лежащими в одной плоскости.
Значение угла конуса для выдавливания.
Положительные величины угла сужают объект, отрицательные — расширяют его. По умолчанию угол задан равным 0, а 2D объекты выдавливаются перпендикулярно их 2D плоскости. Расширение и сужение всех выбранных объектов и замкнутых контуров выполняется в соответствии с одним и тем же значением угла конуса.
Задание слишком больших значений угла конусности или глубины выдавливания может привести к тому, что объект сузится до нуля, не достигнув заданной высоты.
Отдельные замкнутые контуры области всегда выдавливаются на одну глубину.
При конусном выдавливании дуги ее центральный угол остается постоянным, а радиус изменяется.
Перемещайте курсор по горизонтали для назначения и предварительного просмотра угла конуса. Также можно перетащить курсор для корректировки и предварительного просмотра высоты выдавливания. Начало динамического ввода должно размещаться на выдавленной поверхности, на проекции точки на поверхность.
При выборе выдавленного объекта положение ручки конуса соответствует точке начала динамического ввода на верхней грани выдавленного объекта.
Введите формулу или уравнение для задания высоты выдавливания.
























