Перейти к содержанию

Рекомендуемые сообщения

Добрый день! В процессе освоения возникла задача: есть контур, обведенный отрезками и дугами полилиний. Объекты отдельные, но крайние точки совпадают, таким образом визуально контур замкнут. Необходимо объединить все полилинии в одну замкнутую. В версии НаноКАД 1.2 была вообще замечательная команда объединения отрезков, когда выделялись все отрезки, и одним кликом получалась замкнутая полилиния. В версии 4 я этой команды не нашел. Хотел воспользоваться "автокадовским" методом: взять одну из полилиний, войти в режим редактирования, нажать "добавить", выбрать остальные и завершить команду. И все бы хорошо, но контур при такой схеме не замыкается (в автокаде замыкался), хотя начальная и конечная точка совпадают. Если выбрать опцию "замкнуть", то контур в принципе замкнется, но точки начала и конца не сплавятся, а между ними будет отрезок нулевой длины, что не допустимо и может породить в дальнейшем проблемы при делении отрезка и прочем редактировании. Единственный способ который я нашел это удалить один из прямых отрезков, объединить все остальные и нажать "замкнуть". Но во-первых это не очень удобно, а во-вторых, бывают ситуации когда контур состоит только из дуг, и в этом случае способ не работает.

 

Прошу подсказки в решении данной задачи. Заранее благодарен.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если все конечные точки совпадают, то Черчение-Контур.

Или тупо обвести.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если все конечные точки совпадают, то Черчение-Контур.

 

Черчение-Контур повзоляет указать контур только путем указания внутренней точки, как при заливке (по крайней мере других вариантов я не нашел). Это во-первых алгоритмически криво (чего стоит только одно требование чтобы область полностью вписывалась в экран), а во-вторых, должны отсутствовать какие-либо посторонние объекты, которые пересекают или находятся внутри контура, а в достаточно навороченном чертеже это весьма проблематично. Задача как раз в том и состояла, чтобы не ползьзоваться алгоритмически кривой заливкой по внутренней точке, а сделать замкнутый контур, и кошерно его залить через выбор контура.

 

Или тупо обвести.

 

Ну этот вариант понятен, но не рационален - контур может быть достаточно сложным. Хотя как крайняя мера - да, остается. Но все-таки хотелось бы найти более "красивое" решение, тем более что не только в автокаде, а даже в более ранних версиях нанокада такое решение было.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

... взять одну из полилиний, войти в режим редактирования, нажать "добавить", выбрать остальные и завершить команду. И все бы хорошо, но контур при такой схеме не замыкается (в автокаде замыкался), хотя начальная и конечная точка совпадают.

Здесь вы верно заметили, спасибо, внесено предложение сразу строить замкнутую полилинию.

 

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

Вырожденный отрезок нулевой длины, увы, получить не удалось. Возможно это происходит в каком-то частном случае (контуров ведь великое множество может быть).

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

Заранее спасибо.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

К сожалению ни того ни другого вставить не смог. Напрямую вставка картинки не дает сохранить сообщение, загрузил и скрин и файл на файлы.мейл.ру - не дает отправить. Так что извините. Но вырожденный отрезок возникает всегда. Он находится между последней и первой точкой замкнутой полилинии, поскольку координаты этих точек совпадают. Для того, чтобы убедиться в его наличии достаточно сделать PEdit -> Вершины -> Переместить с первой или последней точкой.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Нажмите ниже чуть окна "Ответить" кнопку "Расширенная форма", станут доступны кнопки выбора и загрузки файла.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но вырожденный отрезок возникает всегда. Он находится между последней и первой точкой замкнутой полилинии, поскольку координаты этих точек совпадают. Для того, чтобы убедиться в его наличии достаточно сделать PEdit -> Вершины -> Переместить с первой или последней точкой.

Позвольте тут с вами не согласиться: перемещение по вершинам говорит только о том, что первая и последняя вершина полилинии совпадают. И ни в коей мере о том, что в связи с этим там находится отрезок нулевой длины (почему именно отрезок, а не сегмент полилинии или вырожденная дуга?).

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

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

Перемещаться по вершинам, чтобы в этом убедиться, также лучше при помощи окна Свойства (строка Вершина, при клике в поле значения строки отображаются стрелки влево-вправо для перемещения по вершинам).

 

Проверить наличие (или отсутствие) вырожденного отрезка можно так:

- построить контур,

- Ctrl+A (или "Выбрать все" в ПКМ),

- в строке Объекты окна Свойства посмотреть в раскрывающемся списке какие объекты попали в выбор.

 

Кстати, если есть отрезок, можно выбрать его в списке, нажать кнопку "Оставить в выборе", и либо удалить (если вырожденный), либо перенести, скопировать и прочее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В версии НаноКАД 1.2 была вообще замечательная команда объединения отрезков

 

Это да.

 

Вот еще довольно трудоемкий способ. Делаем все элементы (отрезки, дуги) полилиниями (Редактирование полилинии) и добавляем к исходной (Редактирование полилинии-ПКМ-Добавить).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но вырожденный отрезок возникает всегда. Он находится между последней и первой точкой замкнутой полилинии, поскольку координаты этих точек совпадают. Для того, чтобы убедиться в его наличии достаточно сделать PEdit -> Вершины -> Переместить с первой или последней точкой.

Позвольте тут с вами не согласиться: перемещение по вершинам говорит только о том, что первая и последняя вершина полилинии совпадают. И ни в коей мере о том, что в связи с этим там находится отрезок нулевой длины (почему именно отрезок, а не сегмент полилинии или вырожденная дуга?).

