masterlong 发表于 2023-2-18 18:49:19

如果字高本身
就是依据布局的viewsize确定的
那么视口内动态时
退出视口viewsize再进去
应该不会影响字高


xj6019 发表于 2023-2-18 19:19:17

(getvar "screensize")

xiaocainiao 发表于 2023-2-18 19:41:34

masterlong 发表于 2023-2-18 18:49
如果字高本身
就是依据布局的viewsize确定的
那么视口内动态时


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

xiaocainiao 发表于 2023-2-18 19:54:47

xj6019 发表于 2023-2-18 19:19
(getvar "screensize")

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

xiaocainiao 发表于 2023-2-18 20:02:39

masterlong 发表于 2023-2-18 18:49
如果字高本身
就是依据布局的viewsize确定的
那么视口内动态时


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

masterlong 发表于 2023-2-18 20:57:37

我是建议你在第一次计算动态文字高度的时候
就先退出视口viewsize以后再进视口
你说的中途退出视口会导致程序出问题
对这个说法表示强烈的怀疑

xiaocainiao 发表于 2023-2-19 07:29:55

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

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

masterlong 发表于 2023-2-19 10:42:38

你开心就好,再见

guosheyang 发表于 2023-2-19 11:28:35

建个命名视图 保存   然后解锁视口   应该也可

guosheyang 发表于 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)
页: 1 [2] 3
查看完整版本: 难题求教!光标在视口内如何获取布局空间的视图高度