乐筑天下

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

[编程交流] 更改所有对象的命令

[复制链接]

12

主题

55

帖子

43

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-5 23:51:17 | 显示全部楼层 |阅读模式
你好
 
我试图在ACAD中执行此命令,但运气不太好。当我手动输入命令时,这些命令可以工作,但当我使用LISP时,命令失败。在“all”命令后失败。
 
(定义c:cb0()
(命令“-refedit”pause“O”“A”“N”“CHPROP”“all”“LA”“0”“REFCLOSE”“”“”
)
 
诺埃尔跟踪者
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 00:00:42 | 显示全部楼层
试试这个。。。
 
  1. (defun c:Test (/ ss i e l n)
  2. ;;     Tharwat 11.Dec.2013    ;;
  3. (or doc (setq doc (vla-get-activedocument (vlax-get-acad-object))))
  4. (if (setq ss (ssget "_:L" '((0 . "INSERT"))))
  5.    (progn
  6.      (vla-StartUndoMark doc)
  7.      (repeat (setq i (sslength ss))
  8.        (setq e (entget (ssname ss (setq i (1- i)))))
  9.        (if (not (member (setq n (cdr (assoc 2 e))) l))
  10.          (progn
  11.            (setq l (cons n l))
  12.            (vlax-for x (vla-item (vla-get-blocks doc) n)
  13.              (if (/= (vla-get-layer x) "0")
  14.                (vla-put-layer x "0")
  15.              )
  16.            )
  17.          )
  18.        )
  19.      )
  20.      (vla-EndUndoMark doc)
  21.      (vla-regen doc AcAllViewports)
  22.    )
  23. )
  24. (princ)
  25. )
  26. (vl-load-com)
回复

使用道具 举报

GP_

8

主题

248

帖子

245

银币

初来乍到

Rank: 1

铜币
42
发表于 2022-7-6 00:05:21 | 显示全部楼层
删除括号之间的空格。
 
  1. (defun c:cb0 ()
  2.      (command "-refedit" pause "O" "A" "N" "CHPROP" "all" "" "LA" "0" "" "REFCLOSE" "" "")
  3. )
回复

使用道具 举报

26

主题

210

帖子

184

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
130
发表于 2022-7-6 00:09:28 | 显示全部楼层
试试这个,
  1. ; Load function, then enter FIXBLOCK to redefine selected blocks
  2. ;  so that all entities are on layer '0'.
  3. ;
  4. (defun c:FIX (/ ss cnt b donelist bredef)
  5. (defun bredef (b / e el)
  6.    (setq e (tblobjname "BLOCK" b))
  7.    (while e
  8.      (setq el (entget e))
  9.      (setq el (subst '(8 . "0") (assoc 8 el) el))
  10.      (setq el (if (assoc 62 el) (subst '(62 . 0) (assoc 62 el) el) (append el '((62 . 0)))))
  11.      (entmake el)
  12.      (setq e (entnext e))
  13.    )
  14.    (if (/= "ENDBLK" (cdr (assoc 0 el))) (entmake '((0 . "ENDBLK") (8 . "0") (62 . 0))))
  15. )
  16. (if (> (logand (cdr (assoc 70 (tblsearch "layer" "0"))) 1) 0)
  17.    (princ "\nLayer 0 must be thawed before running FIXBLOCK!\n")
  18.    (if (setq ss (ssget '((0 . "INSERT"))))
  19.      (progn
  20.        (setq cnt (sslength ss))
  21.        (while (>= (setq cnt (1- cnt)) 0)
  22.          (if (not (member (setq b  (cdr (assoc 2 (entget (ssname ss cnt))))) donelist))
  23.            (progn
  24.              (bredef b)
  25.              (setq donelist (cons b donelist))
  26.            )
  27.          )
  28.        )
  29.        (princ (strcat "\n" (itoa (sslength ss)) " blocks redefined\n"))
  30.      )
  31.      (princ "\nNo blocks selected!\n")
  32.    )
  33. )
  34. (princ)
  35. )
  36. ;End-of-file
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 00:14:05 | 显示全部楼层
另一个简单的程序:
  1. (defun c:b20 ( / e i l n s x )
  2.    (if (setq s (ssget '((0 . "INSERT"))))
  3.        (repeat (setq i (sslength s))
  4.            (if (not (member (setq n (cdr (assoc 2 (entget (ssname s (setq i (1- i))))))) l))
  5.                (progn
  6.                    (setq l (cons n l)
  7.                          e (tblobjname "block" n)
  8.                    )
  9.                    (while (setq e (entnext e))
  10.                        (setq x (entget e))
  11.                        (entmod (subst '(8 . "0") (assoc 8 x) x))
  12.                    )
  13.                )
  14.            )
  15.        )
  16.    )
  17.    (command "_.regen")
  18.    (princ)
  19. )[color=#C00000][font=Consolas][/font][/color]
回复

使用道具 举报

12

主题

55

帖子

43

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2022-7-6 00:21:18 | 显示全部楼层
我试了一下我看到的第一个反应,效果很好。谢谢Tharwart!
 
@总成_
 
谢谢你的提示!
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 00:26:05 | 显示全部楼层
 
随时欢迎你。
回复

使用道具 举报

24

主题

147

帖子

123

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
120
发表于 2022-7-6 00:27:40 | 显示全部楼层
令人惊讶的是,上面的代码都不适合我。它说“错误:论点太多”。我的AutoCAD有什么问题?
还有一个额外的请求。。。所有图元的线型都可以是BYLAYER吗?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 00:35:13 | 显示全部楼层
 
您一定在上述例程中添加了任何代码?
回复

使用道具 举报

24

主题

147

帖子

123

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
120
发表于 2022-7-6 00:39:33 | 显示全部楼层
什么都没有。。。我的AutoCAD设置一定有问题。有什么建议吗?
 
编辑:它开始工作了。。。我不确定发生了什么事。抱歉给你添麻烦了
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 21:16 , Processed in 0.357760 second(s), 72 queries .

© 2020-2025 乐筑天下

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