这种布局视口线,怎么生成?
本帖最后由 sbwdx 于 2019-12-16 14:59 编辑已解决,谢谢各位老师!
表述没看懂,你是不是就想新建视口的时候,完全对齐模型空间的矩形线框,在建好视口的时候模型空间的边线看不到就行,是吧 xj6019 发表于 2019-12-16 14:19
表述没看懂,你是不是就想新建视口的时候,完全对齐模型空间的矩形线框,在建好视口的时候模型空间的边线看 ...
你的意思是,先有模型范围,再有视口范围,刚好一样,我是先有视口范围,确定图纸比例和位置后,模型空间,生成的矩形,就是这个视口框,范围,我要那个矩形框,建立视图范围,我再用VIEW恢复视图,布局其他视口也是这个大小。 本帖最后由 xj6019 于 2019-12-16 14:36 编辑
如果是的话:
第一种方法,布局空间正常新建视口,然后给定比例,调整好大体位置,按布局大小画一个矩形(覆盖重叠于需要线框的视口),选择矩形,命令chs,默认当前视口的情况下直接回车,不是当前视口的话,点击当前视口一下,切换到当前视口,然后就创建了一个完全相同的矩形在模型空间,模型空间制作相同的比例时候的时候复制那个矩形,到需要创建的位置,布局空间用调好比例的视口拉动对角点,套上模型空间的矩形就好
第二种方式,lisp直接创建,参考和代码如下:
http://bbs.mjtd.com/forum.php?mo ... hlight=%CA%D3%BF%DA
defun c:wv ()
(setvar "DYNMODE" 3)
(setvar "cmdecho" 0)
(setq LAY (getvar "CLAYER"))
(setq os (getvar "OSMODE"))
(setq olderr *error*) ;保存原有*erroer*函数内容
(defun *error* (msg) ;自定义出错处理
(COMMAND "CLAYER" LAY)
(setq *error* olderr)
(princ errn)
)
(if (= scaa nil)
(setq scaa "100")
)
;(if (= 1 (getvar "TILEMODE"))
; (progn
(setq err_old *error*
*error* err_new
) ;_ end of setq
(setvar "OSMODE" 1)
(command "model")
(princ "\n请点取需要出图范围第一角点:\n")
(setq FP (getpoint))
(setq SP (getcorner FP "\n请点取出图范围另一角点:\n"))
(setq HT (abs (- (cadr sp) (cadr fp))))
(setq WD (abs (- (car sp) (car fp))))
(COMMAND "CLAYER" LAY)
(setvar "OSMODE" os)
(setq *error* olderr) ;恢复原有*error*函数内容
(COMMAND "CLAYER" LAY)
(setvar "OSMODE" os)
(setvar "TILEMODE" 0)
; (princ
;"2\n\n\n★★注意:\n\n若现在不是您要创建视口的布局空间,请结束此命令,\n并手动切换至要要创建视口的布局重新运行本命令。\n\n"
;)
;(c:wv)
;)
;(progn
;(if (or (null fp) (null sp))
;(progn
; (princ "\n程序将切换至【模型空间】设置视口显示区域!")
; (setvar "TILEMODE" 1)
; (c:wv)
; )
; (progn
(setq sca
(getstring
(strcat
"\n空格重複上次比例,或輸入新出圖比例【 1︰" scaa "】>1:"
)
)
)
(if (= sca "")
(setq sca scaa)
) ;_ end of if
(setq scaa sca)
(setq scal (atoi (substr sca 1)))
(princ "\n请点取图的左下角点\n\n")
(setq BLP (getpoint))
(setq TRP (list (+ (car BLP) (/ Wd scal))
(+ (cadr BLP) (/ HT scal))
0
) ;_ end of list
) ;_ end of setq
(command "_zoom" BLP TRP)
(command "_mview" BLP TRP)
(command "_mspace")
(command "_zoom" fp sp)
(command "_zoom" (strcat "1/" sca "xp"))
(command "_pspace")
(command "_zoom" "e")
(command "mview" "l" "on" "c" BLP TRP "")
(COMMAND "LAYER" "M" "Defpoints" "C" "8" "" "")
(command "change" BLP "" "p" "la" "Defpoints" "")
(setq blp nil)
; )
;)
;)
;) ;end if
; (command "model")
(COMMAND "CLAYER" LAY)
(setvar "OSMODE" os)
(setq *error* olderr) ;恢复原有*error*函数内容
(COMMAND "CLAYER" LAY)
(setvar "OSMODE" os)
(princ)
) xj6019 发表于 2019-12-16 14:33
如果是的话:
第一种方法,布局空间正常新建视口,然后给定比例,调整好大体位置,按布局大小画一个矩形( ...
老师这个有点复杂了,我觉得GIF动画,效果就可以了,你说的第一种方法,画矩形,CHS,我写出来的,我就是不想画那个矩形,我觉得麻烦,giF动画,就是布局空间进入视口,命令以后,模型空间,直接就有这个视口一模一样大小的矩形了,然后切换到模型空间那个(setvar "TILEMODE" 0)就可以,我就不知道,GIF那矩形利用啥原理生成的。 想到了,已解决,利用视图,预定义,恢复就行,不用矩形就可以了!没有那么麻烦的!谢谢各位老师! sbwdx 发表于 2019-12-16 14:58
想到了,已解决,利用视图,预定义,恢复就行,不用矩形就可以了!没有那么麻烦的!谢谢各位老师!
不用画矩形哈,直接建立视图,恢复就可以了
(setq st (getstring "\n请输入新建视图名称:"))
(Command "_.VIEW" "S" st)
(princ "【视图建立已完成!】")
页:
[1]