Самопересечение (self-intersecting)
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Самопересечение (self-intersecting)

Самопересечение (self-intersecting)

Ответ
Поиск в этой теме
Непрочитано 09.03.2010, 12:31 #1
Самопересечение (self-intersecting)
hwd
 
C, C++, C#
 
С-Пб.
Регистрация: 07.10.2009
Сообщений: 2,762

Проблема:
Создаю контур полининии, выдавить которую затем не удаётся, т.к. Автокад утверждает, что имеется самопересечение, которого на самом деле вроде нет...

Пошаговые действия:
1. На вспомогательном слое создаю окружность диаметром 500.
2. На том же слое командой _divide делю её на 50 равных частей, создавая тем самым множество объектов "Point".
3. Соединяю две соседние точки на дуге прямой линией, из середины которой, перпендикулярно, в сторону центра окружности,черчу линию, длиной 10.
Результат выглядит так:



4. По трём точкам вычерчиваю дугу:



5. Удаляю вспомогательные прямые линии, оставив только дугу.
6. На основном слое (не вспомогательном) создаю круговой массив дуг, указав в качестве центра - центр основной окружности, и количество - 50 шт. Выделяю все дуги и в окне свойств убеждаюсь, что их 50 шт.
7. Выключаю вспомогательный слой.
8. Вызываю команду _pedit, выбираю одну из дуг, указываю опцию _Y, затем вызываю опцию _j, выделяю все созданные круговым массивом дуги, затем жму два раза Enter. Т.о. получилась замкнутая полилиния:



9. Проверяю свойство созданной полилинии: Closed = Yes.
На всякий случай смотрю ближе места стыков:



Вижу, что контур сам себя нигде не пересекает (т.е. на этот счёт я спокоен).
Т.е. теоретически при выдавливании проблем возникнуть не должно.
10. Запускаю команду _extrude, указываю свою полилинию и получаю сообщение:
Cannot sweep or extrude a self-intersecting curve.
Но ведь самопересечения на самом деле нет....
Количество сегментов у меня равно количеству точек, т.е. дуги нигде не накладываются др. на др.
Однако, если полученную полилинию отмасштабирую с коэф. 1.1, то выдавить удаётся.
Баг, или я где-то ошибся?

п.с. файл здесь

Последний раз редактировалось hwd, 09.03.2010 в 12:44.
Просмотров: 8765
 
Непрочитано 09.03.2010, 12:47
#2
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,379


в 2008-ом проблем не вызвало. для чего использовать команду _pedit? здесь уместней использовать _boundary, а вместо _circle- _polygon
PS при копировании "самопересекающейся" фигуры в новый файл- выдавливание происходит.
Миниатюры
Нажмите на изображение для увеличения
Название: spx8.jpg
Просмотров: 80
Размер:	16.7 Кб
ID:	34912  

Последний раз редактировалось Хмурый, 09.03.2010 в 12:59.
Хмурый вне форума  
 
Автор темы   Непрочитано 09.03.2010, 13:06
#3
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Хмурый Посмотреть сообщение
в 2008-ом проблем не вызвало.
у меня 2009 SP3 Enu.

Цитата:
Сообщение от Хмурый Посмотреть сообщение
для чего использовать команду _pedit?
чтобы преобразовать дуги в полилинии и затем объединить их в единый замкнутый объект, который можно было бы выдавить.
Согласен, можно юзать и _boundary, однако даже если я использую эту команду - получаю то же самое сообщение... После _boundary остаются исходные примитивы, которые затем приходится удалять, так что по скорости получения результата - что boundary, что pedit - не сильно отличаются.
hwd вне форума  
 
Непрочитано 09.03.2010, 13:08
#4
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,379


hwd, точность углов попробуй выставить четыре знака после запятой (_units) до построения массива.
Хмурый вне форума  
 
Автор темы   Непрочитано 09.03.2010, 13:14
#5
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от Хмурый Посмотреть сообщение
hwd, точность углов попробуй выставить четыре знака после запятой (_units) до построения массива.
Спасибо, это сработало, хотя я так и не понял, где там были "самопересечения"...
hwd вне форума  
 
Непрочитано 09.03.2010, 13:20
#6
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,379


неточно углы в круговом массиве рассчитывались
Хмурый вне форума  
 
Непрочитано 09.03.2010, 13:26
#7
BM60


 
Регистрация: 08.02.2008
Где-то
Сообщений: 8,460


Цитата:
Сообщение от hwd Посмотреть сообщение
где там были "самопересечения"...
Может это хвосты дуг, выходившие за окружность?
А после _boundary они уже не принадлежат будущему контуру? Или соблюден назначенный допуск замкнутости?
А размер точек как настроен - относительно ... или в абс. единицах (в одном случае их можно легко не увидеть и не удалить потом...)?
__________________
Я дарю не рыбу, а удочку и море.
www.zodchii.ws,
Библиотеки электронных книг
Download
BM60 вне форума  
 
Автор темы   Непрочитано 09.03.2010, 13:45
#8
hwd

C, C++, C#
 
Регистрация: 07.10.2009
С-Пб.
Сообщений: 2,762
Отправить сообщение для hwd с помощью Skype™


Цитата:
Сообщение от BM60 Посмотреть сообщение
Может это хвосты дуг, выходившие за окружность?
Не должно быть, т.к. при вычерчивании дуг я указывал точки с помощью привязки, а точки находятся непосредственно на окружности. Кроме того - я приближал и смотрел стыки.
Цитата:
Сообщение от BM60 Посмотреть сообщение
А после _boundary они уже не принадлежат будущему контуру? Или соблюден назначенный допуск замкнутости?
Этого не понял.
Цитата:
Сообщение от BM60 Посмотреть сообщение
А размер точек как настроен - относительно ... или в абс. единицах (в одном случае их можно легко не увидеть и не удалить потом...)?
В относительных конечно.

Последний раз редактировалось hwd, 09.03.2010 в 13:50.
hwd вне форума  
 
Непрочитано 09.03.2010, 14:06
#9
BM60


 
Регистрация: 08.02.2008
Где-то
Сообщений: 8,460


hwd, плиния очень капризна или очень привередлива. Попробуй теперь начертить одну дугу и размножить её круговым массивом с точностью угла до секунд. Потом преобразуй в регион и выдави. Может промежуточных телодвижений и не потребуется?
1. Окружность Д - вокруг её центра массив "раскрутится"
2. Окружность д - на первой нужного радиуса
3. Отрезать наружную часть малой окружности - имеем нижнюю дугу
4. Массив круговой для неё
5. Делаем регион (и контур для эксперимента)
6. Выдавливаем.
Так не проще получится (если получится и если я чего-то не пропустил)?
__________________
Я дарю не рыбу, а удочку и море.
www.zodchii.ws,
Библиотеки электронных книг
Download
BM60 вне форума  
 
Непрочитано 09.03.2010, 14:22
#10
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,408


Цитата:
Сообщение от hwd Посмотреть сообщение
я приближал и смотрел стыки.
Такое не всегда прокатывает, насколько я помню.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > AutoCAD > Самопересечение (self-intersecting)



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программа: самопересечение полилинии Torino Программирование 4 04.12.2004 16:16