明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: xiaocainiao

[提问] 难题求教!光标在视口内如何获取布局空间的视图高度

[复制链接]
发表于 2023-2-18 18:49:19 | 显示全部楼层
如果字高本身
就是依据布局的viewsize确定的
那么视口内动态时
退出视口viewsize再进去
应该不会影响字高


回复

使用道具 举报

发表于 2023-2-18 19:19:17 | 显示全部楼层
(getvar "screensize")
回复

使用道具 举报

 楼主| 发表于 2023-2-18 19:41:34 | 显示全部楼层
masterlong 发表于 2023-2-18 18:49
如果字高本身
就是依据布局的viewsize确定的
那么视口内动态时

主要还需要实时获取视口内光标的位置、然后修改图形、退出视口就没法操作了、现在就是卡在这块了
回复

使用道具 举报

 楼主| 发表于 2023-2-18 19:54:47 | 显示全部楼层
xj6019 发表于 2023-2-18 19:19
(getvar "screensize")

screensize这个变量貌似有点问题、它是放大视图时值也变大、当视口线超出屏幕显示时就成固定值了;viewsize这个变量会同步变化、不会出现定值的情况
回复

使用道具 举报

 楼主| 发表于 2023-2-18 20:02:39 | 显示全部楼层
masterlong 发表于 2023-2-18 18:49
如果字高本身
就是依据布局的viewsize确定的
那么视口内动态时

我现在想到的办法就是视口内执行时先最大化视口、程序结束恢复视口状态
回复

使用道具 举报

发表于 2023-2-18 20:57:37 | 显示全部楼层
我是建议你在第一次计算动态文字高度的时候
就先退出视口viewsize以后再进视口
你说的中途退出视口会导致程序出问题
对这个说法表示强烈的怀疑
回复

使用道具 举报

 楼主| 发表于 2023-2-19 07:29:55 | 显示全部楼层
masterlong 发表于 2023-2-18 20:57
我是建议你在第一次计算动态文字高度的时候
就先退出视口viewsize以后再进视口
你说的中途退出视口会导致 ...

因为这个计算不是只计算一次、是随着滚轮缩放不停的获取布局空间视图高度、如果只获取一次退出视口肯定没毛病的
回复

使用道具 举报

发表于 2023-2-19 10:42:38 | 显示全部楼层
你开心就好,再见
回复

使用道具 举报

发表于 2023-2-19 11:28:35 | 显示全部楼层
建个命名视图 保存     然后解锁视口   应该也可
回复

使用道具 举报

发表于 2023-2-19 11:56:03 | 显示全部楼层
;; Text Editor by Lee McDonnell (Lee Mac)
;; 04.06.2009

(defun c:MacEdit (/ fLst tEnt elst cnt styl gr dis ang)
  (vl-load-com)
  (setq fLst '("HEIGHT" "OBLIQUE" "TEXTSTYLE"))
  (or Mac$fun (setq Mac$fun 0))
  (if (and (setq tEnt (car (entsel "\nSelect Text Entity: ")))
           (wcmatch (cdadr (setq elst (entget tEnt))) "*TEXT")
    (princ (strcat "\n<< Mode: " (nth Mac$fun fLst) " >>"))
    (setq cnt (vl-position (cdr (assoc 7 elst)) (setq styl (tstyl)))))
    (while (or (eq (car (setq gr (grread t 5 0))) 5)
               (and (eq (car gr) 2)
                    (member (cadr gr) '(9 32))))
      (if (and (eq 2 (car gr)) (eq 9 (cadr gr)))
        (progn
          (setq Mac$fun (rem (1+ Mac$fun) 3))
          (princ (strcat "\n<< Mode: " (nth Mac$fun fLst) " >>"))))
      (if (and (eq 5 (car gr)) (listp (cadr gr)))
        (cond ((eq 0 Mac$fun)
               (setq dis (abs (- (cadadr gr) (caddr (assoc 10 elst)))))
               (entmod
                 (subst
                   (cons 40 dis) (assoc 40 elst) elst))
               (entupd (cdr (assoc -1 elst))))
              ((eq 1 Mac$fun)
               (setq ang (- (/ pi 2.) (angle (cdr (assoc 10 elst)) (cadr gr))))
               (entmod
                 (subst
                   (cons 51 ang) (assoc 51 elst) elst))
               (entupd (cdr (assoc -1 elst))))))
      (if (and (eq 2 Mac$fun) (eq 2 (car gr)) (eq 32 (cadr gr)))
        (progn
          (entmod
            (subst
              (cons 7 (nth (rem (setq cnt (1+ cnt)) (length styl)) styl))
                (assoc 7 elst) elst))
          (entupd (cdr (assoc -1 elst)))))))        
  (princ))

(defun tstyl (/ tdef lst)
  (while (setq tdef (tblnext "STYLE" (not tdef)))
    (setq lst (cons (cdr (assoc 2 tdef)) lst)))
  lst)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-16 10:38 , Processed in 0.144329 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表