¿Por qué los dibujos CAD deben regenerarse con la ventana gráfica completa cada vez que se activa la ventana gráfica?
Sin embargo, la creación de ventanas gráficas CAD es bastante tediosa.
El uso de este programa puede hacer que la operación sea muy sencilla.
Primero, dibuja las ventanas gráficas una por una en el dibujo usando líneas PL rectangulares.
Luego cargue el programa (comando: appload, seleccione archivo)
Ejecute el comando vp.
Seleccione la línea PL dibujada arriba.
Fin.
Cita
;;; Nombre de archivo: CreateViewport.lsp
;;; Autor: Wu Shouwei
;;; Article.asp?act=editamp;id=297
(defun c:vp ()
(princ"
Seleccione la línea PL para crear la ventana gráfica:" )
(setq ss(ssget (list (cons 0 "*POLYLINE"))))
(setq sslist (wjm_ss2lst ss))
(setq pospt (lista 0 0 0 0))
(foreach en sslist
(setq obj (vlax-ename-gt; vla-object en))
(vla-getboundingbox obj 'll 'ur)
(setq pt1 (vlax-safearray-gt; list ll))
(setq pt2 (vlax-safearray-gt; list ur ))
(setq cenpt(MIDpt pt1 pt2))
(setq ancho (- (car pt2)(car pt1)))
(setq altura (- (cadr pt2)(cadr pt1)))
(ax: CreateVP
(vla-get-activedocument (vlax-get-acad-object))
cenpt
ancho
alto
pospt
)
(setq pospt(polar pospt 0 ancho))
)
)
)
(defun ax:CreateVP (centro de anuncios ancho alto alto pospt / ps ent)
(setq ps (anuncio vla-get-paperspace))
(anuncio vla-put-activespace acpaperspace)
(anuncio vla-put-mspace : vlax-false)
(setq ent
(vla-addpviewport
ps
(vlax-safearray-fill
(vlax-make-safearray
vlax-vbdouble
( contras 0 2)
)
(si pospt pospt centro)
)
ancho
alto
)
)
( vla-put-viewporton ent:vlax-true)(vla-display ent:vlax-true)(vla-update ent)
;;;
(setq ViewPort (vla-AddPViewport Space (vlax-3d-point 1000 1000) 500 500))
;;;;( vla-put-target ent (vlax-3d-point center)) p>
p>
(anuncio vla-put-mspace: vlax-true)
(anuncio vla-put-activepviewport)
(vla-put- activepviewport ad ent)
(vla- zoomcenter (vlax-get-acad-object) (vlax-3d-point (car center) (cadr center) 0) 1)
( vla-put-mspace ad: vlax-false)
; Establezca la relación de escala.
(vla-put-StandardScale ent 1)
(vla-put-customscale ent 1)
ent
) p>
;;;Convertir selección establecida en tabla
(defun wjm_ss2lst (ss / n lst1)
(if ss
(repetir ( setq n (sslength ss))
(setq lst1 (cons (ssname ss (setq n (1- n))) lst1))
)
)
)
)