乐筑天下

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

[编程交流] 计算边界内的块数

[复制链接]

5

主题

27

帖子

22

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 20:21:30 | 显示全部楼层 |阅读模式
大家好。我有一个关于区块计数的问题。我已经熟悉了BCOUNT命令,但我想为我的特定应用程序更进一步。
 
我在一个图形中有几个视口。每个视口表示建筑的特定楼层。此外,在每个楼层内都有由彩色虚线定义的“回路”,其中有某些设备(块)。同一楼层的其他环路中可能存在相同的设备。
 
问题是:有没有办法计算(并可能将该数据导出到电子表格)驻留在每个循环边界内的块数?边界很少是简单的矩形。计算视口中的块数很容易,但我很难计算(如果有办法的话)如何计算循环边界内的块数。
 
**我应该澄清并说,当我说视口时,我真正的意思是布局。每个布局/楼层有一个视口。抱歉,如果这造成了任何混乱或畏缩。
 
提前谢谢。
 
牛肉
回复

使用道具 举报

77

主题

298

帖子

232

银币

后起之秀

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

铜币
394
发表于 2022-7-5 20:33:00 | 显示全部楼层
嗨,牛肉,
 
至于在循环/闭合多段线内选择块,我可以建议使用本线程第2段中的rountine。。。http://www.cadtutor.net/forum/showthread.php?11682-在多段线内选择对象&
 
这是一个很棒的LISP例程(由Lee Mac编写),它可以计算块,并可以选择导出到CSV文件(也可以将表格/明细表插入到图形中)。http://www.lee-mac.com/blockcounter.html
 
结合使用这些例程,你应该准备好了。
回复

使用道具 举报

5

主题

27

帖子

22

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 20:41:30 | 显示全部楼层
谢谢你,Lamensterms。这看起来很完美!我以前从未在AutoCAD中使用过脚本。你能告诉我,这是C语言吗?
 
*编辑*
 
此外,是否有方法将数据提取命令(已经存在)与此脚本结合使用?
 
牛肉
回复

使用道具 举报

77

主题

298

帖子

232

银币

后起之秀

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

铜币
394
发表于 2022-7-5 20:47:47 | 显示全部楼层
这两个都是LISP程序。它们可以通过“工具”菜单>“加载应用程序”加载。。。
 
在CadTutor有一个专门讨论LISP的完整论坛。一些非常有帮助的人提供了一些非常方便的问题解决方案。
回复

使用道具 举报

5

主题

27

帖子

22

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 20:52:40 | 显示全部楼层
啊,所以它是一种完全独立的编程语言。有趣的我必须更仔细地调查这件事。非常感谢你的帮助。
 
牛肉
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 21:02:24 | 显示全部楼层
只需将*文本更改为插入,然后尝试此操作
 
  1. ; get text with closed pline example
  2. (defun getcoords (ent)
  3. (vlax-safearray->list
  4.    (vlax-variant-value
  5.      (vlax-get-property
  6.    (vlax-ename->vla-object ent)
  7.    "Coordinates"
  8.      )
  9.    )
  10. )
  11. )
  12. (defun co-ords2xy (/ xy)
  13. ; convert now to a list of xy as co-ords are x y x y x y if 3d x y z x y z
  14. (setq numb (/ (length co-ords) 2))
  15. (setq I 0)
  16. (repeat numb
  17. (setq xy (list (nth i co-ords)(nth (+ I 1) co-ords) ))
  18. (setq co-ordsxy (cons xy co-ordsxy))
  19. (setq I (+ I 2))
  20. )
  21. )
  22. ; program starts here
  23. (setq plist (ssget (list (cons 0 "lwpolyline"))))
  24. (setq numb (sslength plist))
  25. (setq J 0)
  26. (repeat numb
  27. (setq co-ords (getcoords (ssname plist J)))
  28. (co-ords2xy)
  29. (setq ss (ssget "WP" co-ordsxy (list (cons 0 "*text")))) ; selection set of text within polygon
  30. (princ (sslength ss)) ; this is howmany texts etc
  31. (setq co-ordsxy nil)
  32. (setq J (+ J 1))
  33. (setq ss nil)
  34. ) ; end repeat
回复

使用道具 举报

5

主题

27

帖子

22

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-5 21:11:56 | 显示全部楼层
比加尔,
 
lamensterms指导我的代码运行得很好,但我非常感谢您的输入。也许我也会试试这个,看看有什么不同。这可能有助于我理解这门语言。
 
谢谢
牛肉
回复

使用道具 举报

77

主题

298

帖子

232

银币

后起之秀

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

铜币
394
发表于 2022-7-5 21:21:09 | 显示全部楼层
您好,再一次,将这两个例程合并到一个命令中是非常容易的。这是我很乐意帮助你的事情。我对LISP的了解非常有限,但是结合几个不同的例程,构建一个好的例程是相当容易的。祝你好运,请告诉我你进展如何。
回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-7-5 21:22:18 | 显示全部楼层
我将你的帖子转移到AutoLISP、Visual LISP和DCL论坛。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-8-18 19:53 , Processed in 3.494578 second(s), 82 queries .

© 2020-2025 乐筑天下

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