xiaocainiao 发表于 2022-5-21 12:57:50

pzweng 发表于 2022-5-21 12:43
你为什么不直接改视口的注释比例呢?没在布局图里出过图纸,感觉CAD的注释性非常的不好用

没找到直接改视口注释比例的的函数、而且注释性比较特殊、必须是比例列表里面存在的比例才能切换

pzweng 发表于 2022-5-21 13:35:55

xiaocainiao 发表于 2022-5-21 12:57
没找到直接改视口注释比例的的函数、而且注释性比较特殊、必须是比例列表里面存在的比例才能切换

摸索了一下,在视口的模型空间改和改视口比例效果完全不了样,视口比例一改的话图纸也缩放了,直接在模型空间改CANNOSCALE变量,只是让注释进行缩放

xiaocainiao 发表于 2022-5-21 15:45:29

pzweng 发表于 2022-5-21 13:35
摸索了一下,在视口的模型空间改和改视口比例效果完全不了样,视口比例一改的话图纸也缩放了,直接在模型 ...

是的、注释性就是这点不好、它和视口比例是分开的、必须要进视口才能切换、视口比例直接选择视口就可以改

xiaocainiao 发表于 2022-5-31 15:22:35

pzweng 发表于 2022-5-17 19:25
(defun c:ms (/ e doc)
(setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
(vla-put-mspa ...

我今天又试了一下这个代码、发现不行、它只能进入屏幕可见范围内的视口、屏幕外的进不去、所以还得用Z+O的形式

guankuiwu 发表于 2022-5-31 20:14:10

pzweng 发表于 2022-5-21 12:43
你为什么不直接改视口的注释比例呢?没在布局图里出过图纸,感觉CAD的注释性非常的不好用

说的对,之前用过这个,很不好用。最后放弃了。

pzweng 发表于 2022-6-1 08:00:41

xiaocainiao 发表于 2022-5-31 15:22
我今天又试了一下这个代码、发现不行、它只能进入屏幕可见范围内的视口、屏幕外的进不去、所 ...

那个代码需要你自己改一下,并不能完全满足你的要求

xiaocainiao 发表于 2022-6-1 08:06:52

pzweng 发表于 2022-6-1 08:00
那个代码需要你自己改一下,并不能完全满足你的要求

我已经改成ssget “X”模式了、但还是进入不了屏幕外的视口中、只能在可见的视口中循环。感觉就是CAD本身的限制

pzweng 发表于 2022-6-1 10:00:13

xiaocainiao 发表于 2022-6-1 08:06
我已经改成ssget “X”模式了、但还是进入不了屏幕外的视口中、只能在可见的视口中循环。感觉就是CAD本身 ...

(defun c:ms (/ e doc ctab state ss sc _dxf id)
(defun _dxf (c e) (cdr (assoc c (entget e))))
(if (and
        (setq doc (vla-get-activedocument (vlax-get-acad-object)))
        (= (getvar 'tilemode) 0)
        (setq ctab (getvar 'ctab))
        (setq state (vla-get-mspace doc))
        (null (vla-put-mspace doc :vlax-false))
        (setq ss (ssget "X" '((0 . "VIEWPORT"))))
        (setq sc "1:5")
      )
    (progn
      (vla-zoomall (vlax-get-acad-object))
      (vla-put-mspace doc :vlax-true)
      (repeat (setq i (sslength ss))
        (setq e (ssname ss (setq i (1- i))))
        (if (and (/= 1 (setq id (_dxf 69 e))) (= (_dxf 410 e) ctab))
          (progn (setvar 'cvport id) (setvar 'cannoscale sc))
        )
      )
    )
)
(vla-put-mspace doc :vlax-false)
(vla-zoomprevious (vlax-get-acad-object))
(vla-put-mspace doc state)
(princ)
)

xiaocainiao 发表于 2022-6-1 10:23:09

本帖最后由 xiaocainiao 于 2022-6-1 10:25 编辑

pzweng 发表于 2022-6-1 10:00
(defun c:ms (/ e doc ctab state ss sc _dxf id)
(defun _dxf (c e) (cdr (assoc c (entget e))))
...
这个和ZOOM+O貌似差不多、不过我现在加了一个判断、就是先判断当前布局内所有的视口中、有没有视口不再屏幕内、如果有就先执行ZOOM+O、没有就不执行ZOOM+O、目前就想到这个笨方法了

xiaocainiao 发表于 2022-6-1 10:30:16

xiaocainiao 发表于 2022-6-1 10:23
这个和ZOOM+O貌似差不多、不过我现在加了一个判断、就是先判断当前布局内所有的视口中、有没有视口不再屏 ...

你这个相当于先全部显示所有图形、然后执行命令、最后再恢复到上一个视图、反正不管怎么弄、都得让图形先在屏幕内显示出来才行
页: 1 2 [3] 4
查看完整版本: 求助!用lisp如何循环进入选择的视口内