乐筑天下

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

[编程交流] 需要调整Lisp程序

[复制链接]

7

主题

24

帖子

17

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 17:43:29 | 显示全部楼层 |阅读模式
你好
 
我有一个LISP,它将所有x-REF放置在“x-REF”层上。我需要做的调整是,如果层不存在,创建它,并锁定该层。
 
还有,我明白了
当我插入另一个引用并运行LISP时。 
这是我的。。。
 
  1. (defun c:xchx (/ ss i vla)
  2. (if (setq ss (ssget "_x" '((0 . "INSERT"))))
  3.    (repeat
  4.      (setq i (sslength ss))
  5.       (setq vla (vlax-ename->vla-object (ssname ss (setq i (1- i)))))
  6.       (if (vlax-property-available-p vla 'Path)
  7.         (vla-put-layer vla "x-ref")
  8.       )
  9.    )
  10.    (princ)
  11. )
  12. (princ)
  13. )
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 17:49:08 | 显示全部楼层
你好
 
lisp将所有块(而不仅仅是外部参照)移动到x-ref层(如果存在)。
回复

使用道具 举报

7

主题

24

帖子

17

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 17:56:38 | 显示全部楼层
 
我只是测试了它,它不包括插入块。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 17:58:20 | 显示全部楼层
你贴的代码我很熟悉!
 
无论如何,试试这个动态的;
 
  1. (defun c:xchx  (/ doc ss i sn e l)
  2. (setq doc (vla-get-activedocument (vlax-get-acad-object)))
  3. (vlax-for xr  (vla-get-blocks doc)
  4.    (if (eq :vlax-true (vla-get-isxref xr))
  5.      (setq l (cons (strcat "," (vla-get-name xr)) l))
  6.      )
  7.    )
  8. (if (not (tblsearch "LAYER" "x-ref"))
  9.    (entmake (list '(0 . "LAYER")
  10.                   '(100 . "AcDbSymbolTableRecord")
  11.                   '(100 . "AcDbLayerTableRecord")
  12.                   (cons 2 "x-ref")
  13.                   '(70 . 0)))
  14.    )
  15. (if (and l (setq ss (ssget "_X" (list '(0 . "INSERT") (cons 2 (substr (apply 'strcat l) 2))))))
  16.    (repeat
  17.      (setq i (sslength ss))
  18.       (if (vlax-write-enabled-p (vlax-ename->vla-object (setq sn (ssname ss (setq i (1- i))))))
  19.         (entmod
  20.           (subst '(8 . "x-ref") (assoc 8 (setq e (entget sn))) e))
  21.         )
  22.       )
  23.    )
  24. (princ)
  25. )(vl-load-com)
回复

使用道具 举报

7

主题

24

帖子

17

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 18:02:01 | 显示全部楼层
我真的很感谢你的努力!
 
我得到了这个。。。
 
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 18:10:35 | 显示全部楼层
当你想回复时,没有必要引用每一个回复。
 
您可能没有外部参照到当前图形中,或者正在使用AutoCAD以外的程序。
回复

使用道具 举报

7

主题

24

帖子

17

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 18:14:07 | 显示全部楼层
使用Civil 3D 2016。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 18:17:24 | 显示全部楼层
我已修改了上述代码,请重试代码。
回复

使用道具 举报

7

主题

24

帖子

17

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-5 18:22:38 | 显示全部楼层
负介电体
 
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 18:25:34 | 显示全部楼层
对不起,我正忙于另一个程序,我没有测试就发布了代码,但现在应该可以了。
 
代码再次更新。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 04:12 , Processed in 0.477620 second(s), 72 queries .

© 2020-2025 乐筑天下

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