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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как посчитать площадь незамнутого контура?

Как посчитать площадь незамнутого контура?

Ответ
Поиск в этой теме
Непрочитано 14.09.2005, 08:54 #1
Как посчитать площадь незамнутого контура?
B2Slow
 
Иркутск
Регистрация: 20.06.2005
Сообщений: 57

Всячески пытался это сделать "встроенными" средствами када, но так и не смог.
Есть некая площадь (дорога) после конвертации из неустановленного источника граница выглядит в виде пунктирных линий, состоящих из отдельных line (кое-где линия в пунктире состоит из двух, соединенных одной вершиной). Есть ли возможность посчитать площадь этой дороги?
Например, стянуть средне-арифметически ближайшие вершины двух соседних линий или провести между ними дополнительный сегмент, и потом уже сделать из них pline? (точность в данном случае пострадает некритично).
Может кто-то пользуется чем-то подобным?
Спасибо.
Да, еще.. pedit\m\j здесь не сработало, т.к. кое-где (почти через одну) линии просто не могут найти точку пересечения..
Просмотров: 7805
 
Непрочитано 14.09.2005, 09:37
#2
VetalBY


 
Регистрация: 16.05.2005
г. Минск
Сообщений: 276


Может быть попробовать PLJOIN из EXPRESS TOOLS. Она лучше объединяет, чем pedit\m\j
VetalBY вне форума  
 
Непрочитано 14.09.2005, 09:49
#3
Кулик Алексей aka kpblc
Moderator

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


Я думаю, лучше всего будет "чертеж в студию!" - в общем, покажи, с чего начинать-то.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 14.09.2005, 10:03
#4
MIP

инженер
 
Регистрация: 13.12.2004
Минск
Сообщений: 496


>>B2Slow

Цитата:
Есть некая площадь (дорога) после конвертации из неустановленного источника граница выглядит в виде пунктирных линий, состоящих из отдельных line (кое-где линия в пунктире состоит из двух, соединенных одной вершиной). Есть ли возможность посчитать площадь этой дороги?
Скорее всего конвертация, точнее чертеж получен из CREDO, есть у них такая беда, все отроисованные в программе линии передаются в dxf, а затем в dwg в виде отдельных сегментов от вершины к вершине и самое ужасное если тип линии был штрихпунктирный или типа того, все выдается в виде отдельных точечек и линий.

Цитата:
Да, еще.. pedit\m\j здесь не сработало, т.к. кое-где (почти через одну) линии просто не могут найти точку пересечения..
Единственный способ который мы придумали это pedit\m\j с параметрам both и заданием допуска от 0 до пока все не объеденит, но не факт что все получиться как надо, второй свособ, обвести поверх новой полилинией.
MIP вне форума  
 
Автор темы   Непрочитано 14.09.2005, 10:14
#5
B2Slow


 
Регистрация: 20.06.2005
Иркутск
Сообщений: 57


Вот вам фрагмент чертежа, пжалста..
[ATTACH]1126678457.dwg[/ATTACH]
Вот-вот.. Обведением как раз и занимаемся.. Только муторно это для нескольких сот километров..
B2Slow вне форума  
 
Непрочитано 14.09.2005, 10:16
#6
Кулик Алексей aka kpblc
Moderator

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


На самом деле можно написать лисп, который тупо пройдет по выделенным отрезкам (если там действительно отрезки, для полилиний придется просто добавлять код) и поверх рисует полилинию по всем вершинам.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 14.09.2005, 10:30 Как посчитать площадь незамнутого контура?
#7
VPUD56

архитектор
 
Регистрация: 23.05.2005
Сообщений: 123


Надо тупо строить новую Pline, цепляясь к пунтиру,некоторые разумно пропуская, с одной строны дороги, затем офсетом перенести на другую сторону(дорога ведь одинаковой ширины), замкнуть их,соединить их в 1 полилинию и измерить пл-ть.
__________________
vpud
VPUD56 вне форума  
 
Автор темы   Непрочитано 14.09.2005, 10:34
#8
B2Slow


 
Регистрация: 20.06.2005
Иркутск
Сообщений: 57


