Beeftimer 发表于 2022-7-5 20:21:30

计算边界内的块数

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

lamensterms 发表于 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
 
结合使用这些例程,你应该准备好了。

Beeftimer 发表于 2022-7-5 20:41:30

谢谢你,Lamensterms。这看起来很完美!我以前从未在AutoCAD中使用过脚本。你能告诉我,这是C语言吗?
 
*编辑*
 
此外,是否有方法将数据提取命令(已经存在)与此脚本结合使用?
 
牛肉

lamensterms 发表于 2022-7-5 20:47:47

这两个都是LISP程序。它们可以通过“工具”菜单>“加载应用程序”加载。。。
 
在CadTutor有一个专门讨论LISP的完整论坛。一些非常有帮助的人提供了一些非常方便的问题解决方案。

Beeftimer 发表于 2022-7-5 20:52:40

啊,所以它是一种完全独立的编程语言。有趣的我必须更仔细地调查这件事。非常感谢你的帮助。
 
牛肉

BIGAL 发表于 2022-7-5 21:02:24

只需将*文本更改为插入,然后尝试此操作
 

; get text with closed pline example
(defun getcoords (ent)
(vlax-safearray->list
   (vlax-variant-value
   (vlax-get-property
   (vlax-ename->vla-object ent)
   "Coordinates"
   )
   )
)
)

(defun co-ords2xy (/ xy)
; 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
(setq numb (/ (length co-ords) 2))
(setq I 0)
(repeat numb
(setq xy (list (nth i co-ords)(nth (+ I 1) co-ords) ))
(setq co-ordsxy (cons xy co-ordsxy))
(setq I (+ I 2))
)
)
; program starts here
(setq plist (ssget (list (cons 0 "lwpolyline"))))
(setq numb (sslength plist))
(setq J 0)
(repeat numb
(setq co-ords (getcoords (ssname plist J)))
(co-ords2xy)
(setq ss (ssget "WP" co-ordsxy (list (cons 0 "*text")))) ; selection set of text within polygon
(princ (sslength ss)) ; this is howmany texts etc
(setq co-ordsxy nil)
(setq J (+ J 1))
(setq ss nil)
) ; end repeat

Beeftimer 发表于 2022-7-5 21:11:56

比加尔,
 
lamensterms指导我的代码运行得很好,但我非常感谢您的输入。也许我也会试试这个,看看有什么不同。这可能有助于我理解这门语言。
 
谢谢
牛肉

lamensterms 发表于 2022-7-5 21:21:09

您好,再一次,将这两个例程合并到一个命令中是非常容易的。这是我很乐意帮助你的事情。我对LISP的了解非常有限,但是结合几个不同的例程,构建一个好的例程是相当容易的。祝你好运,请告诉我你进展如何。

SLW210 发表于 2022-7-5 21:22:18

我将你的帖子转移到AutoLISP、Visual LISP和DCL论坛。
页: [1]
查看完整版本: 计算边界内的块数