乐筑天下

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

[编程交流] Lisp帮助-删除所有对象

[复制链接]

6

主题

8

帖子

2

银币

初来乍到

Rank: 1

铜币
30
发表于 2022-7-6 09:10:56 | 显示全部楼层 |阅读模式
需要lisp删除4个不同层(ZZ-UKMAP-LANDLINE、ZZ-UKMAP-RAIL、ZZ-UKMAP-STATION、ZZ-UKMAP-STATION NAME)上的所有对象。
唯一的问题是,我有一个名为“MAP”的块,我想保留它,这个块在上面的层中有对象。
因此,希望删除四个独立层上的所有对象,但排除块“贴图”(或者更容易的话,排除所有块)。
有人能帮忙吗?我一直在尝试使用ssget来实现这一点,但无法成功编写lisp,
谢谢
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 10:09:11 | 显示全部楼层
看看这个。。
 
  1. (defun c:test (/ ss i sset e)
  2. (if
  3.    (setq ss (ssget "_x" '((8 . "ZZ-UKMAP-LANDLINE,ZZ-UKMAP-RAIL,ZZ-UKMAP-STATION,ZZ-UKMAP-STATION NAME"))))
  4.    (repeat
  5.      (setq i (sslength ss))
  6.      (setq sset (ssname ss (setq i (1- i))))
  7.      (setq e (entget sset))
  8.      (if (not (eq (cdr (assoc 2 e))"MAP"))
  9.        (entdel sset)
  10.      )
  11.    )
  12.    (princ)
  13. )
  14. (princ)
  15. )

 
塔瓦特
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 10:27:26 | 显示全部楼层
如果“地图”块不是动态的,我会这样处理:
 
  1. (defun c:FOO (/ ss)
  2. (if (setq ss (ssget "_x" '((-4 . "<NOT")
  3.                             (2 . "MAP")
  4.                             (-4 . "NOT>")
  5.                             (8 . "ZZ-UKMAP-LANDLINE,ZZ-UKMAP-RAIL,ZZ-UKMAP-STATION,ZZ-UKMAP-STATION NAME"))))
  6.    (command "._erase" ss "")
  7.    (prompt "\n** Nothing selected ** "))
  8. (princ))

 
**未经测试,并写在我的MacBook上,我可以在上班时进行测试**
注意-应进行层检查,以确保层未首先锁定。
 
... 否则,我将使用vlax for逐步遍历选择集,有条件地使用块的有效名称进行限定。
 
HTH公司
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-7 05:27 , Processed in 0.448649 second(s), 69 queries .

© 2020-2025 乐筑天下

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