Цитата:
Сообщение от kpblc
На самом деле можно написать лисп, который тупо пройдет по выделенным отрезкам (если там действительно отрезки, для полилиний придется просто добавлять код) и поверх рисует полилинию по всем вершинам.
А как будет определяться последовательность перехода с одного отрезка на другой? Будет определяться ближайший?
B2Slow вне форума  
 
Автор темы   Непрочитано 14.09.2005, 10:40 Re: Как посчитать площадь незамнутого контура?
#9
B2Slow


 
Регистрация: 20.06.2005
Иркутск
Сообщений: 57


Цитата:
Сообщение от VPUD56
Надо тупо строить новую Pline, цепляясь к пунтиру,некоторые разумно пропуская, с одной строны дороги, затем офсетом перенести на другую сторону(дорога ведь одинаковой ширины), замкнуть их,соединить их в 1 полилинию и измерить пл-ть.
Дык этим и занимаемся.. Только на извилистых участках слишком много не пропустишь.. Ошибка в площади набегает большая.. А это уже плохо сделанная работа А обводить всю дорогу ОЧЕНЬ долго. и ширина, все-таки разная местами.
B2Slow вне форума  
 
Непрочитано 14.09.2005, 10:41
#10
VetalBY


 
Регистрация: 16.05.2005
г. Минск
Сообщений: 276


попробовал, PLJOIN работает, только выбирать муторно
но если использовать UCS объекта (линии) и поворачивать вид с помощью plan\c, то выбирать можно рамкой и тогда становится веселее
fuzz distance задавал = 1
VetalBY вне форума  
 
Непрочитано 14.09.2005, 10:53
#11
Кулик Алексей aka kpblc
Moderator

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


Нда, все хуже, чем я полагал в своей наивности. В общем, предлагаемая последовательность работы:
1. Запросить через ssget отрезки, над которыми будем работать.
2. Запросить расстояние, которое надо объединять. Если расстояние между вершинами меньше указанного, то объединять. Если больше - то проходить дальше.
3. Построить список вершин новой полилинии и сделать ее, например, через entmake либо (vl-cmdf)
---
Сразу проблема: вершины сортировать по возрастанию / убыванию координат, наверно, бесполезно. Т.е. при 2000 объектах надо будет как-то лихо провернуть полный анализ всего списка, а это выше моих знаний.
Либо один за другим выделять обрабатываемые отрезки - ненамного быстрее ручной обработки.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 14.09.2005, 11:08
#12
B2Slow


 
Регистрация: 20.06.2005
Иркутск
Сообщений: 57


Цитата:
Сообщение от VetalBY
попробовал, PLJOIN работает, только выбирать муторно
но если использовать UCS объекта (линии) и поворачивать вид с помощью plan\c, то выбирать можно рамкой и тогда становится веселее
fuzz distance задавал = 1
Ну, выделять в общем-то можно способом pedit\m\?\wp или pljoin\?\wp ,по крайней мере в 2005.
А вот pljoin в експрессах 2005 почему-то не могу найти. Единственный похожий лисп там pljoinsup.lsp, только не могу с ним пока разобраться..:\
Да и сдается мне, что логика его работы вряд ли отличается от pedit.
B2Slow вне форума  
 
Автор темы   Непрочитано 14.09.2005, 11:20
#13
B2Slow


 
Регистрация: 20.06.2005
Иркутск
Сообщений: 57


Цитата:
Сообщение от kpblc
...
3. Построить список вершин новой полилинии и сделать ее, например, через entmake либо (vl-cmdf)
---
Сразу проблема: вершины сортировать по возрастанию / убыванию координат, наверно, бесполезно. Т.е. при 2000 объектах надо будет как-то лихо провернуть полный анализ всего списка, а это выше моих знаний.
Либо один за другим выделять обрабатываемые отрезки - ненамного быстрее ручной обработки.
Да, основная проблема как раз в том, чтобы определить алгоритм, определяющий направление создания новой полилинии...
А приведенный фрагмент - это лишь 1/1000 часть всей дороги.. вот!...
B2Slow вне форума  
 
