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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Праграмма не удалят одинаковые точки пересечений (фильтрация точек пересечений))

Праграмма не удалят одинаковые точки пересечений (фильтрация точек пересечений))

Ответ
Поиск в этой теме
Непрочитано 18.06.2010, 18:25 #1
Праграмма не удалят одинаковые точки пересечений (фильтрация точек пересечений))
NEDIS
 
Инженер СКС
 
г. Домодедово МО
Регистрация: 21.08.2009
Сообщений: 72

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

В итоги получаю вот такую ерунду
((1.50067e+006 -115870.0) (1.50067e+006 -115870.0) (1.50067e+006 -115870.0) (1.50067e+006 -115870.0) (1.52075e+006 -106060.0))

т.е. точка (1.50067e+006 -115870.0) на отрез не хочет фильтроваться

P.S. По хорошему надо получить Список пересечений вида:
((<Имя объекта: 1> <Имя объекта: 2> (X Y)) (<Имя объекта: 1> <Имя объекта: 3> <Имя объекта: 4> <Имя объекта: 5>(X Y)))
Т.е. чтобы каждый элемент списка сдержал все пересекаемые примитивы в заданной точке

Вложения
Тип файла: lsp 008_зихер.LSP (3.1 Кб, 47 просмотров)
Тип файла: dwg
DWG 2007
LISP.dwg (136.1 Кб, 252 просмотров)

Просмотров: 2449
 
Непрочитано 18.06.2010, 23:29
#2
Кулик Алексей aka kpblc
Moderator

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


Попробуй заменить строку
Код:
[Выделить все]
(setq spisok-point-all (vl-remove vershina-n spisok-point-all))
на
Код:
[Выделить все]
(setq spisok-point-all (vl-remove-if
                                (function
                                  (lambda (x)
                                    (equal x vershina-n 1e-3)
                                    ) ;_ end of lambda
                                  ) ;_ end of function
                                spisok-point-all
                                ) ;_ end of vl-remove-if
             )
P.S. В логику кода не вникал
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Автор темы   Непрочитано 19.06.2010, 00:35
#3
NEDIS

Инженер СКС
 
Регистрация: 21.08.2009
г. Домодедово МО
Сообщений: 72


kpblc как всегда спасибо
NEDIS вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Праграмма не удалят одинаковые точки пересечений (фильтрация точек пересечений))