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

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

Точки пересечения линии и области.

Ответ
Поиск в этой теме
Непрочитано 20.05.2014, 19:29 #1
Точки пересечения линии и области.
Веселин
 
Регистрация: 15.05.2014
Сообщений: 42

И снова здравствуйте!
Вот у меня есть линия, или полилиния, выделена красным. И две области, выделены фиолетовым.
Мне нужно проверить, если область примыкает к линии, то найти точки соприкосновения.
Как бы я делал. Взорвать область, получатся линии. Потом каждую из этих линий проверить на inters.
Но тогда та область, которая не соприкасается, тоже выдаст точки пересечения. Это лишние траты памяти.
Как бы мне упростить это?

Изображения
Тип файла: jpg line-region.jpg (9.1 Кб, 145 просмотров)

Просмотров: 3272
 
Непрочитано 20.05.2014, 19:48
1 | #2
nolte

спринклеры, сантехника
 
Регистрация: 26.01.2010
Сообщений: 188
Отправить сообщение для nolte с помощью Skype™


попробуй vla-intersectwith
__________________
Знание лисп: со справочником Н. Полещука
nolte вне форума  
 
Автор темы   Непрочитано 20.05.2014, 20:01
#3
Веселин


 
Регистрация: 15.05.2014
Сообщений: 42


Уже пробовал. Если область не соприкасается с линией, то возникает ошибка
Код:
[Выделить все]
; ошибка: ActiveX Server возвратил ошибку: Неверный индекс
Если же область примыкает к линии, то все в порядке.

----- добавлено через ~26 мин. -----
Все что я понял, это не порядок с индексами безопасного массива. А как это привести в должный вид?
Веселин вне форума  
 
Непрочитано 20.05.2014, 20:44
1 | #4
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,840


Цитата:
Сообщение от Веселин Посмотреть сообщение
Уже пробовал. Если область не соприкасается с линией, то возникает ошибка
Это ошибка, скорее всего, возникает не из-за вызова метода, а и-за неверной обработки ее результатов - перед тем как safearray преобразовывать в список - его надо проверить,например vlax-safearray-get-u-bound.
з.ы. А вообще надо выкладывать код - в котором у Вас ошибка
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 20.05.2014, 21:11
#5
Веселин


 
Регистрация: 15.05.2014
Сообщений: 42


Вот так работает.
Код:
[Выделить все]
(progn (vl-load-com)
  (setq polyline (vlax-ename->vla-object (car (entsel "\nВыбрать Полилинию: ")))
        region   (vlax-ename->vla-object (car (entsel "\nВыбрать Область: "  )))
        plist (vlax-variant-value (vla-intersectwith polyline region acExtendNone)))
  (if (>= (vlax-safearray-get-u-bound plist 1)
          (vlax-safearray-get-l-bound plist 1))
      (vlax-safearray->list plist)
    );end if
);end progn
Веселин вне форума  
 
Непрочитано 20.05.2014, 21:24
1 | #6
nolte

спринклеры, сантехника
 
Регистрация: 26.01.2010
Сообщений: 188
Отправить сообщение для nolte с помощью Skype™


Код:
[Выделить все]
 
Команда: (mapcar '(lambda (a)
 (if (not
(eq (vlax-safearray-get-u-bound
 (vlax-variant-value
(setq pp(vla-intersectwith f (vlax-ename->vla-object a) acextendnone))
)
 1
 )
 '-1
 )
 )
 (setq lst_sect (cons (vlax-safearray->list(vlax-variant-value pp)) lst_sect))
 )
 )
 lst
 )
(((2092.72 1144.17 0.0)) nil)

Команда: !lst_sect
((2092.72 1144.17 0.0))
где f - объект
lst - список объектов с которыми может пересекаться объект f
__________________
Знание лисп: со справочником Н. Полещука
nolte вне форума  
 
Автор темы   Непрочитано 20.05.2014, 21:57
#7
Веселин


 
Регистрация: 15.05.2014
Сообщений: 42


Спасибо, будем считать эту тему пройденной.
Веселин вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Точки пересечения линии и области.

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание нового типа линий Apelsinov AutoCAD 915 08.07.2022 12:36
Несплошные линии, X-refы и... задача Vova AutoCAD 6 20.04.2018 16:14
Помогите с разделением элементов по линии пересечения. S.T.A.P. AutoCAD 25 24.11.2011 09:29
отрезок от точки к линии под углом Apelsinov Программирование 12 13.12.2005 17:37
Как программно узнать точку пересеч. линии с подприм. блока? kp+ AutoCAD 3 21.10.2005 10:46