|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
Поиск в этой теме |
05.09.2011, 09:38 | #1 | |
LISP. Пересечения плоскости и линий
Томск
Регистрация: 13.07.2011
Сообщений: 81
|
||
Просмотров: 8526
|
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,992
|
Вся геометрия здесь [Challenge] intersection of lines and planes
__________________
Как использовать код на Лиспе читаем здесь |
|||
|
||||
Регистрация: 13.07.2011
Томск
Сообщений: 81
|
очень интересный подход, только он применим для пересечения линии (одной и прямой) с прямой плоскостью, к сожалению у меня порядка 2000 полилиний по 10-15 сегментов в каждой и плоскость для пересечения тоже состоит из нескольких (порядка 5-10) мне пока кроме полного перебора в голову ничего не приходит, VVA, может поможете еще советом, за предыдущий - очень благодарен
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,856
|
Как вариант: http://www.cadtutor.net/forum/showth...6521#post56521 . Я там несколько кодов рисовал, поковыряй - может, чего и пригодится (если я верно понял задачу, конечно).
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,856
|
Основная идея проста: все нужные примитивы проецируются на плоскость полилинии, получаем точки пересечения, потом примитивы обратно и получаем расстояние от вычисленной точки до примитива. Это и будет высота расположения примитива над полилинией в указанной точке. А дальше строишь все чего хочется.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 13.07.2011
Томск
Сообщений: 81
|
Алексей, вот пример входных данных (белая линия - линия для сечения, рыжие - изолинии, с которыми и ищем пересечения) просто думал изначально построить поверхность по изолиниям, но это пока совсем не получается (цивил с этим справлялся, а вот акад как-то не очень) а потом получить линию пересечения двух поверхностей. Поэтому и решил, что поверхность надо строить только одну, или даже ни одной. Для построения этой линии и думаю найти пересечения поверхности с плиниями или сплайнами, получить эти точки и по ним построить 3д плинию.
|
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,856
|
inters, vla-intersectwith, и т.п. Ну или математика.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 30.05.2012
Сообщений: 97
|
Можно выдавить полилинию (ту, что на чертеже черная), получив "стенку", и по ней обрезать (если не жалко) "рыжие". Я пробовал с Вашим чертежом - получается. Автокад 2016.
__________________
В действительности все иначе, чем на самом деле. (Антуан де Сент-Экзюпери) |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,856
|
Ну раз так, то составляем уравнения для каждого сегмента полилинии (они же могут быть дуговые), и находим их корни. Проверяем - принадлежит ли точка полилинии и принадлежит ли она указанному сегменту. Весьма муторное занятие. Значительно проще создать прямую или луч и через vla-intersectwith найти все пересечения.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Регистрация: 26.12.2013
Сообщений: 284
|
ММм.. щас что-то в голове наклевывается.
Что я добиваюсь: у меня трасса 40км 1:10000. Я обвел нужную область полилинией (замкнутой), надо эту (кривую) область разбить на видовые экраны вписаные в лист. Плюс подгонять формат листа и распологать рационально с попыткой добавить еще один видовой экран ниже. Что-то подобное делал с vlax-curve-. Надо вспомнить. |
|||
|
||||
Регистрация: 20.04.2011
Сообщений: 404
|
Давным давно решал задачу по построению изолиний из сетки 3DMesh (вернее по ее составляющим - 3DFace). Видать это было так давно, что уже и не могу вспомнить как заставить работать мое творчество..
Конечно это совсем не то, что требуется автору темы, и не совсем LISP, но вдруг кому нибудь пригодится. Помню как парился вспоминая геометрию одновременно излагая мысли на чуждом для меня языке |
|||
|
||||
Проектирование Регистрация: 01.09.2009
Сообщений: 19
|
Цитата:
Это нужно для того чтобы затем попытаться эти координаты подставить в другой код (код 2) где в оригинале эти точки приходится задавать вручную Код:
Код:
Последний раз редактировалось Кулик Алексей aka kpblc, 24.04.2019 в 17:16. |
|||
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,856
|
Ох, е-мое! Я даж не помню, что это была за функция и чего она делала. Откуда хоть взято?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
|
||||
Проектирование Регистрация: 01.09.2009
Сообщений: 19
|
Цитата:
Последний раз редактировалось hroost, 24.04.2019 в 17:40. |
|||
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
LISP. Разорвать объекты в точках пересечения. BreakObjects. | VVA | Готовые программы | 110 | 25.02.2022 07:33 |
LISP для подсчета суммы длин линий | Kostinok | LISP | 18 | 26.04.2013 14:56 |
Как сделать 3D путь из объектов (линий и дуг), нележащих в одной плоскости | Ухряб | AutoCAD | 5 | 21.01.2010 12:25 |
деление множества линий в точках пересечения | shurup | Программирование | 4 | 24.03.2008 15:11 |
Нужен Lisp для работы с типами линий | Gostushev | LISP | 12 | 06.07.2005 14:50 |