|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Как создать контуры по отрезкам
YngIngKllr
СПб
Регистрация: 29.03.2005
Сообщений: 12,968
|
||
Просмотров: 6418
|
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Цитата:
![]() Вроде как Phyton есть готовые решения graham scan algorithm python
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Координаты вообще не хочется использовать....
Тут аналитически можно определить. Использовать что нибудь типа Граф....
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
В виде кода можно?
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
1. А почему 2.7?
2. В Shapely есть возможность создать полигон по точкам и потом получать от него всё что угодно, в том числе координаты наружного контура. Код:
Почему лучше так, а не повторением алгоритма обхода точек самостоятельно - библиотеки в питоне обычно быстрее, т.к. "узкие" участки переписаны на С++.
__________________
Archicad, Smath, VBA |
||||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Brandashmыg
1. Потому как Freecad на 2.7 а для построения и редактирования схем я его хочу использовать. 2. Да тут как бы можно и без библиотеки обойтись, ведь задача чисто аналитическая.
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
Почему аналитическая? Выше пример привели - всё через координаты точек. Сами отрезки не нужны. Но тогда может какую-либо область "срезать". Поэтому и проще идти через объединение полигонов - тогда и отверстия и "выгрызы" останутся.
__________________
Archicad, Smath, VBA |
||||
![]() |
|
||||
По количеству рёбер? У 62 узла и у 310 одинаковое количество отрезков.
__________________
Archicad, Smath, VBA |
||||
![]() |
|
||||
- Регистрация: 24.07.2005
Москва
Сообщений: 1,335
|
|
|||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Brandashmыg
Так просто чтобы сделать как ты показал, придется координаты преобразовывать в 2d.... Sleekka http://pythontutor.ru/lessons/graphs/ http://pythontutor.ru/lessons/dfs/ Реализация графа в ребрах представлена...
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
DEM
Shapely поддерживает 3д The Polygon constructor takes two positional parameters. The first is an ordered sequence of (x, y[, z])
__________________
Archicad, Smath, VBA |
||||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Цитата:
Представленно 3 плоскости.... В них различные контуры представлены. Часть узлов уже удалена, т.к. они не нужны. Это те узлы которые находятся внутри контура.... ----- добавлено через ~9 мин. ----- Зы. А по части Shapely ты по моему не прав.... Там все таки надо по порядку задавать грани... Но там вроде как есть создание полигона по точкам... Да и в чистом пайтоне я встречал алгоритм для 2d
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
Каждый КЭ СРАЗУ после чтения загоняешь в полигон, потом делаешь для всех union и получаешь обобщённый полигон плиты.
А для чего это всё? Опалубку вытаскивать? ----------------- Пример: https://github.com/kuvbur/asf-reinfo...aster/parse.py класс asf функция get_element
__________________
Archicad, Smath, VBA Последний раз редактировалось Brandashmыg, 22.06.2016 в 23:15. |
||||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Brandashmыg
Да хочу получить геометрическую модель а не сеточную. Чтобы потом проще править было. Сетку потом буду делать в gmsh, или перекидывать в dxf и в Робот загонять. Вообще-то идея создание своего препроцессора и постпроцессора. Потом можно будет и армирование просматривать, в том же Freecade и сразу распечатку делать. Много чего задумано.... ----- добавлено через ~8 ч. ----- Так сперва то надо создать полигон.... Надо определить последовательность точек...
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
Для четырёх узлового КЭ порядок точек будет не важен. Посмотри код на гитхабе - там просто список скармливаешь ему и всё.
__________________
Archicad, Smath, VBA |
||||
![]() |
|
||||
А почему самое короткое ребро обязательно внешнее?
__________________
Archicad, Smath, VBA |
||||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Brandashmыg
Ты гнешь свою линию и всё... Я говорю, что у меня гораздо быстрее сейчас все отрабатывается и безо всяких библиотек.. Сейчас делаю поиск пути по аналогу с графами, все это будет отрабатываться гораздо быстрее чем графические библиотеки. У меня же не четырех угольники, у меня контур уже найден, его надо отсортировать по верштнам. trir В п. 3 должно получится 3 полигона.... Я сейчас взял за аналог работу с графами. Обхожу смежные вершины. Возможны и вот такие варианты(см рисунок) Тогда надо создать 2 полигона....
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
|
||||
Гну) Буду очень признателен, если покажете итоговый код для нахождения контура с помощью графов.
__________________
Archicad, Smath, VBA |
||||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
trir
Не замкнутых не будет..... По крайней мере пока планирую так... ----- добавлено через ~2 ч. ----- У меня почему то с цифрами не срабатывает.... Ищу почему же..... Код:
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. Последний раз редактировалось DEM, 23.06.2016 в 15:14. |
|||
![]() |
|
||||
Мой вариант. line = rezult[0].exterior - наружная граница.
Код:
Причём решение честное - я не использовал элементы 1-го типа, предполагая, что они идёт по контуру. Только 3-го типа.
__________________
Archicad, Smath, VBA Последний раз редактировалось Brandashmыg, 23.06.2016 в 17:53. |
||||
![]() |
|
||||
Давай файл - проверим)
__________________
Archicad, Smath, VBA |
||||
![]() |
|
||||
YngIngKllr Регистрация: 29.03.2005
СПб
Сообщений: 12,968
|
Ну вот, надо все контуры создать....
PS. Опять проблемы с shapely не получается поставить на Анаконду2 и на FreeCad.
__________________
Работаю за еду. Working for food. Für Essen arbeiten. العمل من أجل الغذاء Працую за їжу. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Revit: как создать сварной арматурный каркас? | extraneous | Revit | 42 | 28.12.2016 05:52 |
Solidworks 2014. Как создать выпадающий список? | voverrr | SolidWorks | 1 | 18.02.2016 16:27 |
Как в SCAD создать группу нагружений из загружений? | МишаИнженер | SCAD | 1 | 21.08.2011 05:30 |
найти пустые контуры | АлексЮстасу | Программирование | 4 | 26.02.2011 02:54 |