乐筑天下

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

[编程交流] 编辑图层过滤器需要帮助

[复制链接]

2

主题

20

帖子

18

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 16:29:58 | 显示全部楼层 |阅读模式
图层过滤器。lsp用于将图形中的所有对象分离到单独的层中
 
图层细节:隐藏线到隐藏层,标注到标注层,文本到文本层
 
我需要为选定对象使用此lsp,因此请有人编辑选定对象的此lsp,而不是整个图形
 
提前感谢。。。。。。。。。
TIP1119-过滤层。LSP
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 16:35:25 | 显示全部楼层
一个很大的提示是,去查阅SSGET的帮助,特别是“X”或“W”或“CP”的使用,或者干脆忽略它。
回复

使用道具 举报

2

主题

20

帖子

18

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 16:37:45 | 显示全部楼层
兄弟,我尝试“w”和“cp”,但结果是参数错误太多
 
有什么方法可以解决这个错误吗?请指导我
回复

使用道具 举报

20

主题

338

帖子

323

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
100
发表于 2022-7-5 16:43:35 | 显示全部楼层
比格尔指出的最后一个选择。只需删除“X”。
 
  1. (setq SS2 (ssget "X" '((0 . "TEXT"))))

 
那么。。。
 
  1. (setq SS2 (ssget  '((0 . "TEXT"))))
回复

使用道具 举报

17

主题

1274

帖子

25

银币

后起之秀

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

铜币
260
发表于 2022-7-5 16:46:08 | 显示全部楼层
从lisp来看,它必须完全重写,因为它对5种不同的实体类型和元素进行了5个不同的ssget“X”调用。您需要创建一个可以接受所有选项的选择集,然后使用cond函数测试每个选项并进行相应修改。
回复

使用道具 举报

2

主题

20

帖子

18

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 16:48:12 | 显示全部楼层
我删除了“x”,它只适用于ss1
 
ss2,ss3。。。。不工作
有任何选择,请引导我,兄弟。。。。
回复

使用道具 举报

17

主题

1274

帖子

25

银币

后起之秀

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

铜币
260
发表于 2022-7-5 16:51:21 | 显示全部楼层
快速且经过轻微测试:
  1. (defun C:ForceObjectLayer (/ OLAY ss ent EnTyp Element)
  2. (setq ss (ssget "+.:E:S"))
  3. ; :E  Everything in aperture
  4. ; :S  Force single object selection only
  5. ; The "+." puts (ssget) into "point" mode. It helps the ":S"
  6. ; single-mode act just like (entsel) by avoiding implied
  7. ; selection windows.
  8. (if ss
  9. (progn
  10.   (setvar "CMDECHO" 0)
  11.   (setq OLAY (getvar "CLAYER"))
  12.   (command "layer" "m" "dime" "lt" "continuous" "" "c" "yellow" "" "")
  13.   (command "layer" "m" "text" "lt" "continuous" "" "c" "green" "" "")
  14.   (command "layer" "m" "center" "lt" "center" "" "c" "red" "" "")
  15.   (command "layer" "m" "hidden" "lt" "hidden" "" "c" "green" "" "")
  16.   (command "layer" "m" "phantom" "lt" "phantom" "" "c" "white" "" "")
  17.   (setq ent (ssname SS 0)
  18.         EnTyp (cdr (assoc 0 (entget ent)))
  19.         Element (cdr (assoc 6 (entget ent)))
  20.   )
  21.    (cond
  22.     ((= EnTyp "DIMENSION")(command "change" ss "" "p" "c" "bylayer" "la" "dime" "lt" "bylayer" ""))
  23.     ((= EnTyp "TEXT")(command "change" ss "" "p" "c" "bylayer" "la" "text" "lt" "bylayer" ""))
  24.     ((= Element "CENTER")(command "change" ss "" "p" "c" "bylayer" "la" "center" ""))
  25.     ((= Element "HIDDEN")(command "change" ss "" "p" "c" "bylayer" "la" "hidden" ""))
  26.     ((= Element "PHANTOM")(command "change" ss "" "p" "c" "bylayer" "la" "phantom" ""))
  27.     (T(princ "\nObject was not Dimension or Text or Element type Center, Hidden, or Phantom."))
  28.    )
  29.   (command "layer" "s" OLAY "")
  30. ); progn
  31. )
  32. (princ)
  33. ); end ForceObjectLayer.lsp
回复

使用道具 举报

2

主题

20

帖子

18

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 16:56:45 | 显示全部楼层
谢谢你的回复。。。。。。
兄弟,我们必须通过这个lsp分别拾取每个对象。
通过单窗口选择,可以将包含的对象放在单独的层中。。。。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:01:31 | 显示全部楼层
我再次尝试给出一个关于ssget如何工作的重要提示,其他人在上面已经详细阐述了,在其最低级别just do(setq ss(ssget)),然后由您决定如何选择,设置1乘1,所有的几个,交叉窗口等。它只会在当前空间中看起来。
 
Tombu希望你不介意重新安排一点,这样ss可以是1或更多。
  1. (defun C:ForceObjectLayer (/ OLAY ss ent EnTyp Element)
  2. (setq ss (ssget))
  3. ; (setq ss (ssget "+.:E:S"))
  4. ; :E  Everything in aperture
  5. ; :S  Force single object selection only
  6. ; The "+." puts (ssget) into "point" mode. It helps the ":S"
  7. ; single-mode act just like (entsel) by avoiding implied
  8. ; selection windows.
  9. (if ss
  10. (progn
  11.   (setvar "CMDECHO" 0)
  12.   (setq OLAY (getvar "CLAYER"))
  13.   (command "layer" "m" "dime" "lt" "continuous" "" "c" "yellow" "" "")
  14.   (command "layer" "m" "text" "lt" "continuous" "" "c" "green" "" "")
  15.   (command "layer" "m" "center" "lt" "center" "" "c" "red" "" "")
  16.   (command "layer" "m" "hidden" "lt" "hidden" "" "c" "green" "" "")
  17.   (command "layer" "m" "phantom" "lt" "phantom" "" "c" "white" "" "")
  18. ) ;progn
  19. (repeat (setq x (sslength ss)) ; ss can be just 1 entity
  20.    
  21.     (setq ent (ssname SS (setq x (- x 1)))
  22.         EnTyp (cdr (assoc 0 (entget ent)))
  23.         Element (cdr (assoc 6 (entget ent)))
  24.     )
  25.     (cond
  26.     ((= EnTyp "DIMENSION")(command "change" ss "" "p" "c" "bylayer" "la" "dime" "lt" "bylayer" ""))
  27.     ((= EnTyp "TEXT")(command "change" ss "" "p" "c" "bylayer" "la" "text" "lt" "bylayer" ""))
  28.     ((= Element "CENTER")(command "change" ss "" "p" "c" "bylayer" "la" "center" ""))
  29.     ((= Element "HIDDEN")(command "change" ss "" "p" "c" "bylayer" "la" "hidden" ""))
  30.     ((= Element "PHANTOM")(command "change" ss "" "p" "c" "bylayer" "la" "phantom" ""))
  31.     (T(princ "\nObject was not Dimension or Text or Element type Center, Hidden, or Phantom."))
  32.     ) ; cond
  33.    ) ; repeat
  34.   (command "layer" "s" OLAY "")
  35. (princ)
  36. ); end ForceObjectLayer.lsp
回复

使用道具 举报

2

主题

20

帖子

18

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 17:04:27 | 显示全部楼层
兄弟,检查它不工作。请参阅以下输出文件。。。。。。。。。。
173005ad4tmdu401tlckll.jpg
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 13:09 , Processed in 0.674808 second(s), 74 queries .

© 2020-2025 乐筑天下

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