|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
как работает vla-IntersectWith ?
Регистрация: 31.10.2011
Сообщений: 31
|
||
Просмотров: 8681
|
|
||||
специалист по околачиванию грушевых деревьев Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 811
|
Цитата:
собирай точки и удали эти копии в конце программы, я других надежных способов не вижу |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,446
|
Я, конечно, не классик, но выскажусь.
1. В файле полно прокси-объектов. 2. При имеющемся виде в AutoCAD 2009 я сколько ни искал, не нашел сиреневой полилинии. 3. Штрих-пунктирных линий там 2 штуки. Оставь в файле только те полилинии, на которых "косяк", можно будет пообщаться. P.S. (inters) позволяет найти пересечения только прямых кусков. Если устроит - то пожалуйста. Но скорость работы будет отвратительная.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,446
|
Элементарная проверка
Код:
Если не отслеживать состояние слоев, то как вариант: Код:
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,446
|
При условии (как минимум), что обе точки находятся в видимой части экрана (мне так кажется).
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Регистрация: 31.10.2011
Сообщений: 31
|
Спасибо всем, я кое что почерпнул, в частности понравился подход Кулика.
Но, очевидно в спешке, я не совсем правильно изложил проблему. Дело в том, что эти самые пересечки нужно не указанием получать, а через ssget (ssget "_CP" sp_k или ssget "_F" sp_k) где sp_k - список координат трассы (секущей). И вот тут то и возникают проблемы с выбором. А потом уже вторая проблема с двойной точкой пересечения. Первую проблему решил так. Выбираю все полилинии на чертеже (ssget "_X" '((0 . "*POLYLINE"))), Создаю список по набору <имя примитива . тип линии>, изменяю их все на Continuous, выбираю их секущей плинией, определяю точки пересечения через intersectWith и наконец возвращаю им тип. Все это только потому, что не хотят выбираться штрихпунктирные динии. Причем замечено (может и бред), если секущая проходит по штриху - выбирается, если между штрихами - не выбирается. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,446
|
Сколько ни гонял, все едино: вычисление пересечения не зависит от типа линии. Да и не должно вообще-то.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
инженер-проектировщик КИПиА Регистрация: 30.08.2008
Минск
Сообщений: 159
|
вопрос на тему
линия пресекает блок (замкнутый овал из 4-х примитивов). код ниже находит 4 точки пересечения. собственно вопрос на тему - откуда 4 точки? , вопрос не на тему - почему координата Z не нуль, хотя все элементы вроде бы в Z=0 ? инстинктивно подозреваю что это связано, но где и как? (ACAD 2008 +SP1) Код:
|
|||
![]() |
|
||||
Было дело, тоже искал точки пересечения с блоком. Как я установил опытным путем, помимо пересечения с примитивами, еще добавляются точки пересечения с габаритным контейнером блока.
Тема: http://forum.dwg.ru/showthread.php?p=460622#post460622 |
||||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Еще похожая тема Почему некорректно работает vla-intersectwith?. Там есть пример lib:GetBlockInters . Взято отсюда (см. VxGetBlockInters)
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Регистрация: 05.07.2007
Санкт-Петебург
Сообщений: 110
|
Коллеги, разбираюсь с IntersectWith
Тоже заметил, что IntersectWith добавляет точки переечения с габаритным контейнером блока блок_IntersectWith.dwg Есть блок, в отключаемом слое которого стоит объект (в моем случае это блок пожарного извещателя с радиусом действия в виде круга) vla-IntersectWith дает координаты пересечения с учетом окружности, даже если этот слой выключен в текущем отображении (т.е. получается что габаритный контейнер блока учитывает все примитивы) Есть ли вариант получить точки пересечения блока с полилинией только видимой части блока? |
|||
![]() |
|
||||
идущий по граблям Регистрация: 26.05.2005
Сообщений: 5,193
|
Красивого решения на lisp не знаю, может на arx можно, но это для профи.
Сам решал подобную задачу колхозно - делал копию блока извещателя, фиксировал entlast, потом explode, и дальше определял точки пересечения "обломков" с нужными линиями. Последний раз редактировалось kp+, 06.06.2023 в 13:04. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Не работает инструмент "ОБРЕЗАТЬ" для полилинии. | VictorHunter | Вертикальные решения на базе AutoCAD | 10 | 10.03.2021 13:46 |
Почему перестала работать кнопка delete? | Skat | AutoCAD | 43 | 05.11.2012 17:49 |
Лира 9.4 не работает. | maxim903 | Лира / Лира-САПР | 12 | 14.03.2009 12:42 |
Макрос c _Attedit не работает в 2009 | Vova | AutoCAD | 4 | 12.10.2008 16:49 |
2009 Publish на принтер установленный в page setup не работает. | Red Nova | AutoCAD | 18 | 01.09.2008 16:57 |