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

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

Как на лиспе начертить много линий по заданным координатам из одной точки

Ответ
Поиск в этой теме
Непрочитано 26.09.2009, 17:56 #1
Как на лиспе начертить много линий по заданным координатам из одной точки
topograf83
 
Регистрация: 26.09.2009
Сообщений: 9

Подскажите пожалуйста. Задача из заданной точки, указанием мышки нужно прочертить линии, полилинии до заданного объекта, объектов.
т.е у меня есть одна точка и на определенном удалении от нее замкнутая полилиния, мне нужно чтобы из этой точки быстро были проведены линии к каждой ручки полилинии.
Заранее спасибо.
Просмотров: 2868
 
Непрочитано 26.09.2009, 19:42
#2
Дима_

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


После загрузки этого лиспа введи команду "zvezda"
Код:
[Выделить все]
(defun c:zvezda( / pt1)
(setq pt1 (getpoint "\nНачальную точку"))
(vla-startundomark (vlax-get-property (vlax-get-acad-object) 'ActiveDocument))
(mapcar '(lambda (pt2) (entmakex (list (cons 0 "line") (cons 10 pt1) (cons 11 pt2))))
(apply 'append (mapcar '(lambda (obj / lst) (if (setq lst (pltolist obj)) lst (3dplntolist obj))) 
(sstolist (ssget (list (cons -4 "<OR") (cons 0 "polyline") (cons 0 "lwpolyline") (cons -4 "OR>")))))))
(vla-endundomark (vlax-get-property (vlax-get-acad-object) 'ActiveDocument))
);end of zvezda

;библиотечные
(defun sstolist (ss / i lst); конвертирует набор в список
(setq i 0)
(if ss
(repeat (sslength ss)
(setq lst (append lst (list (ssname ss i))) i (1+ i))
));end of repeat & if
lst
);end of sstolist

(defun pltolist (obj / tmp); возращает список координат вершин полилинии
(if (= (cod 0 obj) "LWPOLYLINE")
(mapcar '(lambda (x) (trans (append (cdr x) (list (cod 38 obj))) (cod 210 obj) 0)) (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget obj)))
);end of if
);end of pltolist

(defun 3dplntolist (pln / lst); возращает список координат вершин 3Д полилинии
(if (= (cod 0 pln) "POLYLINE")
(while (/= (cod 0 pln) "SEQEND")
(setq	lst (cons (cod 10 pln) lst)
	pln (entnext pln)
);end of setq
));end of while & if
(cdr (reverse lst))
);end of 3dplntolist

(defun cod (cd obj) ; возращает код cd примитива obj.
(if (and obj (= (type obj) 'ename))
(cdr (assoc cd (entget obj)))
));end of cod
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 26.09.2009, 20:04
#3
topograf83


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


Дима огромное спасибо!!! Все рабтает как часы, я даже не ожидал, что мне так быстро помогут. Большое человеческое спасибо.
topograf83 вне форума  
 
Непрочитано 26.09.2009, 21:05
#4
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,996


2 Дима_. Вместо конструкцуии ИЛИ (OR) в ssget можно еще использовать и *
Код:
[Выделить все]
 
(ssget '((0 . "*POLYLINE")))
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Непрочитано 26.09.2009, 22:53
#5
Дима_

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


Знаю, я просто про обычные полилинии не сразу вспомнил - и добавил "наотмаш", но все равно спасибо - что смотришь - я чужой код вобще с трудом воспринимаю - привык с asm'а в столбец "без разноса" писать - даже немного завидую - мне прощ новую функцию напсать, чем в чужую "въезжать".
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > Как на лиспе начертить много линий по заданным координатам из одной точки



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание нового типа линий Apelsinov AutoCAD 915 08.07.2022 12:36
Как начертить линию с заданным углом наклона? evsu AutoCAD 12 07.11.2008 23:29
Мониторы LCD CRT Разное 94 17.06.2008 10:51
как в solidworks поставить "групповой" размер от одной точки покругу? jeniabell SolidWorks 2 15.01.2008 14:38
ЮМОР 2006 =) Perezz!! Разное 1122 04.01.2007 00:46