找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 879|回复: 11

[其他]:SSGET在选择时会将锁定图层选择在内

[复制链接]

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-6-22 17:41:13 | 显示全部楼层 |阅读模式

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

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

×
[php]
;|

(ssget [sel-method] [pt1 [pt2]] [pt-list] [filter-list])

在使用 SSGET 的过程中发现在含有 Lock 的图层时,只有 CAD 命令可以过滤掉 Lock 图层实体,
Seclect 命令和 SSGET 是不能过滤 Lock 图层的,这样在程序中循环将浪费掉大量的时间,因此
写了这个函数简单情况下替代标准的 Ssget。

参数: Msg  ----  提示字串
       mode ----  同 ssget 的 method, 没有提供 pt 选项,够用就行
       filter --- 过滤表


|;
(defun ea:ssget        (Msg mode filter / ea:getlocklyr locklyr)
  (defun ea:getlocklyr (/ d r);检索锁定图层
    (setq r "")
    (while (setq d (tblnext "layer" (null d)))
      (if (= (cdr (assoc 70 d)) 4)
        (setq r (strcat (cdr (assoc 2 d)) "," r))
      )
    )
    (if        (/= r "")
      (vl-string-trim "," r);还是 2000+ 以上版本方便
      nil
    )
  )
  (setq locklyr (ea:getlocklyr));锁定图层字串
  (if locklyr
    (if        filter
      (setq
        filter (append
                 filter
                 (list '(-4 . "<not") (cons 8 locklyr) '(-4 . "not>"))
               )
      )
      (setq
        filter (list '(-4 . "<not") (cons 8 locklyr) '(-4 . "not>"))
      )
    )
  );构造图层过滤表,ssget 中即使前面有锁定的图层 not 仍旧会起作用
  (if msg
    (princ msg)
  );提示串
  (cond
    ((and mode filter)
     (ssget mode filter);有 mode
    )
    (filter
     (ssget filter);含有过滤表
    )
    (t (ssget));其它情况用标准 ssget
  )
)[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-6-22 22:25:49 | 显示全部楼层
2000+可以(ssget ":L")
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

 楼主| 发表于 2004-6-23 00:04:39 | 显示全部楼层
最初由 nuance 发布
[B]2000+可以(ssget ":L") [/B]

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

使用道具 举报

发表于 2004-6-23 00:14:28 | 显示全部楼层
我觉得2贴也应该加分:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-23 04:24:35 | 显示全部楼层

Re: [其他]:SSGET在选择时会将冻结图层选择在内

最初由 eachy 发布
SSGET在选择时会将冻结图层选择在内... [/B]


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

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

 楼主| 发表于 2004-6-23 08:04:04 | 显示全部楼层

Re: Re: [其他]:SSGET在选择时会将冻结图层选择在内

最初由 lsjjm 发布
[B]

题目是否有误, "冻结"? [/B]

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

使用道具 举报

发表于 2004-6-23 13:36:52 | 显示全部楼层
就程序本身,增加的filter还可以这样写,注意 str 为"" 或"a,b,"在加了逻辑not之后不影响效果,因此可以省去一些步骤。
[php]
(setq str "" )
(vlax-for obj (vla-get-layers (vla-get-activeDocument (vlax-get-acad-object)))
  ;;此处也可如ea斑竹一样用table
  (if (= (vla-get-lock obj) :vlax-TRUE) (setq str (strcat str (vla-get-name obj) ",")))
)
(setq filter2 (list '(-4 . "< NOT")(cons 8 str)'(-4 . "NOT >"))))
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-23 17:09:33 | 显示全部楼层
eachy兄:
把以前的貼子給忘了!
http://www.xdcad.net/forum/showt ... d=380504#post380504
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

 楼主| 发表于 2004-6-23 19:37:27 | 显示全部楼层
最初由 LUCAS 发布
[B]eachy兄:
把以前的貼子給忘了!
http://www.xdcad.net/forum/showt ... d=380504#post380504 [/B]

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

使用道具 举报

发表于 2004-6-24 02:13:37 | 显示全部楼层
哈哈,我也常常会重复写已经写过的程序:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2004-6-24 20:52:03 | 显示全部楼层
龙龙仔贴了半年都不止了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2004-6-24 20:54:03 | 显示全部楼层
最初由 aeo 发布
[B]龙龙仔贴了半年都不止了! [/B]


总结一下:
[php]
A All
B Box
C Crossing
CP Crossing Polygon
:D Duplicates OK
:E Everything in aperture
F Fence
G Groups
I Implied
L Last
:L Rejects locked layers
M Multiple
:N Nested
P Previous
:P Rejects Viewport
:S Force single object selection only
W Window
WP Window Polygon
X Extended search (search whole database)
[/php]

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 10:16 , Processed in 0.194636 second(s), 52 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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