找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1893|回复: 4

[每日一码] 一次锁定图中所有视口

[复制链接]

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-9-10 20:32:59 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
适合 2011+
  1. (defun c:lkvp ()
  2.   (vlax-for blk    (vla-get-blocks
  3.           (vla-get-activedocument (vlax-get-acad-object))
  4.         )
  5.     (if    (wcmatch (vla-get-name blk) "`*Paper_Space*")
  6.       (vlax-for    obj blk
  7.     (if (= (vla-get-objectname obj) "AcDbViewport")
  8.       (setpropertyvalue (vlax-vla-object->ename obj) "Locked" 1)
  9.     )
  10.       )
  11.     )
  12.   )
  13.   (princ)
  14. )

锁定视口组码在 90 视口状态
90
视口状态按位编码标志:
1 (0x1) = 启用透视模式
2 (0x2) = 启用前向剪裁
4 (0x4) = 启用后向剪裁
8 (0x8) = 启用 UCS 跟随
16 (0x10) = 启用不可见的前向剪裁
32 (0x20) = 启用 UCS 图标可见性
64 (0x40) = 启用原点处的 UCS 图标
128 (0x80) = 启用快速缩放
256 (0x100) = 启用捕捉模式
512 (0x200) = 启用栅格模式
1024 (0x400) = 启用等轴测捕捉样式
2048 (0x800) = 启用隐藏打印模式
4096 (0x1000) = kIsoPairTop。如果设置了 kIsoPairTop,但未设置 kIsoPairRight,则启用 isopair top。如果同时设置了 kIsoPairTop 和 kIsoPairRight,则启用 isopair left
8192 (0x2000) = kIsoPairRight。如果设置了 isopair right ,但未设置 kIsoPairTop ,则启用 isopair right
16384 (0x4000) = 启用视口缩放锁定
32768 (0x8000) = 当前总是启用
65536 (0x10000) = 启用非矩形剪裁
131072 (0x20000) = 关闭视口


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 862个

财富等级: 财运亨通

发表于 2013-9-11 09:04:58 | 显示全部楼层
版本太高用不了~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~·

点评

改一句话就通用了  详情 回复 发表于 2013-9-11 09:24
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

发表于 2013-9-10 22:52:48 | 显示全部楼层
本帖最后由 Free-Lancer 于 2013-9-10 22:55 编辑

VLA 修改一句就都适合了
(setpropertyvalue (vlax-vla-object->ename obj) "Locked" 1)
=>
(vla-put-displaylocked obj :vlax-true)
  1. (defun c:tt (/ ss)
  2.   (if (setq ss (ssget "x" '((0 . "VIEWPORT"))))
  3.     (progn
  4.       (xdrx_setsstodb ss 0)
  5.       (while (setq e (xdrx_getentdata 0))
  6.     (setpropertyvalue e "Locked" 1)
  7.       )
  8.     )
  9.   )
  10.   (princ)
  11. )

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-9-11 09:24:46 | 显示全部楼层
zhangq_cai1 发表于 2013-9-11 09:04
版本太高用不了~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~·

改一句话就通用了
  1. (vl-load-com)
  2. (defun c:lkvp ()
  3.   (vlax-for blk    (vla-get-blocks
  4.           (vla-get-activedocument (vlax-get-acad-object))
  5.         )
  6.     (if    (wcmatch (vla-get-name blk) "`*Paper_Space*")
  7.       (vlax-for    obj blk
  8.     (if (= (vla-get-objectname obj) "AcDbViewport")
  9.       (vla-put-displaylocked obj :vlax-true)
  10.     )
  11.       )
  12.     )
  13.   )
  14.   (princ)
  15. )


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1094个

财富等级: 财源广进

发表于 2021-5-10 07:56:01 | 显示全部楼层
感谢楼主分享一次锁定图中所有视口!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-4-28 13:32 , Processed in 0.215174 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表