Показать сообщение отдельно
Непрочитано 25.08.2011, 11:22 3 | #1
LISP. Компоновка видовых экранов на лист.
YRat
 
Support - ACD, ASD, ACA, ACM, RAC, RST
 
Stuttgart-Петербург
Регистрация: 19.10.2004
Сообщений: 238

Смысл и применение

Идем в пространство листа, жмем кнопку или вводим с клавиатуры AF
Программа прыгвет в модель, вы задаете область модели, которую хотите разместить в видовом экране, масштаб и.. и расополагаете разещенный уже на вашем курсоре видовой экран.

Код:
[Выделить все]
;Ansichtsfenster erzeugen.
;(c)2011 iLkraret (ilkraret@gmail.com)

(defun c:af ( / )
	(setvar "cmdecho" 0) ; Turn off command line echoing
	(setq layoutname (getvar "ctab")); Store current tab name

	(if (/= layoutname "Model") ; Must be started from a layout tab to establish destination, quit quietly if on Model tab
		(progn
			(setvar "tilemode" 1) 
			(setq modellunitsmulti 1)
			
			(setq p1 (getpoint "\nУкажите одну из вершин области: "))  
			(setq p2 (getcorner p1 "\nУкажите противоположную вершину области: "))

			(setq units (getvar "insunits")); Store current insunits

			(if (equal units 1) (setq modellunitsmulti 25.4))
			(if (equal units 2) (setq modellunitsmulti 304.8))
			(if (equal units 3) (setq modellunitsmulti 1609344))
			(if (equal units 5) (setq modellunitsmulti 10))
			(if (equal units 6) (setq modellunitsmulti 1000))
			(if (equal units 7) (setq modellunitsmulti 1000000))
			(if (equal units 8) (setq modellunitsmulti 25400000))
			(if (equal units 9) (setq modellunitsmulti 25400))
			(if (equal units 10) (setq modellunitsmulti 914.4))
			(if (equal units 11) (setq modellunitsmulti 0.0000001))
			(if (equal units 12) (setq modellunitsmulti 0.000001))
			(if (equal units 13) (setq modellunitsmulti 0.001))
			(if (equal units 14) (setq modellunitsmulti 100))
			(if (equal units 15) (setq modellunitsmulti 10000))
			(if (equal units 16) (setq modellunitsmulti 100000))
			(if (equal units 17) (setq modellunitsmulti 10000000000000))
			(if (equal units 18) (setq modellunitsmulti 149597806297768))
			(if (equal units 19) (setq modellunitsmulti 9460469428493040000))
			(if (equal units 20) (setq modellunitsmulti 30856959478640800000))

			(setq mass (getreal  "\nMasstab - 1:"))
			(setq vpxd (* (/ (abs (- (car p1) (car p2))) mass) modellunitsmulti)) ; Determine horizontal length of selected window
			(setq vpyd (* (/ (abs (- (cadr p1) (cadr p2))) mass) modellunitsmulti)) ; Determine vertical height of selected window
			(setq vpc (list (/ (+ (car p1) (car p2)) 2.0) (/ (+ (cadr p1) (cadr p2)) 2.0) 0.0)) ; Determine center point of selected model window
			(setvar "ctab" layoutname)
			(command "_mview" "0,0" (strcat "@" (rtos vpxd) "," (rtos vpyd))) ; Create Paper Space viewport
			(setq ssvp (ssget "_L")) ; Start selection set with last viewport frame
			(command "_mspace") ; Open viewport window to Model Space
			(command "_zoom" "_C" vpc (rtos vpyd)) ; Center view of viewport window using determined point
			(command "_zoom" "_SCALE" (strcat (rtos (/ modellunitsmulti mass)) "xp")) ; Set zoom scale of viewport window
			(command "_vports" "_LOCK" "_ON" ssvp "") ; Lock scale and position of model in viewport
			(command "_pspace") ; Close viewport window
 
			(command "._move" ssvp "" "0,0" pause )
		)
		(princ "\nThis command must be started from a layout sheet!") ; Need to start on a layout tab so program knows where to create the new viewports
	) 
(setvar "cmdecho" 1) ; Turn on command line echoing
)
__________________
без DWG мы никуда - и не туда, и не сюда...
Спасибо за то, что Вы есть, коллеги ;)

Последний раз редактировалось YRat, 08.11.2011 в 23:12.
Просмотров: 29257
 
Размещение рекламы