sbwdx 发表于 2019-12-16 13:36:51

这种布局视口线,怎么生成?

本帖最后由 sbwdx 于 2019-12-16 14:59 编辑

已解决,谢谢各位老师!

xj6019 发表于 2019-12-16 14:19:35

表述没看懂,你是不是就想新建视口的时候,完全对齐模型空间的矩形线框,在建好视口的时候模型空间的边线看不到就行,是吧

sbwdx 发表于 2019-12-16 14:31:29

xj6019 发表于 2019-12-16 14:19
表述没看懂,你是不是就想新建视口的时候,完全对齐模型空间的矩形线框,在建好视口的时候模型空间的边线看 ...

你的意思是,先有模型范围,再有视口范围,刚好一样,我是先有视口范围,确定图纸比例和位置后,模型空间,生成的矩形,就是这个视口框,范围,我要那个矩形框,建立视图范围,我再用VIEW恢复视图,布局其他视口也是这个大小。

xj6019 发表于 2019-12-16 14:33:48

本帖最后由 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)
)

sbwdx 发表于 2019-12-16 14:45:39

xj6019 发表于 2019-12-16 14:33
如果是的话:
第一种方法,布局空间正常新建视口,然后给定比例,调整好大体位置,按布局大小画一个矩形( ...

老师这个有点复杂了,我觉得GIF动画,效果就可以了,你说的第一种方法,画矩形,CHS,我写出来的,我就是不想画那个矩形,我觉得麻烦,giF动画,就是布局空间进入视口,命令以后,模型空间,直接就有这个视口一模一样大小的矩形了,然后切换到模型空间那个(setvar "TILEMODE" 0)就可以,我就不知道,GIF那矩形利用啥原理生成的。

sbwdx 发表于 2019-12-16 14:58:48

想到了,已解决,利用视图,预定义,恢复就行,不用矩形就可以了!没有那么麻烦的!谢谢各位老师!

sbwdx 发表于 2019-12-20 09:40:10

sbwdx 发表于 2019-12-16 14:58
想到了,已解决,利用视图,预定义,恢复就行,不用矩形就可以了!没有那么麻烦的!谢谢各位老师!

不用画矩形哈,直接建立视图,恢复就可以了
(setq st (getstring "\n请输入新建视图名称:"))
(Command "_.VIEW" "S" st)
(princ "【视图建立已完成!】")
页: [1]
查看完整版本: 这种布局视口线,怎么生成?