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

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

как создать точки на пересечении всех линий чертежа?

Ответ
Поиск в этой теме
Непрочитано 26.10.2012, 15:19 #1
как создать точки на пересечении всех линий чертежа?
77chester77
 
Регистрация: 26.10.2012
Сообщений: 1

Необходимо создать точечные объекты на пересечении линий, в серединах и в конце отрезков.кто что может подсказать???
Просмотров: 3955
 
Непрочитано 26.10.2012, 15:31
#2
Дима_

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


Я могу - отправляйтесь в поиск
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Непрочитано 26.10.2012, 22:17
#3
Олег (jr.)

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


Можешь попробовать из старых запасов, но вроде код рабочий
Вложения
Тип файла: lsp mil.lsp (1.9 Кб, 81 просмотров)
Олег (jr.) вне форума  
 
Непрочитано 27.10.2012, 18:39
#4
Хмурый


 
Регистрация: 29.10.2004
СПб
Сообщений: 16,379


LISP. Разорвать объекты в точках пересечения. BreakObjects.
Хмурый вне форума  
 
Непрочитано 27.10.2012, 22:54
#5
Олег (jr.)

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



Их есть у меня
Код:
[Выделить все]
;; bml.lsp
;----------------- BREAK LINES ---------------;
;; by Fatty T.O.H. () 2006 * all rights removed

(defun C:BML (/ *error* acsp adoc delobj_list line_obj
ln lineset main_line obj_list multset tmp)

(defun *error* (msg)
(if
(not
(member
msg
'("console break"
"Function cancelled"
"quit / exit abort"
"")
)
)
(princ (strcat "\nError: " msg))
)
(vla-endundomark adoc)
(princ)
)

(setq adoc (vla-get-activedocument
(vlax-get-acad-object)
)
acsp (vla-get-block
(vla-get-activelayout adoc)
)
)

(vla-startundomark adoc)

(alert "Select all lines include main line")

(if (not multset)
(setq multset (ssget '((0 . "LINE"))))
)

(alert "Select main line only")

(if (not lineset)
(setq lineset (ssget "+.:S:E" '((0 . "LINE"))))
)
(setq ln (ssname lineset 0)
main_line (vlax-ename->vla-object ln)
)
(ssdel ln multset)

(setq obj_list (mapcar 'vlax-ename->vla-object
(vl-remove-if
'listp
(mapcar 'cadr (ssnamex multset)))
)
)
(setq line_obj (car obj_list))

(foreach line_obj obj_list
(setq tmp
(vlax-invoke
line_obj
'Intersectwith
main_line
acextendnone
)
)
(if tmp
(progn
(setq tmp (cons tmp
(list
(vlax-get line_obj 'StartPoint)
(vlax-get line_obj 'EndPoint)
))
)
(setq tmp (vl-sort tmp
(function (lambda (q p)
( (vlax-curve-getparamatpoint line_obj q)
(vlax-curve-getparamatpoint line_obj p)))))
)
(mapcar (function
(lambda (x y)
(vla-addline acsp (vlax-3d-point x) (vlax-3d-point y))
)
)
tmp
(cdr tmp)
)
(setq delobj_list (cons line_obj delobj_list))
)
)

)
(mapcar 'vla-delete delobj_list)
(vla-regen adoc acactiveviewport)
(vla-endundomark adoc)
(princ)
)
(prompt "\ntype BML to break many lines...")
(prin1)
(vl-load-com)
;;;Tested: 8/24/06 (A2005);2/21/08 (A2008);
Олег (jr.) вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > как создать точки на пересечении всех линий чертежа?



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Лисп, создающий точки во всех узлах polyface mesh Torino LISP 4 22.05.2018 13:58
Как узнать длинну всех выделенных линий ? bdfy AutoCAD 33 21.05.2014 08:31
Можно ли изменить шрифт во всех блоках чертежа sibcat AutoCAD 8 02.04.2014 10:57
Несвойственные Автокаду вещи Vova AutoCAD 49 01.02.2012 19:33
Можно ли заменить свойство цвета на ByLayer во всех блоках чертежа? dep AutoCAD 10 06.10.2008 08:34