乐筑天下

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

[编程交流] 带条件的选择

[复制链接]

62

主题

466

帖子

404

银币

后起之秀

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

铜币
310
发表于 2022-7-6 10:43:10 | 显示全部楼层 |阅读模式
我想按惯例
ssget 34doors并执行此命令
ssget 36doors和该命令。
很多时候只有34或36个。很少在一张图中同时出现这两种情况,但不想在这个例程中计算出来。
 
我只是不知道该怎么设置。。。
 
  1. (setq ss (ssget "_x" '((2 . "*door"))))
  2. (cond ((= "34door" ss)
  3.          (command ...
  4.         )
  5.         ((= "36door" ss)
  6.          (command ...
  7.         )
  8. )
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 10:50:10 | 显示全部楼层
逐步遍历选择集索引并计算名称。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 10:56:16 | 显示全部楼层
为什么要选择。。。。。。调用命令?
这些门的名字是方块吗?
 
提供更多行动细节,以便清楚地了解情况
由成员提供。
 
塔瓦特
回复

使用道具 举报

62

主题

466

帖子

404

银币

后起之秀

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

铜币
310
发表于 2022-7-6 11:03:26 | 显示全部楼层
 
我在收到你回复的同时查到了这个
http://www.afralisp.net/autolisp/tutorials/selection-sets.php
 
非常感谢。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 11:08:34 | 显示全部楼层
给你一个开始,
  1. (setq ss (ssget "_x" '((2 . "*door"))))
  2. (if ss
  3. (progn
  4.    (setq i     0
  5.          total 0
  6.          n     (sslength ss)
  7.    )
  8.    (while (< i n)
  9.      (setq e (entget (ssname ss i)))
  10.      (setq str (cdr (assoc [color="red"]0[/color] e)))
  11.      (setq i (1+ i))
  12. ))
  13. (cond ((= "34door" str)(command .....))
  14.      ((= "36door" str)(command .............))))

 
将它们添加到代码中,但不确定实体的类型。
 
塔瓦特
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:11:45 | 显示全部楼层
举手之劳如果你需要更多帮助,喊一声。 
要知道,如果您使用的是命令,它将只对当前布局中的对象有效,即使ssget“_X”将选择整个图形中的所有内容。小心,做一点额外的过滤*提示DXF 410*。
回复

使用道具 举报

62

主题

466

帖子

404

银币

后起之秀

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

铜币
310
发表于 2022-7-6 11:21:17 | 显示全部楼层
 
我已经打破了我的规则,到处蹦蹦跳跳。我现在正在回到正轨。我在看entmake/mod,我想知道如何修改现有的文本。我试图在afralisp上修改一个例程。net“chlayer”,但我没有成功。
 
  1. (setq old (ssget "_x" '((1 . "blah*"))))
  2. (setq new "hi")

 
这个程序对我非常有用,因为我做了很多客户修改
 
 
____
 
我去查一下,谢谢
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:24:38 | 显示全部楼层
您可以在ssget中将1添加到dxf过滤器中,但是,由于它区分大小写,您可以轻松跳过这些内容。您最好只选择文本,然后逐步完成。
 
例如(将文本替换为“PIZZA”替换为“BURGERS”)
 
  1. (defun c:Test (/ ss)
  2. (if (setq ss (ssget "_:L" '((0 . "TEXT"))))
  3.    ((lambda (i / e s l)
  4.       (while (setq e (ssname ss (setq i (1+ i))))
  5.         (if (wcmatch (strcase (cdr (setq s (assoc 1 (setq l (entget e)))))) "PIZZA")
  6.           (entmod (subst (cons 1 "BURGERS") s l))
  7.         )
  8.       )
  9.     )
  10.      -1
  11.    )
  12. )
  13. (pricn)
  14. )
回复

使用道具 举报

62

主题

466

帖子

404

银币

后起之秀

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

铜币
310
发表于 2022-7-6 11:28:04 | 显示全部楼层
 
谢谢我有很多要学的!
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

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

铜币
438
发表于 2022-7-6 11:37:14 | 显示全部楼层
如果您使用注释性文本“date=”,您可能希望避免输入文本;这将导致巨大的文本对象。最好用entget提取字符串(用vla get textstring提取符号的bug),用vla put textstring放置字符串。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 16:55 , Processed in 1.837648 second(s), 72 queries .

© 2020-2025 乐筑天下

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