乐筑天下

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

将视口从定义点移动到指定图层的脚本。

[复制链接]

33

主题

153

帖子

4

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
285
发表于 2014-7-2 18:23:01 | 显示全部楼层 |阅读模式

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

CAB

29

主题

781

帖子

430

银币

中流砥柱

Rank: 25

铜币
526
发表于 2014-7-2 19:44:29 | 显示全部楼层
这就是我在单个图纸上使用的东西:
  1. ;;  05.03.07
  2. ;;  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  3. ;;  force vp's to layer  "Viewport Borders"
  4. ;;  ignore vp's on layer "vpPlot"      
  5. ;;  +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
  6. (defun c:vp2LayAll () (vp2lay ""))
  7. (defun vp2lay (tabname / lay obj targetobj rtnflag)
  8.   (vl-load-com)
  9.   
  10. ;;  CAB version to make a layer
  11. ;;  returns nil if make failed
  12. (defun MakeLayer (lyrname acDoc / lyrobj)
  13.   (vl-load-com)
  14.   (if
  15.     (not
  16.       (vl-catch-all-error-p
  17.         (setq lyrobj (vl-catch-all-apply 'vla-add (list (vla-get-layers acDoc) lyrname))))
  18.     )
  19.     lyrobj
  20.   )
  21. )
  22.   
  23.   (if (null color) ; use default (defined in Globle variable) colors
  24.     (setq color (if lockflag *vpColorLk *vpColorUnLk))
  25.   )
  26.   ;;  A spicific tab name can be used to work in one Layout only
  27.   (or (= (type tabname) 'STR) (setq tabname "")) ; default to ALL
  28.   (if (= tabname "Model")
  29.     (progn (alert "Not allowed in Model Space") (quit))
  30.   )
  31.   
  32.   ;; make Layer "Viewport Borders" color=12  NoPlot
  33.   ;;  try to rename first!
  34.   (setq vpLayer "Viewport Borders")
  35.   (if (and (not (tblsearch "layer" vpLayer))
  36.         (setq lyrobj (MakeLayer vpLayer (vla-get-activedocument (vlax-get-acad-object))
  37.        )))
  38.     (progn
  39.       (vla-put-color lyrobj 12)
  40.       (vla-put-plottable lyrobj :vlax-false)
  41.       (vlax-release-object lyrobj)
  42.     )
  43.    )
  44.   ;;  step through each Layout and step through each object in the layout
  45.   ;;  if object is a VP and the layer is NOT VPPLOT change the layer to "Viewport Borders"
  46.   ;;  if the VP has a non rectangle shape change the pline outline layer associated with the VP
  47.   (vlax-for lay (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object))) ; for each layout
  48.     (if (and (or (= tabname "")
  49.                  (= (vla-get-name lay) tabname))
  50.              (eq :vlax-false (vla-get-modeltype lay)))
  51.       (vlax-for obj (vla-get-block lay) ; for each obj in layout
  52.         (if (and (= (vla-get-objectname obj) "AcDbViewport")
  53.                  (or (null targetobj) (equal obj targetobj))
  54.             )
  55.          (if (/= (strcase (vla-get-layer obj)) "VPPLOT")
  56.           (progn
  57.             (vla-put-layer obj vpLayer)
  58.             (if (setq ent (assoc 340 (entget (vlax-vla-object->ename obj))))
  59.               (vla-put-layer (vlax-ename->vla-object (cdr ent)) vpLayer)
  60.             )
  61.             (setq rtnflag t)
  62.           ))
  63.         )
  64.       )
  65.     )
  66.   )
  67.   rtnflag
  68. )

回复

使用道具 举报

33

主题

153

帖子

4

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
285
发表于 2014-7-2 22:26:47 | 显示全部楼层
喜欢这个。(同organic)有机..
确实是我的最爱。
在此获得最佳帮助。
回复

使用道具 举报

CAB

29

主题

781

帖子

430

银币

中流砥柱

Rank: 25

铜币
526
发表于 2014-7-2 23:02:36 | 显示全部楼层
测试这个..
阅读您的代码..将颜色设置为256..将图层设置为NOPLOT,跳过图层XXXXXX上的Vp
并将创建图层颜色更改为7(白色)
我只是使用了记事本中的替换工具来完成此操作..
太棒了...
唯一更好的办法是理解代码。
非常感谢..太棒了!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 05:28 , Processed in 0.651044 second(s), 61 queries .

© 2020-2025 乐筑天下

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