start4444
发表于 2018-9-7 16:42:23
依然小小鸟
发表于 2018-9-27 18:11:27
好帖子 学习起来
luhy2008
发表于 2019-7-5 15:57:24
感谢楼主分享!
zhenz02
发表于 2019-7-28 22:38:03
感谢楼主分享
Sonnenblumen
发表于 2021-3-30 13:34:02
感谢分享,学习了
guankuiwu
发表于 2021-5-31 17:44:34
学习一下
sfzyr
发表于 2021-9-10 02:11:19
本帖最后由 sfzyr 于 2021-9-10 23:45 编辑
caoyin 发表于 2011-6-18 00:23
;选择0层以外的线
(defun c:test16()
(setq ss (ssget '((0 . "line")(8 . "~0"))))
如何结合W 和 :L框选,过滤掉框选时锁定图层。以下来自晓东论坛,作者eachy,一定要这样吗,有无简单的结合:L 和W就可以的办法:
;;;=================http://bbs.xdcad.net/thread-201245-1-1.html=========
(ssget ] )
在使用 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
)
)
;;;;=============================================
(setq ss (ai_ssget (ssget)))
;;;=============================================
以上两个函数,那个运行速度会更快了??
672505821
发表于 2022-3-1 12:52:42
学习学习,感谢分享
LIULISHENG
发表于 2022-5-26 08:06:22
学习了学习了
magicheno
发表于 2022-7-23 13:30:29
感谢大佬分享