Непрочитано 14.09.2005, 11:35
#14
VetalBY


 
Регистрация: 16.05.2005
г. Минск
Сообщений: 276


у прикрепленного файла поменяй расширение на lsp и подгрузи.
логика работы этой команды отличается от pedit и была она только в версии акада 2002
[ATTACH]1126683321.dwg[/ATTACH]
VetalBY вне форума  
 
Непрочитано 14.09.2005, 11:45
#15
MIP

инженер
 
Регистрация: 13.12.2004
Минск
Сообщений: 496


>>B2Slow
Узнаю брата Колю! Родное Credo, чтоб ему все хорошо было!
Кроме указанных мной способов врядли оперативно что то предумаете, мы с этим уже лет этак 6 бъемся, про лисп ничего сказать не могу у кого есть идеи пусть воплотит, только благодарны будем! Для Вас B2Slow, совет, перенесите контуры дороги в другой слой и там объединяейте, только не увлекайтесь мелкими фрагментами, они Вам погоды не сделают, а точность вещь спорная, не факт что создатели данного чертежа сами все точно по координатам выставили, скорее всего просто обвели линиями в Credo по растру. С объединением то же надо быть по аккуратней, применяйте комбинацию Удлинить/Добавить/Оба с различными допусками по хорошему с большего работа будет сделана, может еще прийдется поудалять лишние вершины. Немного терпения и все получиться. :wink:
MIP вне форума  
 
Непрочитано 14.09.2005, 11:55
#16
MIP

инженер
 
Регистрация: 13.12.2004
Минск
Сообщений: 496


>>VetalBY
Похоже то что нужно!
MIP вне форума  
 
Непрочитано 14.09.2005, 11:56
#17
che

Прораб
 
Регистрация: 16.05.2005
Osh
Сообщений: 52


>B2Slow

Откуда чертеж? Обычно подобные чертежи бывают подкреплены таблицами с координатами центр лайн (и в плане и в поперечнике), координатами краев дороги и пр. через определенные промежутки расстояния - пикеты (10м, 25м ...), одним словом координаты поперечников. И еще огромная куча данных. Многие данные (площади, объемы) определяются по ним.

Если же есть только подобные акадовские чертежи, то для необходимой точности без ручной работы не обойтись. Лисп может только частично автоматизировать процесс (типа PLJION и пр.)
che вне форума  
 
Автор темы   Непрочитано 14.09.2005, 12:00
#18
B2Slow


 
Регистрация: 20.06.2005
Иркутск
Сообщений: 57


Цитата:
Сообщение от MIP
>>B2Slow
Узнаю брата Колю! Родное Credo, чтоб ему все хорошо было!
Присоединяюсь!
За тонкости спасибо, будем внедрять.
Здесь дело, видимо, даже лиспом не поправить, а если и попытаться, то трудовложения вряд ли будут адекватными.
VetalBY
Спасибо за файл.
Почему-то в хелпе к Exp.2005 написано, что эта команда включена в экспресы, но как таковой ее там нету.
B2Slow вне форума  
 
Непрочитано 14.09.2005, 12:03
#19
che

Прораб
 
Регистрация: 16.05.2005
Osh
Сообщений: 52


С другой стороны, я заметил, что чертеж в масштабе 1:10. Длина отрезков равна 10м (+ - 2 см). Длина пробелов 5м (+ - 2 см).

Наверно, можно сделать лисп с автоматическим поиском следующего отрезка в радиусе 5 метров (с точностью 2см).
che вне форума  
 
Автор темы   Непрочитано 14.09.2005, 12:10
#20
B2Slow


 
Регистрация: 20.06.2005
Иркутск
Сообщений: 57


Цитата:
Сообщение от che
С другой стороны, я заметил, что чертеж в масштабе 1:10. Длина отрезков равна 10м (+ - 2 см). Длина пробелов 5м (+ - 2 см).
Не, там не все так хорошо..
Таблиц есс-но нет, только dxf. Был бы исходник, посчитали бы прямо в кредо.
B2Slow вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как посчитать площадь незамнутого контура?

Размещение рекламы