乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 77|回复: 3

[编程交流] 基于Ex设置视口比例

[复制链接]

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-6 07:25:32 | 显示全部楼层 |阅读模式
好的,这是另一个线程的后续,我想我终于有了这个。我刚刚试用过,它适用于所有布局选项卡上的四种尺寸的纸张。不知怎么的,虽然我觉得这可以被清理干净,提高效率。这是我自2012年1月以来一直致力于的全自动流程。一直以来,我们都想把它带到一个即使不懂AutoCAD的人也可以使用它的地方,现在有了这个部署,我们真的很接近了。无论部件图形最终的大小如何,这都会在每个布局上创建一个视口,然后将模型空间的范围居中。它快速检查CustomScale,然后稍微调整以匹配我们在此处使用的可接受比例:
 
  1. (defun zoomit (_tabname _tl _br)
  2. (command "._CLAYER" "Viewports")
  3. (setvar "CTAB" _tabname)
  4. (command "._PSPACE")
  5. (command "._ZOOM" "A")
  6. (command "._MVIEW" _tl _br)
  7. (setq _vp1 (entlast))
  8. (setq _vpscale (vlax-get-property (vlax-ename->vla-object _vp1) 'CustomScale))
  9. ; Determine what scale will work best based on currently zoomed Viewport
  10. (if (and (>= _vpscale 0.0167) (<= _vpscale 0.02))
  11.    (progn
  12.      (setq _vvpscale "1:60")(vlax-put-property (vlax-ename->vla-object _vp1) 'CustomScale (/ 1.0 60))
  13.    ); end progn
  14. ); end if
  15. (if (and (>= _vpscale 0.02) (< _vpscale 0.025))
  16.    (progn
  17.      (setq _vvpscale "1:50")
  18.      (vlax-put-property (vlax-ename->vla-object _vp1) 'CustomScale (/ 1.0 50))
  19.    ); end progn
  20. ); end if
  21. [color=#000000][font=arial](if (and (>= _vpscale 0.025) (< _vpscale 0.033))[/font][/color]
  22. [font=arial][color=#000000]  (progn[/color][/font]
  23. [font=arial][color=#000000]    (setq _vvpscale "1:40")[/color][/font]
  24. [font=arial][color=#000000]    (vlax-put-property (vlax-ename->vla-object _vp1) 'CustomScale (/ 1.0 40))[/color][/font]
  25. [font=arial][color=#000000]  ); end progn[/color][/font]
  26. [font=arial][color=#000000]); end if[/color][/font]
  27. [font=arial][color=#000000](if (and (>= _vpscale 0.033) (<= _vpscale 0.05))[/color][/font]
  28. [font=arial][color=#000000]  (progn[/color][/font]
  29. [font=arial][color=#000000]    (setq _vvpscale "1:30")[/color][/font]
  30. [font=arial][color=#000000]    (vlax-put-property (vlax-ename->vla-object _vp1) 'CustomScale (/ 1.0 30))[/color][/font]
  31. [font=arial][color=#000000]  ); end progn[/color][/font]
  32. [font=arial][color=#000000]); end if[/color][/font]
  33. [font=arial][color=#000000](if (and (>= _vpscale 0.05) (< _vpscale 0.0625))[/color][/font]
  34. [font=arial][color=#000000]  (progn[/color][/font]
  35. [font=arial][color=#000000]    (setq _vvpscale "1:20")[/color][/font]
  36. [font=arial][color=#000000]    (vlax-put-property (vlax-ename->vla-object _vp1) 'CustomScale (/ 1.0 20))[/color][/font]
  37. [font=arial][color=#000000]  ); end progn[/color][/font]
  38. [font=arial][color=#000000]); end if[/color][/font]
  39. [font=arial][color=#000000](if (and (>= _vpscale 0.0625) (< _vpscale 0.0833))[/color][/font]
  40. [font=arial][color=#000000]  (progn[/color][/font]
  41. [font=arial][color=#000000]    (setq _vvpscale "1:16")[/color][/font]
  42. [font=arial][color=#000000]    (vlax-put-property (vlax-ename->vla-object _vp1) 'CustomScale (/ 1.0 16))[/color][/font]
  43. [font=arial][color=#000000]  ); end progn[/color][/font]
  44. [font=arial][color=#000000]); end if[/color][/font]
  45. [font=arial][color=#000000](if (and (>= _vpscale 0.0833) (< _vpscale 0.1))[/color][/font]
  46. [font=arial][color=#000000]  (progn[/color][/font]
  47. [font=arial][color=#000000]    (setq _vvpscale "1:12")[/color][/font]
  48. [font=arial][color=#000000]    (vlax-put-property (vlax-ename->vla-object _vp1) 'CustomScale (/ 1.0 12))[/color][/font]
  49. [font=arial][color=#000000]  ); end progn[/color][/font]
  50. [font=arial][color=#000000]); end if[/color][/font]
  51. [font=arial][color=#000000](if (and (> _vpscale 0.1) (< _vpscale 0.125))[/color][/font]
  52. [font=arial][color=#000000]  (progn[/color][/font]
  53. [font=arial][color=#000000]    (setq _vvpscale "1:10")[/color][/font]
  54. [font=arial][color=#000000]    (vlax-put-property (vlax-ename->vla-object _vp1) 'CustomScale (/ 1.0 10))[/color][/font]
  55. [font=arial][color=#000000]  ); end progn[/color][/font]
  56. [font=arial][color=#000000]); end if[/color][/font]
  57. [font=arial][color=#000000](if (and (>= _vpscale 0.125) (< _vpscale 0.25))[/color][/font]
  58. [font=arial][color=#000000]  (progn[/color][/font]
  59. [font=arial][color=#000000]    (setq _vvpscale "1:8")[/color][/font]
  60. [font=arial][color=#000000]    (vlax-put-property (vlax-ename->vla-object _vp1) 'CustomScale (/ 1.0 )[/color][/font]
  61. [font=arial][color=#000000]  ); end progn[/color][/font]
  62. [font=arial][color=#000000]); end if[/color][/font]
  63. [font=arial][color=#000000](if (and (>= _vpscale 0.25) (< _vpscale 0.5))[/color][/font]
  64. [font=arial][color=#000000]  (progn[/color][/font]
  65. [font=arial][color=#000000]    (setq _vvpscale "1:4")[/color][/font]
  66. [font=arial][color=#000000]    (vlax-put-property (vlax-ename->vla-object _vp1) 'CustomScale (/ 1.0 4))[/color][/font]
  67. [font=arial][color=#000000]  ); end progn[/color][/font]
  68. [font=arial][color=#000000]); end if[/color][/font]
  69. [font=arial][color=#000000](if (and (>= _vpscale 0.5) (< _vpscale 1.0))[/color][/font]
  70. [font=arial][color=#000000]  (progn[/color][/font]
  71. [font=arial][color=#000000]    (setq _vvpscale "1:2")[/color][/font]
  72. [font=arial][color=#000000]    (vlax-put-property (vlax-ename->vla-object _vp1) 'CustomScale (/ 1.0 2))[/color][/font]
  73. [font=arial][color=#000000]  ); end progn[/color][/font]
  74. [font=arial][color=#000000]); end if[/color][/font]
  75. [font=arial][color=#000000](if (>= _vpscale 1)[/color][/font]
  76. [font=arial][color=#000000]  (progn[/color][/font]
  77. [font=arial][color=#000000]    (setq _vvpscale "1:1")[/color][/font]
  78. [font=arial][color=#000000]    (vlax-put-property (vlax-ename->vla-object _vp1) 'CustomScale (/ 1.0 1))[/color][/font]
  79. [font=arial][color=#000000]  ); end progn[/color][/font]
  80. [font=arial][color=#000000]); end if[/color][/font]
  81. [font=arial][color=#000000](princ); exit quietly[/color][/font]
  82. [font=arial][color=#000000]); end zoomit function[/color][/font]

 
这仍然不是最终形式。总会有一些奇怪的情况发生,但我试图处理任何可能的情况。嘿,哇。。。为什么字体在代码顶部附近发生变化。这只是我的机器还是其他人看到了字体的变化?
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 08:01:53 | 显示全部楼层
“缩放A全部”使用与“缩放E范围”不同的限制,如果不设置限制,则“缩放E范围”会查找对象之间的最大距离,其通常与“范围”相同。如果你有一个很大的作业集限制并使用Z a,那么使用“E”可能更安全。这是一个方便的技巧。
 
快速一点0,0和10001000
限值0,0 500500
Z A你只看到1点吗
Z E看到2点了吗?
 
也许用COND代替IF来设置刻度,然后用defun
 
[code](COND(and(>=\u vpscale 0.02)(<u vpscale 0.025))(setq \u vpscale“1:50”)(vlax put property(vlax ename->vla object \u vp1)'CustomScale(/1.0 50))(and(>=\u vpscale 0.0167)(
回复

使用道具 举报

180

主题

639

帖子

463

银币

中流砥柱

Rank: 25

铜币
897
发表于 2022-7-6 08:17:41 | 显示全部楼层
谢谢你的指点。我知道所有这些(如果…)都有点草率,我想像你对COND的建议这样的东西会更合适,并且更容易跟踪流。
 
这个过程的问题是,我们永远不知道图纸会有多大。尽管我们最终会对其设定一些限制。我一直在使用的技巧是使它从最小值一直工作到无穷大。相信我,我的一些测试有一英里长一英里宽的绘图组件。并不是说我们曾经或可能建造和运输这样一个组件。但我的目标是让它可以适应任何尺寸,然后我们可以在以后进行裁剪。我们现在就要走下舞台了。因此,我需要这样一个过程来获得正面、侧面和平面图,以及一些注释和尺寸,所有这些都是正面的,并集中在四个布局选项卡上。这是美国,所以我们使用8-1/2英寸x 11,11 x 17,17 x 22和24 x 36。我要提醒这些家伙,一旦这在网上出现,国际用户来自其他国家,我们不仅要调整公制,还要调整不同尺寸的纸张。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-6 08:30:45 | 显示全部楼层
复印和粘贴也可能更容易,因为纸张尺寸没有太大差别,A4是210x297,字母是11x8.5?如果你选择了一个较小的尺寸和一个余量公差,它应该工作正常,但在毫米。对于视口的比例值,度量是相同的,只是一组不同的数字。例如A1 1:100=10 1:500=2 1:250=4位更容易计算出1000/mm的比例是1000的倍数。
 
一旦dwg达到一定的物理对象大小,您可以查看多个vports。使用extmin和extmax需要2个视图4个视图等,然后需要设置代码的范围限制,以便在不需要大量返工的情况下工作。我们有一个特殊的软件,改变比例会根据图纸大小改变视口的数量(非Autocad),它完全基于web。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-10 05:11 , Processed in 0.528335 second(s), 71 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表