[skip]

Кстати, если есть отрезок, можно выбрать его в списке, нажать кнопку "Оставить в выборе", и либо удалить (если вырожденный), либо перенести, скопировать и прочее.

 

А, вон вы о чем. Прошу прощения, разошлись в понятиях. Конечно я имел ввиду вырожденный сегмент полилинии (в каком-то случае может и дуга, но на мой взгляд не принципиально). Необходимость в файлах на данный момент отпала, поскольку вы устно все правльно описали )) Вопрос остался только в одном - на мой взгляд оставлять в чертеже замкнутые полилинии с совпадающими вершинами и нулевыми сегментами - это закладывать себе мину замедленного действия, поскольку какие глюки и при каких дальнейших операциях могут возникнуть - я даже боюсь себе представить. Поэтому все-таки хочется найти способ сделать нормальный замкнутый контур. Причем кстати, вариант "обвести" тут тоже может не сработать - он работает только в том случае, если последний сегмент обязательно прямой. То есть если вся полилиния состоит из дуг, то перед замыканием все равно придется совместить последнюю точку с первой, иначе вместо дуги получится отрезок. В последних версиях автокадов можно было бы замкнуть прямой, а потом, подведя курсор к ее середине, из выпадающего меню преобразовать ее в дугу, но пока (я надеюсь что в скором времени что-то подобное появится) в функционале нанокада такой возможности нет.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И все-таки, zMaximus, выложите файл с вырожденным сегментом полилинии (если есть такой - способ его нахождения - см. выше #7).

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

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

И, кстати, вы в какой версии работаете?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И все-таки, zMaximus, выложите файл с вырожденным сегментом полилинии (если есть такой - способ его нахождения - см. выше #7).

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

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

И, кстати, вы в какой версии работаете?

 

Версия 4.5 обычная, и spds 4.0

 

Метод обнаружения повторю: передвигаем первую или последнюю точку. Становится видим сегмент, соединяющий их. Это говорит о том, что он там есть. А так как первая и последняя точка полилинии совпадали, значит длина этого сегмента нулевая. То есть он вырожденный. Он принадлежит полилинии, поэтому увидить его в инспекторе объетов нельзя (он не является отдельным объектом).

 

Возможные проблемы с этим предсказать сложно, но опасаться заставляет то, что по опыту работы в том же 3DS MAX'е такие вещи нельзя было оставлять. К примеру, fillet и chamfer (сопряжение и фаска) там делались применительно к точке, и "упираясь" в соседнюю не выполнялись. Ну и много еще каких "хвостов" вылезало.

 

зы: последниее мое сообщение, форму пишет что больше пока писать не даст ))

nanofile01.dwg

post-55173-0-09205100-1360144977.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Метод обнаружения повторю: передвигаем первую или последнюю точку. Становится видим сегмент, соединяющий их.

 

Простите, не виден сегмент - видны 2 совпадающие вершины.

 

Это говорит о том, что он там есть. А так как первая и последняя точка полилинии совпадали, значит длина этого сегмента нулевая. То есть он вырожденный. Он принадлежит полилинии, поэтому увидить его в инспекторе объетов нельзя (он не является отдельным объектом).

 

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

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

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

 

Возможные проблемы с этим предсказать сложно, но опасаться заставляет то, что по опыту работы в том же 3DS MAX'е такие вещи нельзя было оставлять.

 

А почему, как вы считаете, в автокаде разрешены полилинии, имеющие более 2-х вершин, но имеющие вид отрезка (полилинии, вернее) с двумя ручками, или даже вид точки? Не берусь тоже предсказывать возможные проблемы в случае совпадения вершин у полилинии. Просто не знаю их.

Но вот если такое запретить, то думаю, проблемы совместимости с dwg-файлами, созданными в других программах, у нас будут.

Но. Есть одно но. Все вышесказанное не означает, что те ошибки, которые найдены или будут найдены (в том числе и во вашим замечаниям), не будут правиться. Это относится и к команде ПОЛРЕД (не самой простой и не самой удобной для использования). Замечания по этой команде есть, предложения тоже, они разработчикам известны. Подождем выхода следующих версий.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Кстати, создать отрезок нулевой (почти) длины в нанокаде очень легко. Проводим отрезок, пересекаем его парой линий и проводим обрезку. выбрав в качестве границ обрезки эту вторую пару. и отрезая от первого отрезка сперва одну из внешних частей, потом середину. Часто в "отрезанной" точке пересечения получается такой сверхкороткий отрезок. Думаю, длина его не нулевая, но очень малая - порядка 10-15, что с практической точки зрения можно считать нулём. И причина думаю в том, что получившийся в результате первой обрезки отрезок может пересекаться с линией обрезки в точке, не совпадающей с концом отрезка.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

Кстати, создать отрезок нулевой (почти) длины в нанокаде очень легко. Проводим отрезок, пересекаем его парой линий и проводим обрезку. выбрав в качестве границ обрезки эту вторую пару. и отрезая от первого отрезка сперва одну из внешних частей, потом середину. Часто в "отрезанной" точке пересечения получается такой сверхкороткий отрезок. Думаю, длина его не нулевая, но очень малая - порядка 10-15, что с практической точки зрения можно считать нулём. И причина думаю в том, что получившийся в результате первой обрезки отрезок может пересекаться с линией обрезки в точке, не совпадающей с концом отрезка.

Простите, но из объяснений не понятно, что именно Вы делаете. Можете файл приложить с нарисованными отрезками - до пересечения?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Восстановить форматирование

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...

×
×
  • Создать...