Полдня сегодня бьюсь с полилиниями, у которых последняя вершина совпадает с первой.
По идее, maplean позволяет от этого избавиться, но почему-то у меня не работает.
Может, я какую-то опцию забываю включить?
Команда запускается, но в командной строке пишет "0 ошибок обнаружено" и дублирующиеся вершины остаеются
Solved! Go to Solution.
Это тоже, кстати, предмет и действие не самого Civil, а Map 3D 🙂
Не удалит MAPCLEAN такие совпадающие вершины. В том числе с помощью Удалить повторяющиеся - имеются в виду целые дублирующиеся элементы, а не сегменты элементов. Например, удалит дублирующиеся блоки или тексты, или полилинии и т.п.
И никакими другими операциями не удалит.
MAPCLEAN ведь наоборот создана бороться в т.ч. с несовпадающими вершинами, с незамыканиями!
А Вашу задачу, думаю, решить можно только программированием или какими-то командами, которые преобразуют полилинии с совпадающими первыми-последними вершинами в полилинии Closed, удаляя последний сегмент.
Например:
1. Преобразовать все такие полилинии в ОБЛАСТЬ (REGION) одноименной командой. Преобразуются только с совпадающими концами.
2. РАСЧЛЕНИТЬ все REGION'ы.
3. Получившиеся отрезки сшить с помощью СОЕДИНИТЬ (JOIN).
4. Снять признак Closed с полученных полилиний.
Чем, собственно, вызвана задача? Люди обычно целенаправленно добиваются совпадения первых и последних вершин. Тратят на это много времени и сил. А тут вдруг наоборот?
"Чем, собственно, вызвана задача? Люди обычно целенаправленно добиваются совпадения первых и последних вершин. Тратят на это много времени и сил. А тут вдруг наоборот?"
Плохо если замкнутый полигон и в одной из точек 2 вершины.
ValeryBrelovsky написано:
Плохо если замкнутый полигон и в одной из точек 2 вершины.
Как это? Именно и только совпадение начала и конца является действительным, настоящим признаком замкнутости.
Я, наоборот, за отмену автокадовского признака замкнутости. Это совершенно искусственный признак. Этот признак только создает неопределенность, причем неосновательную.
Объясняю себе введение в Автокад этого признака желанием облегчить жизнь пользователю. Но в конечном итоге это только усложняет дело.
ValeryBrelovsky написано:Я пользуюсь лиспом от сюда.
Я специально вчера смотрел возможности этой команды - не нашел среди них подходящей для этой задачи.
pl-VxOpt удаляет все совпадающие вершины, кроме первой и последней.
То что вы не нашли это не значит что нет такой возможности. А PL-VxRdc -Удаление вершин полилиний, которые лежат на одной прямой пробовали. По поводу вершин и понятие замкнутости. Возможности объектной привязки позволяют совместить точки.
Прилагаю файл с 3 четырёхугольниками. 1 не замкнут и имеет 5 вершин 2 замкнут и имеет 5 вершин и 3 замкнут обработан функцией PL-VxRdc и имет 4 вершины. и 4 обработаный pl-VxOpt имеет 4 вершины. Это выполняется, если полигон замкнут, если полигон не замкнут, то ни какая программа не удалит первую или последнюю точку.
"Я, наоборот, за отмену автокадовского признака замкнутости. Это совершенно искусственный признак. Этот признак только создает неопределенность, причем неосновательную.
Объясняю себе введение в Автокад этого признака желанием облегчить жизнь пользователю. Но в конечном итоге это только усложняет дело."
Вы знаете, не наблюдал усложнение. Отсутствие для меня усложняет. Мне нужно знать что полигон замкнут и меня не устраивает две вершины в одной точке. Как я решаю этот вопрос я написал.
ValeryBrelovsky написано:То что вы не нашли это не значит что нет такой возможности. А PL-VxRdc -Удаление вершин полилиний, которые лежат на одной прямой пробовали.
Гм... Сегодня как раз PL-VxOpt вдруг срабатывает - удаляет последнюю вершину (сегмент), и придает признак замкнутости.
А PL-VxRdc здесь ни при чем - первая и последняя вершина не лежат на одной прямой.
Значит мы говорим о разных вещах. И тем более, что автор темы вообще молчит по этому поду.
ValeryBrelovsky написано:"Мне нужно знать что полигон замкнут и меня не устраивает две вершины в одной точке.
Полилиния по определению не есть контур площадной фигуры. Полилиния - линейный графический элемент. Их начала-концы законно могут совпадать с любой точкой, включая и совпадение друг с другом. Если нужны фигуры - следует чертить полигонами. Их контуры замкнуты по их определению. Использование полилиний или других линейных примитивов для отображения фигур (площадных геометрических элементов) уже есть костыль.
Признак замкнутости - тоже явный костыль. Вместо него, чтобы знать, совпадают ли начала и концы ("полигон замкнут"), в Автокаде и, особенно, в AutoCAD Map 3D должна быть команда найти такие случаи, и должна быть команда находить случаи несовпадения ("свободные концы", "free endpoints").
Drawing cleanup создан специально для того, чтобы подготавливать топологически корректные чертежи. Что предполагает и отсутствие дублирования элементами или их частями друг друга. При этом в общем случае множества полигонов (допустим, границ земельных участков) вообще нельзя представить в виде замкнутых полилиний - у смежных полигонов границы начнут дублироваться. И признак замкнутости при этом не только в общем некорректен, но и будет прямо вредным.
Почему в Drawing cleanup при всей его мощности и удобствах нет возможности находить "висячие концы" - большая загадка. Ведь это необходимый инструмент при формировании границ площадных объектов. Как написал про Автодеск один не наш пользователь - "видимо, разработчики стремятся не гневить Бога, претендуя на совершенство". 🙂
В сумме это приводит к тому, что формировать средствами Автокада площадные объекты занимает избыточно много времени и сил. И провоцирует на костыльные подходы - на нетопологические решения (например, представлять каждый площадной объект замкнутой полилинией), на создание пользователями своих приложений или на использование средств чужого ПО.
Ничего себе, целая дискуссия!
Валерий приложил чертеж, где как раз проиллюстрирована ситуация, которая мне мешала: четырехугольник имеет 5 вершин, где 5 совпадает с 1, а мне надо было из него получить четырехугольник с 4 вершинами. При этом в этом конкретном случае меня не интересовало свойство замкнутости (я, кстати, тоже до конца не понимаю резон этого параметра, то есть для каких случаев он вообще нужно).
Александр, вы спросили, в чем моя задача. Мне нужно было получить точки COGO по полилинии (координаты углов земельного участка), по участку с 5 вершинами у меня таких точек получалось на одну больше чем нужно.
Согласна полностью со всем, что вы написали по поводу того, что полилиния не является контуром площадной фигуры и что если нужны фигуры, то надо использовать полигоны. Но в данном случае у меня на входе DXF-файл с кадастровым планом территории, в котором участки представлены вот такими полилиниями с лишней вершиной. Я вот сейчас думаю над тем, как оптимизировать работу с этим неуклюжим DXF, но это уж другая отдельная тема.
А что касается mapclean, то вот мне на dwg.ru подсказали, что надо просто другую опцию использовать, не "убрать повторы", а "упростить полилинии". Под носом решение-то было!
a.zemlyanskaya написано:А что касается mapclean, то вот мне на dwg.ru подсказали, что надо просто другую опцию использовать, не "убрать повторы", а "упростить полилинии". Под носом решение-то было!
Точно! Проглядел в буквальном смысле! Вашу задачу одинаково решает и Упрощать объекты из MAPCLEAN, и PL-VxOpt из PlTools. Обе удаляли последний сегмент, но добавляли признак замкнутости. А я в свойства не смотрел - просто видел, что внешне ничего не изменилось, и думал, что не делается! 🙂
Потому что тема для меня больная - вроде бы сделать в Автокаде все можно, но реализовано костыльно или неудобно, сложно, или неполно.
a.zemlyanskaya написано:Ничего себе, целая дискуссия!
в данном случае у меня на входе DXF-файл с кадастровым планом территории, в котором участки представлены вот такими полилиниями с лишней вершиной. Я вот сейчас думаю над тем, как оптимизировать работу с этим неуклюжим DXF, но это уж другая отдельная тема.
"Магистральный путь" в Map, видимо, такой:
- создать топологически корректные границы, т.е. убрать все дубликаты, создать все узлы на пересечениях и т.п.,
- создать по этим границам топологическую полигональную модель. К центроидам привязать информацию об участках.
- эту модель можно либо прямо передавать в другие форматы, либо из нее можно выгружать замкнутые полилинии всех участков, создавать надписи и пр.
a.zemlyanskaya написано:Мне нужно было получить точки COGO по полилинии (координаты углов земельного участка), по участку с 5 вершинами у меня таких точек получалось на одну больше чем нужно.
Алла, попробуй мой способ: сначала создать участки из полилиний (ничего не исправляя), а потом по участкам создать точки Автоматически. В этом случае не создаются точки COGO с дублирующимися координатами. Если использовать стиль участков с каким-нибудь заполнением, то ошибки будет видно, там заполнение не появится. И без MAPCLEAN можно обойтись, кучу времени сэкономишь.
PS если требуется редактирование геометрии участков, например, разобраться с наложениями соседних землевладений, то это конечно лучше делать до создания точек Так быстрее будет.
Can't find what you're looking for? Ask the community or share your knowledge.