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貌似差不多、不过我现在加了一个判断、就是先判断当前布局内所有的视口中、有没有视口不再屏 ...
你这个相当于先全部显示所有图形、然后执行命令、最后再恢复到上一个视图、反正不管怎么弄、都得让图形先在屏幕内显示出来才行