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

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

лисп для обрисовки границ видовых экранов листа в модели

Ответ
Поиск в этой теме
Непрочитано 21.05.2009, 16:08 #1
лисп для обрисовки границ видовых экранов листа в модели
Composter
 
Отопление и вентиляция
 
Москва
Регистрация: 31.10.2008
Сообщений: 445

нашел на сайте http://www.menziengineering.ch/Downl...ownload.htm#31 лисп, там рисовались границы только прямоугольных ВЭ, решил его дополнить.но вот мне не нравиятся несколько строк
Код:
[Выделить все]
			(vl-cmdf "_.MSPACE")
			(vla-put-ActivePViewport (vla-get-activedocument(vlax-get-acad-object)) (vlax-ename->vla-object Vp))
			(vl-cmdf "_.PSPACE")
помогите оптимизировать.и еще я хотел что бы выбор был автоматический т.е. ssget "_X" но для проделывания выше приведеных строк нужно что бы я находился в пространстве листа

Код:
[Выделить все]
(defun c:zod11 (/ ss1 ss2 ss3 zzz PolObj PntArr VptObj XofSet YofSet VptCen PntArr)

(setq ss1(ssget '((0 . "VIEWPORT"))))
(setq ss2 (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss1))))

(foreach vp ss2
	(progn
			(vl-cmdf "_.MSPACE")
			(vla-put-ActivePViewport (vla-get-activedocument(vlax-get-acad-object)) (vlax-ename->vla-object Vp))
			(vl-cmdf "_.PSPACE")
	(if
		(assoc 340(entget vp))
		(progn
			(setq zzz nil)
			(setq ss3 (mapcar'cdr(vl-remove-if-not'(lambda (x) (= (car x) 10))(entget(cdr(assoc 340(entget vp)))))))
			(foreach pt ss3 (setq zzz(append zzz(trans pt 3 2))))
			(setq 	PntArr 		(vlax-make-safearray vlax-vbDouble (cons 0 (1- (length zzz)))))
			(vlax-safearray-fill PntArr zzz)
			(setq 	PolObj 	(vla-AddPolyline 
						(vla-get-ModelSpace(vla-get-ActiveDocument(vlax-get-acad-object)))
						PntArr
					)
				PolObj (vla-put-Closed PolObj :vlax-true)

			)
		);_ end_of_progn

		(progn
			(setq 	VptObj 		(vlax-ename->vla-object Vp)
				XofSet	 	(/ (vla-get-Width VptObj) 2.0)
				YofSet		(/ (vla-get-Height VptObj) 2.0)
				VptCen		(vlax-get VptObj 'Center)
				PntArr 		(vlax-make-safearray vlax-vbDouble '(0 . 11))
			);_ end_of_setq

			(vlax-safearray-fill PntArr (append
				(trans (list (- (car VptCen) XofSet) (- (cadr VptCen) YofSet)) 3 2)
				(trans (list (+ (car VptCen) XofSet) (- (cadr VptCen) YofSet)) 3 2)
				(trans (list (+ (car VptCen) XofSet) (+ (cadr VptCen) YofSet)) 3 2)
				(trans (list (- (car VptCen) XofSet) (+ (cadr VptCen) YofSet)) 3 2)
							)
			)
			(setq 	PolObj 	(vla-AddPolyline 
						(vla-get-ModelSpace(vla-get-ActiveDocument(vlax-get-acad-object)))
						PntArr
					)
				PolObj (vla-put-Closed PolObj :vlax-true)
			)
			(vlax-release-object VptObj)
		);_ end_of_progn
	);_ end_of_if
	)
);_ end_of_foreach
(princ)
);_end_of_defun
Просмотров: 4449
 
Непрочитано 22.05.2009, 13:32
#2
Hans667

сети
 
Регистрация: 12.04.2007
SPb
Сообщений: 536
Отправить сообщение для Hans667 с помощью AIM Отправить сообщение для Hans667 с помощью Skype™


что то у меня не твой лисп ни с оригинала не заработал
__________________
Errare humanum est, insipientis perseverare
Hans667 вне форума  
 
Автор темы   Непрочитано 22.05.2009, 14:11
#3
Composter

Отопление и вентиляция
 
Регистрация: 31.10.2008
Москва
Сообщений: 445


скорее всего надо было запустить (vl-load-com),что бы пошло.немного доработал код , но возникли другие вопросы.

Код:
[Выделить все]
(defun c:zod11 (/ ss1 ss2 ss3 zzz PolObj PntArr VptObj XofSet YofSet VptCen PntArr)
(vl-load-com)
(setq ss1(ssget "_X" '((0 . "VIEWPORT"))))


(setq ss2 (vl-remove-if-not
		'(lambda (obj)
			(numberp (vl-catch-all-apply 'vla-get-LabelBlockId (list(vlax-ename->vla-object obj))) )
		);end of lambda
	  (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss1)))
	   )
)

(foreach vp ss2
(progn
	(if 	(not  (equal  (vla-get-ActiveLayout(vla-get-activedocument(vlax-get-acad-object))) (vla-item(vla-get-Layouts(vla-get-activedocument(vlax-get-acad-object)))(cdr(assoc 410(entget vp))))	)	)
		(vla-put-ActiveLayout(vla-get-activedocument(vlax-get-acad-object)) (vla-item(vla-get-Layouts(vla-get-activedocument(vlax-get-acad-object)))(cdr(assoc 410(entget vp)))))
	)
	(if 	(not  (equal (vl-catch-all-apply 'vla-get-ActivePViewport (list(vla-get-activedocument(vlax-get-acad-object)))) (vlax-ename->vla-object vp)  ) )
		(progn
			(vla-put-MSpace (vla-get-activedocument(vlax-get-acad-object))1)
			(vla-put-ActivePViewport (vla-get-activedocument(vlax-get-acad-object)) (vlax-ename->vla-object Vp))
;			(vla-put-MSpace (vla-get-activedocument(vlax-get-acad-object))0)
		)
	)
	(vla-put-MSpace (vla-get-activedocument(vlax-get-acad-object))0)
	(if
		(assoc 340(entget vp))
		(progn
			(setq zzz nil)
			(setq ss3 (mapcar'cdr(vl-remove-if-not'(lambda (x) (= (car x) 10))(entget(cdr(assoc 340(entget vp)))))))
			(foreach pt ss3 (setq zzz(append zzz(trans pt 3 2))))
			(setq 	PntArr 		(vlax-make-safearray vlax-vbDouble (cons 0 (1- (length zzz)))))
			(vlax-safearray-fill PntArr zzz)
			(setq 	PolObj 	(vla-AddPolyline 
						(vla-get-ModelSpace(vla-get-ActiveDocument(vlax-get-acad-object)))
						PntArr
					)
				PolObj (vla-put-Closed PolObj :vlax-true)

			)
		);_ end_of_progn

		(progn
			(setq 	VptObj 		(vlax-ename->vla-object Vp)
				XofSet	 	(/ (vla-get-Width VptObj) 2.0)
				YofSet		(/ (vla-get-Height VptObj) 2.0)
				VptCen		(vlax-get VptObj 'Center)
				PntArr 		(vlax-make-safearray vlax-vbDouble '(0 . 11))
			);_ end_of_setq

			(vlax-safearray-fill PntArr (append
				(trans (list (- (car VptCen) XofSet) (- (cadr VptCen) YofSet)) 3 2)
				(trans (list (+ (car VptCen) XofSet) (- (cadr VptCen) YofSet)) 3 2)
				(trans (list (+ (car VptCen) XofSet) (+ (cadr VptCen) YofSet)) 3 2)
				(trans (list (- (car VptCen) XofSet) (+ (cadr VptCen) YofSet)) 3 2)
							)
			)
			(setq 	PolObj 	(vla-AddPolyline 
						(vla-get-ModelSpace(vla-get-ActiveDocument(vlax-get-acad-object)))
						PntArr
					)
				PolObj (vla-put-Closed PolObj :vlax-true)
			)
			(vlax-release-object VptObj)
		);_ end_of_progn
	);_ end_of_if
	)
);_ end_of_foreach
(vla-put-ActiveSpace (vla-get-activedocument(vlax-get-acad-object)) 1)
(vla-Regen (vla-get-activedocument(vlax-get-acad-object)) 1)
(princ)
);_end_of_defun
вот этим фильром не удалю ли я нужные ВЭ? (numberp (vl-catch-all-apply 'vla-get-LabelBlockId (list(vlax-ename->vla-object obj))) ) я обнаружил что если выделять ВЭ с помощью "_X" то за ВЭ еще принимается сам лист бумаги в пространстве листа.т.е. если удалить все ВЭ и запустить (ssget "_X" '((0 . "VIEWPORT"))) выберется как минимум 1 ВЭ(если листов в чертеже 1).
и еще, нельзя ли как нибудь пользоваться функцией trans не активизируя нужный ВЭ.просто когда в листе один ВЭ тогда не нужно активизировать его, а когда их несколько то если не сделать активным текщий ВЭ то транспонироваться точки будут относительно другого активного ВЭ.
Composter вне форума  
 
Непрочитано 22.05.2009, 14:56
#4
VVA

Инженер LISP
 
Регистрация: 11.05.2005
Минск
Сообщений: 6,991
<phrase 1= Отправить сообщение для VVA с помощью Skype™


Набор видовых экранов текущего листа без 1-го
Код:
[Выделить все]
(setq nb (ssget "_X"
 (list
 '(0 . "VIEWPORT")
'(-4 . "<>")
'(69 . 1)
(cons 410 (getvar "CTAB")))))
Почитай еще тему Как разнести листы по разным файлам?
__________________
Как использовать код на Лиспе читаем здесь
VVA вне форума  
 
Автор темы   Непрочитано 22.05.2009, 16:38
#5
Composter

Отопление и вентиляция
 
Регистрация: 31.10.2008
Москва
Сообщений: 445


ну я планировал выделение во всех листах ,поэтому 410 отброшу.
посмотрел VPO.не учел я выключения ВЭ и удаление координаты z.
а для чего перевод (trans) каждой точки из 3 в 2,потом из 2 в 1,а потом из 1 в 0.нельзя сразу из 3 в 0 ?
Composter вне форума  
 
Автор темы   Непрочитано 26.05.2009, 09:43
#6
Composter

Отопление и вентиляция
 
Регистрация: 31.10.2008
Москва
Сообщений: 445


посмотрел я лисп vpo.это примерно то что я хотел сделать, только мне нужно было что была обрисовка всех экранов во всех листах.и фильтр
'(-4 . "<>")
'(69 . 1)
действует только в купе с (cons 410 (getvar "CTAB")).если же открыть файл и не входить в листы то фильром (ssget "_X" (list '(0 . "VIEWPORT")'(-4 . "<>")'(69 . 1))) выделятся ВЭ с (69 . 1).т.е. если 4 листа то не выделится ВЭ с (69 . 1) только на одном листе ,который был последний открыт, на остальных же 3 листах будет выделен этот лишний ВЭ.
так что нужен еще фильтр (vl-remove-if-not'(lambda (obj)(numberp (vl-catch-all-apply 'vla-get-LabelBlockId (list(vlax-ename->vla-object obj))) ))ss1)) . для этих "лишних" ВЭ vla-get-LabelBlockId выдает "ошибка".
вот мой вариант

Код:
[Выделить все]
;обводит видовые экраны в модели
(defun c:zod11 (/ ss1 ss3 VptObj XofSet YofSet VptCen )
(vl-load-com)
(if	(equal (vl-catch-all-apply 'vla-get-MSpace (list(vla-get-activedocument(vlax-get-acad-object)))) :vlax-true)
	(vla-put-MSpace (vla-get-activedocument(vlax-get-acad-object))0)
)
(setq ss1	(ssget "_X" (list '(0 . "VIEWPORT")'(-4 . "<>")'(69 . 1))))
(setq ss1  	(vl-remove-if 'listp (mapcar 'cadr (ssnamex ss1))))
(setq ss1	(vl-remove-if-not'(lambda (obj)(numberp (vl-catch-all-apply 'vla-get-LabelBlockId (list(vlax-ename->vla-object obj))) ))ss1))
(foreach vp ss1
(progn
	(if 	(not  (equal  (vla-get-ActiveLayout(vla-get-activedocument(vlax-get-acad-object))) (vla-item(vla-get-Layouts(vla-get-activedocument(vlax-get-acad-object)))(cdr(assoc 410(entget vp))))	)	)
		(vla-put-ActiveLayout(vla-get-activedocument(vlax-get-acad-object)) (vla-item(vla-get-Layouts(vla-get-activedocument(vlax-get-acad-object)))(cdr(assoc 410(entget vp)))))
	)
	(if	(equal	(vla-get-ViewportOn(vlax-ename->vla-object vp)) :vlax-false)
		(vla-put-ViewportOn(vlax-ename->vla-object vp)1)
	)
	(if 	(not  (equal (vl-catch-all-apply 'vla-get-ActivePViewport (list(vla-get-activedocument(vlax-get-acad-object)))) (vlax-ename->vla-object vp)  ) )
		(progn
			(vla-put-MSpace (vla-get-activedocument(vlax-get-acad-object))1)
			(vla-put-ActivePViewport (vla-get-activedocument(vlax-get-acad-object)) (vlax-ename->vla-object Vp))
		)
	)
	(vla-put-MSpace (vla-get-activedocument(vlax-get-acad-object))0)
	(setq ss3 nil)
	(if
		(assoc 340(entget vp))
		(setq ss3 (mapcar'cdr(vl-remove-if-not'(lambda (x) (= (car x) 10))(entget(cdr(assoc 340(entget vp)))))))
		(progn
			(setq 	VptObj 		(vlax-ename->vla-object Vp)
				XofSet	 	(/ (vla-get-Width VptObj) 2.0)
				YofSet		(/ (vla-get-Height VptObj) 2.0)
				VptCen		(vlax-get VptObj 'Center)
			);_ end_of_setq
			(setq ss3 (list
					(list (- (car VptCen) XofSet) (- (cadr VptCen) YofSet))
					(list (+ (car VptCen) XofSet) (- (cadr VptCen) YofSet))
					(list (+ (car VptCen) XofSet) (+ (cadr VptCen) YofSet))
					(list (- (car VptCen) XofSet) (+ (cadr VptCen) YofSet))
				)
			)

		);_ end_of_progn
	);_ end_of_if
	(setq ss3	(mapcar	'(lambda (pt)
		(setq 	pt (trans pt 3 2)
			pt (trans pt 2 1)
			pt (trans pt 1 0)
		) ;_ end of setq
				) ;_ end of lambda
			ss3
			) ;_ end of mapcar
	) ;_ end of setq
	(setq ss3 (mapcar '(lambda (zz) (mapcar '+ zz '(0 0))) ss3)) ;_Удаляем координату Z
	(setq ss3 (apply 'append ss3))
	(vla-put-closed
		(vla-addlightweightpolyline
			(vla-get-modelspace (vla-get-activedocument(vlax-get-acad-object)))
				(vlax-make-variant
					(vlax-safearray-fill
						(vlax-make-safearray
							vlax-vbdouble
								(cons 0 (- (length ss3) 1))
						) ;_ end of vlax-Make-SafeArray
					ss3
					) ;_ end of vlax-SafeArray-Fill
				) ;_ end of vlax-Make-Variant
		) ;_ end of vla-AddLightWeightPolyline
	:vlax-true
	) ;_ end of vla-Put-Closed
);_ end_of_progn
);_ end_of_foreach
(vla-put-ActiveSpace (vla-get-activedocument(vlax-get-acad-object)) 1)
(vla-Regen (vla-get-activedocument(vlax-get-acad-object)) 1)
(princ)
);_end_of_defun
вроде бы все учел
Composter вне форума  
 
Автор темы   Непрочитано 03.07.2009, 11:06
#7
Composter

Отопление и вентиляция
 
Регистрация: 31.10.2008
Москва
Сообщений: 445


чуть чуть доработал лисп

Код:
[Выделить все]
(defun c:zod11 (/ ss1 ss3 VptObj XofSet YofSet VptCen )
(princ "\nобводит видовые экраны в модели ")
(if	(equal (vl-catch-all-apply 'vla-get-MSpace (list(vla-get-activedocument(vlax-get-acad-object)))) :vlax-true)
	(vla-put-MSpace (vla-get-activedocument(vlax-get-acad-object))0)
)
(setq ss1	(ssget "_X" (list '(0 . "VIEWPORT")'(-4 . "<>")'(69 . 1))))
(setq ss1  	(vl-remove-if 'listp (mapcar 'cadr (ssnamex ss1))))
(setq ss1	(vl-remove-if-not'(lambda (obj)(numberp (vl-catch-all-apply 'vla-get-LabelBlockId (list(vlax-ename->vla-object obj))) ))ss1))
(foreach vp ss1
(progn
	(if 	(not  (equal  (vla-get-ActiveLayout(vla-get-activedocument(vlax-get-acad-object))) (vla-item(vla-get-Layouts(vla-get-activedocument(vlax-get-acad-object)))(cdr(assoc 410(entget vp))))	)	)
		(vla-put-ActiveLayout(vla-get-activedocument(vlax-get-acad-object)) (vla-item(vla-get-Layouts(vla-get-activedocument(vlax-get-acad-object)))(cdr(assoc 410(entget vp)))))
	)
	(if	(equal	(vla-get-MSpace(vla-get-activedocument(vlax-get-acad-object))) :vlax-true)
		(vla-put-MSpace (vla-get-activedocument(vlax-get-acad-object))0)
	)
	(if	(equal	(vla-get-ViewportOn(vlax-ename->vla-object vp)) :vlax-false)
		(vla-put-ViewportOn(vlax-ename->vla-object vp)1)
	)
	(if 	(not  (equal (vl-catch-all-apply 'vla-get-ActivePViewport (list(vla-get-activedocument(vlax-get-acad-object)))) (vlax-ename->vla-object vp)  ) )
		(progn
			(vla-put-MSpace (vla-get-activedocument(vlax-get-acad-object))1)
			(vla-put-ActivePViewport (vla-get-activedocument(vlax-get-acad-object)) (vlax-ename->vla-object Vp))
		)
	)
	(vla-put-MSpace (vla-get-activedocument(vlax-get-acad-object))0)
	(setq ss3 nil)
	(if
		(assoc 340(entget vp))
		(setq ss3 (mapcar'cdr(vl-remove-if-not'(lambda (x) (= (car x) 10))(entget(cdr(assoc 340(entget vp)))))))
		(progn
			(setq 	VptObj 		(vlax-ename->vla-object Vp)
				XofSet	 	(/ (vla-get-Width VptObj) 2.0)
				YofSet		(/ (vla-get-Height VptObj) 2.0)
				VptCen		(vlax-get VptObj 'Center)
			);_ end_of_setq
			(setq ss3 (list
					(list (- (car VptCen) XofSet) (- (cadr VptCen) YofSet))
					(list (+ (car VptCen) XofSet) (- (cadr VptCen) YofSet))
					(list (+ (car VptCen) XofSet) (+ (cadr VptCen) YofSet))
					(list (- (car VptCen) XofSet) (+ (cadr VptCen) YofSet))
				)
			)

		);_ end_of_progn
	);_ end_of_if
	(setq ss3	(mapcar	'(lambda (pt)
		(setq 	pt (trans pt 3 2)
			pt (trans pt 2 1)
			pt (trans pt 1 0)
		) ;_ end of setq
				) ;_ end of lambda
			ss3
			) ;_ end of mapcar
	) ;_ end of setq
	(setq ss3 (mapcar '(lambda (zz) (mapcar '+ zz '(0 0))) ss3)) ;_Удаляем координату Z
	(setq ss3 (apply 'append ss3))
	(vla-put-closed
		(vla-addlightweightpolyline
			(vla-get-modelspace (vla-get-activedocument(vlax-get-acad-object)))
				(vlax-make-variant
					(vlax-safearray-fill
						(vlax-make-safearray
							vlax-vbdouble
								(cons 0 (- (length ss3) 1))
						) ;_ end of vlax-Make-SafeArray
					ss3
					) ;_ end of vlax-SafeArray-Fill
				) ;_ end of vlax-Make-Variant
		) ;_ end of vla-AddLightWeightPolyline
	:vlax-true
	) ;_ end of vla-Put-Closed
);_ end_of_progn
);_ end_of_foreach
(vla-put-ActiveSpace (vla-get-activedocument(vlax-get-acad-object)) 1)
(vla-Regen (vla-get-activedocument(vlax-get-acad-object)) 1)
(princ)
);_end_of_defun
я его использую вместе с другим лиспом.вначале в будущих листах проставляю масштаб ВЭ ,после zod11 обвожу их в модели.раставляю "проэкции" ВЭ как я хочу чтобы отображалось в листах.и запускаю zod12 .принцип такой вначале щелкаю по левому верхнему краю "проекции листа в модели" потом ентер,выбираю нужный лист лист ,и щелкаю по левому верхнему краю ВЭ .можно по нижнему углу,кому как удобнее, а также можно за раз 10 выставить ВЭ,т.е.можно указывать пока не нажмете ентер.фунцию loc:dwgru-get-user-dcl можно найти на этом сайте.

Код:
[Выделить все]
(defun c:Zod12 (/ flag z w VE1)
(princ "\nвыставляет видовые экраны ")
(vla-put-ActiveSpace (vla-get-activedocument(vlax-get-acad-object)) 1)

(while 	(not flag)
	(if 	(setq z (getpoint (strcat "\nУказано    " (itoa(length w)) "    точек  ")))
		(setq w (append w (list z)))
		(setq flag T)
	)
) ;_ end of while

(while w
	(setvar "CTAB" (car(loc:dwgru-get-user-dcl "Укажите лист" (vl-remove "Model" (ttc-layouts-list)) nil)))
	(if	(equal	(vla-get-MSpace(vla-get-activedocument(vlax-get-acad-object))) :vlax-true)
		(vla-put-MSpace (vla-get-activedocument(vlax-get-acad-object))0)
	)
	(if	(>(length(vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget "_X" (list '(0 . "VIEWPORT")(cons 410 (getvar "CTAB"))))))))1)
		(mapcar '(lambda(x)
			(progn
				(if	(equal (vla-get-ViewportOn(vlax-ename->vla-object x)) :vlax-false)
					(vla-put-ViewportOn(vlax-ename->vla-object x)1)
				)
				(if	(equal (vla-get-DisplayLocked(vlax-ename->vla-object x)) :vlax-true)
					(vla-put-DisplayLocked(vlax-ename->vla-object x)0)
				)
			)
			)
		
		(vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget "_X" (list '(0 . "VIEWPORT")'(-4 . "<>")'(69 . 1)(cons 410 (getvar "CTAB")))))))
		)
	)
	(if	(>(length(vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget "_X" (list '(0 . "VIEWPORT")(cons 410 (getvar "CTAB"))))))))1)
		(progn
			(if	(>(length(vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget "_X" (list '(0 . "VIEWPORT")(cons 410 (getvar "CTAB"))))))))2)
				(progn	
					(while  (/=(length VE1)1)
						(princ "\nВыберите видовой экран, с которым будете сопоставлять модель (…1 шт…) ")
						(setq VE1 (vl-remove-if 'listp (mapcar 'cadr (ssnamex (ssget '((0 . "VIEWPORT")))))))
	
					)
					(if 	(not  (equal (vl-catch-all-apply 'vla-get-ActivePViewport (list(vla-get-activedocument(vlax-get-acad-object)))) (vlax-ename->vla-object(car VE1))  ) )
						(progn
							(vla-put-MSpace (vla-get-activedocument(vlax-get-acad-object))1)
							(vla-put-ActivePViewport (vla-get-activedocument(vlax-get-acad-object)) (vlax-ename->vla-object(car VE1)))
							(vla-put-MSpace (vla-get-activedocument(vlax-get-acad-object))0)
							(setq VE1 nil)
						)
					)
				)
			)
		
			(setq p3 (trans (getpoint (strcat "\nОсталось    " (itoa(length w)) "    точек  ")) 3 2))
			(vla-put-MSpace (vla-get-activedocument(vlax-get-acad-object))1)
			(vl-cmdf "_.pan" (car w) p3)
			(vla-put-MSpace (vla-get-activedocument(vlax-get-acad-object))0)
			(setq w (vl-remove (car w) w))
		)
		(alert "В этом листе нет видовых экранов")
	)
)
(princ)
(vla-put-ActiveSpace (vla-get-activedocument(vlax-get-acad-object)) 1)
) ;_ end of defun


(defun ttc-layouts-list ()
  (or doc (setq doc (vla-get-activedocument (vlax-get-acad-object))))
  
(mapcar 'vla-get-name
(vl-sort
    ((lambda (/ res)
       (vlax-for item (vla-get-layouts doc)
         (setq res (cons item res))
         ) ;_ end of vlax-for
       ) ;_ end of lambda
     )
    '(lambda (a b)
       (< (vla-get-taborder a) (vla-get-taborder b))
       ) ;_ end of lambda
    ) ;_ end of vl-sort
)
  ) ;_ end of defun
Composter вне форума  
 
Непрочитано 30.11.2009, 11:47
#8
saa


 
Регистрация: 25.09.2008
Новосибирск
Сообщений: 218


Хочу представить на суд форумчан lisp для рисования видовых экранов. В архиве файлы с необходимыми функциями.
Макрос для кнопки: ^C^C(load "saa_addviewport.lsp")(c:saa_addviewport).
p.s. просьба сильно не бить - это почти первый опыт написания lisp-выражений.
Вложения
Тип файла: rar LISP.rar (4.0 Кб, 212 просмотров)
saa вне форума  
 
Непрочитано 30.11.2009, 16:52
#9
Nike

Шаражпроектхалтурмонтаж
 
Регистрация: 29.10.2004
Талды-Париж
Сообщений: 5,991


Цитата:
Сообщение от saa Посмотреть сообщение
Хочу представить на суд форумчан lisp для рисования видовых экранов. В архиве файлы с необходимыми функциями. Макрос для кнопки: ^C^C(load "saa_addviewport.lsp")(c:saa_addviewport). p.s. просьба сильно не бить - это почти первый опыт написания lisp-выражений.
Здорово!
Можно кое-что интересное позаимствовать из CADALYST 06/06 Tip2126: vplo.lsp Viewport Layouts (c) 2006 Phil Tingsley
Nike вне форума  
 
Непрочитано 03.10.2011, 18:53
#10
ALFMario


 
Регистрация: 11.10.2007
Gomel
Сообщений: 68


c:zod11 выдает ошибку "Команда: Ошибка Automation. Ошибка при установке текущего видового экрана" это когда большой файл
saa_addviewport - не правильно определяет координаты если не мировая система координат
ALFMario вне форума  
 
Непрочитано 03.10.2011, 19:10
#11
saa


 
Регистрация: 25.09.2008
Новосибирск
Сообщений: 218


Цитата:
Сообщение от ALFMario Посмотреть сообщение
saa_addviewport - не правильно определяет координаты если не мировая система координат
да, факт
__________________
www.saa-blogs.blogspot.com
saa вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > LISP > лисп для обрисовки границ видовых экранов листа в модели

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сейсмозащита и сейсмоизоляция существующих, построенных зд. IANationalInformAgentstvo Прочее. Архитектура и строительство 216 20.01.2015 16:51
Предложения по расчетным моделям сооружений aldt Расчетные программы 8 06.07.2009 17:53
Мониторы LCD CRT Разное 94 17.06.2008 10:51
Черчение в модели для машиностроителей nikolaev AutoCAD 12 04.02.2008 16:47
Как перевести координаты Модели в координаты Листа? ===AAA=== Программирование 6 24.10.2007 22:09