乐筑天下

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

[编程交流] 两个文本实体的计数

[复制链接]

15

主题

52

帖子

37

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-6 07:18:06 | 显示全部楼层 |阅读模式
我不知道我的代码有什么问题,我只是个乞丐。。
谁能帮我一下吗?我将在星期一提交。。。
 
(defun c:corcount(/allcor outcor lots ts\u lots ts\u角)
 
(如果
(setq outcor(ssget“_x”'((0。“text”)(8。“Pnts”)))
(setq outcor(sslength outcor))
(setq outcor 0)
);如果
 
(提示“\n选择要计数的地块/角落:”)
 
(setq ents(ssget(列表)(cons 0“文本”)
(cons-4“(cons 8“$LOTNO”)
(cons 8“角”)
(cons-4“或>”))
 
(defun a(/allcor)
(如果
(setq allcor(ssget“_P”'((0。“text”)(8。“拐角”)))
(setq allcor(sslength allcor))
(setq allcor 0)
);如果
(setq ts_角(itoa(-allcor outcor)))
(princ(strcat“\n角数:“ts\U角”)
);德芬
 
(defun b(/批)
(如果
(setq lots(ssget“_P”'((0。“text”)(8“$LOTNO”)))
(setq批次(sslength批次))
(setq地块0)
);如果
(setq ts_地块(itoa地块))
(princ(strcat“\n标段数:“ts\U标段”)
);德芬
(a) (b)
(普林斯)
)
回复

使用道具 举报

35

主题

2471

帖子

2447

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
174
发表于 2022-7-6 07:33:19 | 显示全部楼层
请注意,下面的行将处理函数A中的选择集,而不是不再是前一个选择集的ENTS。因此,此语句将始终返回零。
  1. (setq lots (ssget "_P" '((0 . "text") (8 . "$LOTNO"))))

尝试使用SSNAME解析ENTS选择集。
 
对于注释,可以使用WCMATCH函数中的规则组合过滤器:
  1. (ssget '((0 . "TEXT") (8 ."$LOTNO,Corners")))

 
请添加代码可读性所需的代码标记。
回复

使用道具 举报

15

主题

52

帖子

37

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-6 07:43:42 | 显示全部楼层
谢谢MSasu,但我对你的建议有点上当了。对不起,我只是个初学者。你能告诉我这是怎么回事吗?
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 07:50:15 | 显示全部楼层
试试这个。。。。
 
[未经测试]
  1. (defun c:corcount (/ cor lot ents i sn)
  2. (setq cor 0
  3.        lot 0
  4. )
  5. (if (setq ents (ssget "_X" '((0 . "TEXT") (8 . "$LOTNO,Corners"))))
  6.    (repeat (setq i (sslength ents))
  7.      (setq sn (ssname ents (setq i (1- i))))
  8.      (if (eq (cdr (assoc 8 (entget sn))) "Corners")
  9.        (setq cor (setq cor (1+ cor)))
  10.        (setq lot (setq lot (1+ lot)))
  11.      )
  12.    )
  13. )
  14. (if (> cor 0)
  15.    (princ (strcat "\n Number of Corners : < " (itoa cor) " >"))
  16. )
  17. (if (> lot 0)
  18.    (princ (strcat "\n Number of Lots : < " (itoa lot) " >"))
  19. )
  20. (princ)
  21. )
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 07:53:13 | 显示全部楼层
ssget中所有值中包含文本的过滤器都使用与wcmatch lisp函数相同的通配符匹配。因此,请查看它的帮助:http://docs.autodesk.com/ACD/2011/ENU/filesALR/WS1a9193826455f5ff1a32d8d10ebc6b7ccc-6754.htm
 
另一种替代方法是在过滤器列表中使用逻辑分组,但在这种情况下,这可能太多了。
回复

使用道具 举报

15

主题

52

帖子

37

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-6 08:07:46 | 显示全部楼层
非常感谢Tharwat,但概念就在这里。
 
1.I have three layer here to use to get the确切答案,我在这里使用了三层。
a、 “PNT”
b、 “$LOTNO”和
c、 “角落”
2.我可以在我的“Pnts”层使用(ssget“_X”)来计算它们
3.但我只需要选择那些属于两层的实体进行计数($LOTNO和Corners)
4.在得到数字后,我将从“Pnts”中得到的数字减去“Corners”,看起来像(-Corners Pnts)
最后,$LOTNO应该只减少一。
 
再次非常感谢,这对我帮助很大。
回复

使用道具 举报

pBe

32

主题

2722

帖子

2666

银币

后起之秀

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

铜币
211
发表于 2022-7-6 08:10:55 | 显示全部楼层
 
从“PNT”中减去“角点”数量的原因是为了获得选择中“$LOTNO”的数量?
对于“PNT”层上的每个文本实体,对于“$LOTNO”或“Corners”有一个等效的文本实体?
回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-7-6 08:20:55 | 显示全部楼层
请阅读代码发布指南,并编辑您的帖子,以包括代码标签!
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 04:29 , Processed in 0.452555 second(s), 68 queries .

© 2020-2025 乐筑天下

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