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

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

Пересечение полилинии самой себя

Ответ
Поиск в этой теме
Непрочитано 03.03.2012, 23:21 #1
Пересечение полилинии самой себя
wluk1958
 
Регистрация: 26.11.2010
Сообщений: 45

Подскажите пожалуйста, как определить: пересекает ли полилиния саму себя ? Есть ли какой-либо критерий (или, может быть, даже поле в DXF-кодах ? Впрочем, это вряд ли...) Спасибо заранее.
Просмотров: 3240
 
Непрочитано 04.03.2012, 01:26
#2
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813


Посмотри такой пример отсюда:
http://forums.autodesk.com/t5/Visual...ht/true#M85432

Код:
[Выделить все]
 ;; as published by PeterSCiganek
This does the same thing but with vlisp - from a suggestion in this newsgroup:

;;f:pline_intersects returns T if given a self-intersecting lwpolyline
;;

(defun f:pline_intersects (en / sa rg)
(setq sa (vlax-make-safearray vlax-vbObject '(0 . 0))
sa (vlax-make-variant (vlax-safearray-fill sa (list (f:enx en))))
);setq
(if (vl-catch-all-error-p (setq rg (vl-catch-all-apply 'vla-addregion (list (fx:active_space) sa))))
(if (wcmatch (strcase (vl-catch-all-error-message rg)) "*UNGÜLTIGE*") T)
(vla-Delete (car (vlax-safearray->list (vlax-variant-value rg))))
)
)

(defun fx:active_space ()
(if (zerop (getvar "TILEMODE"))
(vla-get-PaperSpace (fx:doc))
(vla-get-ModelSpace (fx:doc))
)
)

(defun f:enx (en)
(if (= (type en) 'ENAME)
(vlax-ename->vla-object en)
en
)
)
Олег (jr.) вне форума  
 
Автор темы   Непрочитано 05.03.2012, 21:36
#3
wluk1958


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


Прошу прощения, а что за ф-я "fx:doc" ? Спасибо.
wluk1958 вне форума  
 
Непрочитано 05.03.2012, 22:29
#4
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813


Наверно скорее всего:
Код:
[Выделить все]
(defun fx:doc ()
(vla-get-activedocument (vlax-get-acad-object))
)
не забудь добавить
Код:
~'o'~
Олег (jr.) вне форума  
 
Непрочитано 06.03.2012, 02:52
#5
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Необходимо учитывать локализацию при анализе сообщения об ошибке, в общем-то это топорный вариант, то есть мы заставляем автокад самому определять пересекаемость полилинии, а сколько автокадов, столько и мнений, к тому же очччень зоркий глаз на очччень медленном компе может заметить появившийся регион... а это артефакт...
А в общем, подобные задачи обсуждались здесь
gomer вне форума  
 
Автор темы   Непрочитано 07.03.2012, 17:41
#6
wluk1958


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


Спасибо боьшое.
wluk1958 вне форума  
 
Непрочитано 07.03.2012, 21:03
#7
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813


Не за что
Успехов

~'o'~
Олег (jr.) вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Пересечение полилинии самой себя

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Новые команды для работы с полилинией VVA Программирование 647 18.09.2023 11:16
Как получить контур полилинии с различной шириной Marina AutoCAD 5 26.12.2008 09:16
Как вставить блоки по направлению полилинии (VBA) dorofei Программирование 5 27.11.2006 06:50
Как найти пересечение 3dpoly и плоскости korabel Программирование 1 12.06.2006 07:52
некорректно определяется площадь замкнутой полилинии elena_din AutoCAD 16 23.09.2005 17:37