好的,这是另一个线程的后续,我想我终于有了这个。我刚刚试用过,它适用于所有布局选项卡上的四种尺寸的纸张。不知怎么的,虽然我觉得这可以被清理干净,提高效率。这是我自2012年1月以来一直致力于的全自动流程。一直以来,我们都想把它带到一个即使不懂AutoCAD的人也可以使用它的地方,现在有了这个部署,我们真的很接近了。无论部件图形最终的大小如何,这都会在每个布局上创建一个视口,然后将模型空间的范围居中。它快速检查CustomScale,然后稍微调整以匹配我们在此处使用的可接受比例:
(defun zoomit (_tabname _tl _br) (command "._CLAYER" "Viewports") (setvar "CTAB" _tabname) (command "._PSPACE") (command "._ZOOM" "A") (command "._MVIEW" _tl _br) (setq _vp1 (entlast)) (setq _vpscale (vlax-get-property (vlax-ename->vla-object _vp1) 'CustomScale)) ; Determine what scale will work best based on currently zoomed Viewport (if (and (>= _vpscale 0.0167) (<= _vpscale 0.02)) (progn (setq _vvpscale "1:60")(vlax-put-property (vlax-ename->vla-object _vp1) 'CustomScale (/ 1.0 60)) ); end progn ); end if (if (and (>= _vpscale 0.02) (< _vpscale 0.025)) (progn (setq _vvpscale "1:50") (vlax-put-property (vlax-ename->vla-object _vp1) 'CustomScale (/ 1.0 50)) ); end progn ); end if[color=#000000][font=arial](if (and (>= _vpscale 0.025) (< _vpscale 0.033))[/font][/color][font=arial][color=#000000] (progn[/color][/font][font=arial][color=#000000] (setq _vvpscale "1:40")[/color][/font][font=arial][color=#000000] (vlax-put-property (vlax-ename->vla-object _vp1) 'CustomScale (/ 1.0 40))[/color][/font][font=arial][color=#000000] ); end progn[/color][/font][font=arial][color=#000000]); end if[/color][/font][font=arial][color=#000000](if (and (>= _vpscale 0.033) (<= _vpscale 0.05))[/color][/font][font=arial][color=#000000] (progn[/color][/font][font=arial][color=#000000] (setq _vvpscale "1:30")[/color][/font][font=arial][color=#000000] (vlax-put-property (vlax-ename->vla-object _vp1) 'CustomScale (/ 1.0 30))[/color][/font][font=arial][color=#000000] ); end progn[/color][/font][font=arial][color=#000000]); end if[/color][/font][font=arial][color=#000000](if (and (>= _vpscale 0.05) (< _vpscale 0.0625))[/color][/font][font=arial][color=#000000] (progn[/color][/font][font=arial][color=#000000] (setq _vvpscale "1:20")[/color][/font][font=arial][color=#000000] (vlax-put-property (vlax-ename->vla-object _vp1) 'CustomScale (/ 1.0 20))[/color][/font][font=arial][color=#000000] ); end progn[/color][/font][font=arial][color=#000000]); end if[/color][/font][font=arial][color=#000000](if (and (>= _vpscale 0.0625) (< _vpscale 0.0833))[/color][/font][font=arial][color=#000000] (progn[/color][/font][font=arial][color=#000000] (setq _vvpscale "1:16")[/color][/font][font=arial][color=#000000] (vlax-put-property (vlax-ename->vla-object _vp1) 'CustomScale (/ 1.0 16))[/color][/font][font=arial][color=#000000] ); end progn[/color][/font][font=arial][color=#000000]); end if[/color][/font][font=arial][color=#000000](if (and (>= _vpscale 0.0833) (< _vpscale 0.1))[/color][/font][font=arial][color=#000000] (progn[/color][/font][font=arial][color=#000000] (setq _vvpscale "1:12")[/color][/font][font=arial][color=#000000] (vlax-put-property (vlax-ename->vla-object _vp1) 'CustomScale (/ 1.0 12))[/color][/font][font=arial][color=#000000] ); end progn[/color][/font][font=arial][color=#000000]); end if[/color][/font][font=arial][color=#000000](if (and (> _vpscale 0.1) (< _vpscale 0.125))[/color][/font][font=arial][color=#000000] (progn[/color][/font][font=arial][color=#000000] (setq _vvpscale "1:10")[/color][/font][font=arial][color=#000000] (vlax-put-property (vlax-ename->vla-object _vp1) 'CustomScale (/ 1.0 10))[/color][/font][font=arial][color=#000000] ); end progn[/color][/font][font=arial][color=#000000]); end if[/color][/font][font=arial][color=#000000](if (and (>= _vpscale 0.125) (< _vpscale 0.25))[/color][/font][font=arial][color=#000000] (progn[/color][/font][font=arial][color=#000000] (setq _vvpscale "1:8")[/color][/font][font=arial][color=#000000] (vlax-put-property (vlax-ename->vla-object _vp1) 'CustomScale (/ 1.0 )[/color][/font][font=arial][color=#000000] ); end progn[/color][/font][font=arial][color=#000000]); end if[/color][/font][font=arial][color=#000000](if (and (>= _vpscale 0.25) (< _vpscale 0.5))[/color][/font][font=arial][color=#000000] (progn[/color][/font][font=arial][color=#000000] (setq _vvpscale "1:4")[/color][/font][font=arial][color=#000000] (vlax-put-property (vlax-ename->vla-object _vp1) 'CustomScale (/ 1.0 4))[/color][/font][font=arial][color=#000000] ); end progn[/color][/font][font=arial][color=#000000]); end if[/color][/font][font=arial][color=#000000](if (and (>= _vpscale 0.5) (< _vpscale 1.0))[/color][/font][font=arial][color=#000000] (progn[/color][/font][font=arial][color=#000000] (setq _vvpscale "1:2")[/color][/font][font=arial][color=#000000] (vlax-put-property (vlax-ename->vla-object _vp1) 'CustomScale (/ 1.0 2))[/color][/font][font=arial][color=#000000] ); end progn[/color][/font][font=arial][color=#000000]); end if[/color][/font][font=arial][color=#000000](if (>= _vpscale 1)[/color][/font][font=arial][color=#000000] (progn[/color][/font][font=arial][color=#000000] (setq _vvpscale "1:1")[/color][/font][font=arial][color=#000000] (vlax-put-property (vlax-ename->vla-object _vp1) 'CustomScale (/ 1.0 1))[/color][/font][font=arial][color=#000000] ); end progn[/color][/font][font=arial][color=#000000]); end if[/color][/font][font=arial][color=#000000](princ); exit quietly[/color][/font][font=arial][color=#000000]); end zoomit function[/color][/font]
这仍然不是最终形式。总会有一些奇怪的情况发生,但我试图处理任何可能的情况。嘿,哇。。。为什么字体在代码顶部附近发生变化。这只是我的机器还是其他人看到了字体的变化?