乐筑天下

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

[编程交流] 选择对象:或(A)ll

[复制链接]

21

主题

155

帖子

135

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
105
发表于 2022-7-5 18:03:41 | 显示全部楼层 |阅读模式
这应该很容易,但我正在努力。我想要一个例程用作使用以下方法的模板:
提示:“选择对象:或(A)ll”
除非输入“A”,否则左键单击将启动“按项目选择”窗口,在这种情况下,所有内容(允许的过滤器)都被选中
 
到目前为止,我的代码是:
 
  1. (defun c:select-opt (/ opt ss)
  2. (setq opt (cond ((getkword "\nSelect objects: or (A)ll "))("s")))
  3. (cond
  4.    ((eq opt "a")
  5.           (setq ss (ssget "_X" '((0 . "TEXT,MTEXT"))))
  6.    )
  7.    ((eq opt "s")
  8.     (setq ss (ssget "_:L" '((0 . "TEXT,MTEXT"))))
  9.     )
  10. )
  11. (princ (itoa (sslength ss)))
  12. (princ)
  13. )

 
这是可行的,但首先需要右键单击,我想取消右键单击
回复

使用道具 举报

0

主题

375

帖子

385

银币

限制会员

铜币
-7
发表于 2022-7-5 18:11:39 | 显示全部楼层
你可以简单地使用
  1. (setq ss (ssget "_:L" '((0 . "TEXT,MTEXT"))))

并在提示选择时键入“all”。
 

  1. (princ "\nSelect objects or press enter to select all: ")
  2. (or
  3. (setq ss (ssget "_:L" '((0 . "TEXT,MTEXT"))))
  4. (setq ss (ssget "_X" '((0 . "TEXT,MTEXT"))))
  5. )
回复

使用道具 举报

21

主题

155

帖子

135

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
105
发表于 2022-7-5 18:16:12 | 显示全部楼层
这很奇怪,它可以在控制台中工作,但会产生;错误:lisp中的参数太少:
 
  1. (defun c:select-opt ( ss )
  2. (princ "\nSelect objects or press enter to select all: ")
  3. (or
  4. (setq ss (ssget "_:L" '((0 . "TEXT,MTEXT"))))
  5. (setq ss (ssget "_X" '((0 . "TEXT,MTEXT"))))
  6. )
  7. (princ (strcat "\n" (itoa (sslength ss))))
  8. (princ)
  9. )
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:19:42 | 显示全部楼层
  1. ( ss )
应为:
  1. ( / ss )
回复

使用道具 举报

21

主题

155

帖子

135

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
105
发表于 2022-7-5 18:24:11 | 显示全部楼层
谢谢你Stefan&你也是Lee,很好
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:26:58 | 显示全部楼层
别担心
回复

使用道具 举报

21

主题

155

帖子

135

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
105
发表于 2022-7-5 18:30:48 | 显示全部楼层
我仍然认为必须能够在命令中放入“cond”语句,首先见证绘制圆、圆弧或样条曲线。
 
或Trim,返回“选择对象或:”
 
哦,好吧
回复

使用道具 举报

28

主题

317

帖子

292

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
140
发表于 2022-7-5 18:35:55 | 显示全部楼层
用一个简单的,如果是这样的话,也许?
 
  1. (defun c:select-opt ( / ss)
  2. (princ "\nSelect objects and press enter or press enter right away to select all: \n")
  3. (if (not (setq ss (ssget "_:L" '((0 . "TEXT,MTEXT")))))
  4.      (setq ss (ssget "_X" (list '(0 . "TEXT,MTEXT") (cons 410 (getvar 'ctab)))))
  5. )
  6. (princ (itoa (sslength ss)))
  7. )

 
 
我将ssget _x仅限于当前选项卡,如果没有它,它将从所有选项卡和模型中进行选择。
 
干杯
杰夫!
回复

使用道具 举报

21

主题

155

帖子

135

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
105
发表于 2022-7-5 18:40:42 | 显示全部楼层
那正是我想要的,谢谢你,杰夫!
 
问题在于
方法是误点击非文本项会使代码默认为ssget\u X
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-5 18:43:44 | 显示全部楼层
除了为(ssget“_X”)表达式添加布局过滤器外,请注意(if(not…)语句的操作与(或)语句相同。
 
在这两种情况下,只有当第一个表达式返回nil时,才会对第二个表达式求值。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-12 23:29 , Processed in 0.442592 second(s), 72 queries .

© 2020-2025 乐筑天下

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