乐筑天下

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

[编程交流] Enter使例程在最后选中的具有意外结果的项目上运行。

[复制链接]

78

主题

279

帖子

24

银币

中流砥柱

Rank: 25

铜币
570
发表于 2022-8-11 17:20:41 | 显示全部楼层 |阅读模式
在我运行该程序后,我点击回车键再次运行该程序并拾取其他对象,但它不允许我拾取另一个实体,而是在第一组实体上再次运行该例程,并将它们推回原始层减去-F.
  1. (defun c:futlyr ( / i lyrname s x )
  2. (prompt "\nSelect Object to Set to -F Construction Layer")
  3.    (setq s (ssget ":L" '((8 . "S*"))))
  4.         (repeat (setq i (sslength s))
  5.         (setq x (entget (ssname s (setq i (1- i))))
  6.               lyrname (cdr (assoc 8 x))
  7.               n (strcat (substr lyrname 1 (- (strlen lyrname) 0)) "-F") ;;(strlen old_suffix)))))
  8.         )
  9.             (if (not (tblsearch "layer" n))
  10.               (progn (setq e (entget (tblobjname "layer" lyrname)))
  11.                (entmake (subst (cons 2 n) (assoc 2 e) (subst '(62 . 1) (assoc 62 e) e)))
  12.               )
  13.             )
  14.               (entmod (subst (cons 8 n) (assoc 8 x) x))
  15.           )  
  16.   (prompt "\nAll objects have been moved to -F construction layer")
  17.   (princ)
  18. )
  19. (c:futlyr)

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

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

使用道具 举报

15

主题

1052

帖子

58

银币

中流砥柱

Rank: 25

铜币
683
发表于 2022-8-11 19:37:18 | 显示全部楼层
它们在代码中没有任何东西可以将它们推回(错误处理?)。所有这些你都可以多次选择。以“layername-F-F-F”等图层结尾<br>添加了一个检查,以排除以“-F”结尾的图层上的项目<br>并给出了更改图层的数量。<br>
  1. (defun c:futlyr (/ s layname x n i)
  2.   (prompt "\nSelect Object to Set to -F Construction Layer")
  3.   (setq i 0)
  4.   (setq s (ssget ":L" '((8 . "S*"))))
  5.   (foreach ent (vl-remove-if 'listp (mapcar 'cadr (ssnamex s)))
  6.     (if (and (setq layname (cdr (assoc 8 (setq x (entget ent))))) (/= (substr layname (- (strlen layname) 1)) "-F"))
  7.       (progn
  8.         (if (not (tblsearch "layer" (setq n (strcat layname "-F"))))
  9.           (progn
  10.             (setq e (entget (tblobjname "layer" layname)))
  11.             (entmake (subst (cons 2 n) (assoc 2 e) (subst '(62 . 1) (assoc 62 e) e)))
  12.           )
  13.         )
  14.         (entmod (subst (cons 8 n) (assoc 8 x) x))
  15.         (setq i (1+ i))
  16.       )  
  17.     )
  18.   )
  19.   (prompt (strcat "\n" (itoa i) " objects moved to -F construction layer"))
  20.   (princ)
  21. )
回复

使用道具 举报

78

主题

279

帖子

24

银币

中流砥柱

Rank: 25

铜币
570
发表于 2022-8-12 16:07:23 | 显示全部楼层
伙计,我的整个帖子都不靠谱。我写过一次关于多重f的问题。然后决定试着删除entmake部分作为测试,因为我不需要它把颜色改成红色。当我删除它,我得到了进入问题。
我之前忘记从帖子中删除该部分了。
  1. (if (not (tblsearch "layer" n))
  2.               (progn (setq e (entget (tblobjname "layer" lyrname)))
  3.                (entmake (subst (cons 2 n) (assoc 2 e) (subst '(62 . 1) (assoc 62 e) e)))
  4.               )
  5.             )

感谢您添加支票。那天早些时候我也有过这种想法,但没有完成。
回复

使用道具 举报

58

主题

3353

帖子

33

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1761
发表于 2022-8-12 17:16:28 | 显示全部楼层
您也可以像这样直接过滤掉项目:
  1. (defun c:futlyr (/ e i layname n s x)
  2.   (prompt "\nSelect Object to Set to -F Construction Layer")
  3.   (setq i 0)
  4.   ;; Direct filter for layer that starts with S and does not end in -F
  5.   (if (setq s (ssget ":L" '((8 . "S*,") (8 . "~*-F"))))
  6.     (progn
  7.       (foreach ent (vl-remove-if 'listp (mapcar 'cadr (ssnamex s)))
  8.         (if (setq layname (cdr (assoc 8 (setq x (entget ent)))))
  9.           (progn (if (not (tblsearch "layer" (setq n (strcat layname "-F"))))
  10.                    (progn (setq e (entget (tblobjname "layer" layname)))
  11.                           (entmake (subst (cons 2 n) (assoc 2 e) (subst '(62 . 1) (assoc 62 e) e)))
  12.                    )
  13.                  )
  14.                  (entmod (subst (cons 8 n) (assoc 8 x) x))
  15.                  (setq i (1+ i))
  16.           )
  17.         )
  18.       )
  19.       (prompt (strcat "\n" (itoa i) " objects moved to -F construction layer"))
  20.     )
  21.   )
  22.   (princ)
  23. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-3 18:11 , Processed in 1.114322 second(s), 60 queries .

© 2020-2025 乐筑天下

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