明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5737|回复: 31

[求助]统计所选多线段封闭区域内块的数量

  [复制链接]
发表于 2009-6-5 12:52 | 显示全部楼层 |阅读模式

明经里关于统计一张CAD图里面相同块(或全部块)的数量的程序已经有不少,但程序功能不是够强大。

统计块的范围不是整张图纸就是某个范围内(该范围一般只能用鼠标框选),但是,如果是大型的公建的地下室或裙楼

部分,一层有多个防火分区,而每个防火分区形状各异。如果要统计每个防火分区内某个块或全部块的数量,则相当烦琐。哪位大虾能做个统计图块数量的程序:先用多线段绘出各防火分区范围,再用统计图块的程序命令,选取统计范围时点击所选的某个多选段,就可以统计出该多线段封闭区域内图块的数量。

发表于 2020-8-19 12:32 | 显示全部楼层
sweetsea 发表于 2015-7-14 14:22
;统计封闭复线内的块。明经 ZZXXQQ 2009.6.8
(DEFUN C:TT ()
(IF (AND (SETQ S1 (ENTSEL "\nSelect a ...

(defun c:tt( )
(if(setq ss(ssget":E:S"'((0 . "INSERT"))))
(progn(setq bnm(cdr(assoc 2(entget(ssname ss 0)))))(if(and(setq s1(entsel"\n选择封闭多段线: "))(setq EN(entget(car s1)))(=(cdr(assoc 0 EN))"LWPOLYLINE")(=(cdr(assoc 70 EN))1))(progn(setq ptn'())
(foreach N EN(if(=(car N)10)(setq ptn (cons(cdr N)ptn))))(setq ss(ssget"WP"ptn(list'(0 . "INSERT") (cons 2 bnm))))))))(if ss(progn(setq nn(sslength ss))
(alert(strcat "共找到了图块"  "【" bnm "】"  "  "  (itoa nn)  " 个"))))
(princ)
)
发表于 2020-8-19 00:22 | 显示全部楼层
sweetsea 发表于 2015-7-14 14:22
;统计封闭复线内的块。明经 ZZXXQQ 2009.6.8
(DEFUN C:TT ()
(IF (AND (SETQ S1 (ENTSEL "\nSelect a ...

你说的对。我也需要这样的插件。最好是可以同时选择多个块,然后一起统计。
发表于 2018-9-6 15:29 | 显示全部楼层
命令: TT
选择对象:
参数类型错误: lselsetp nil
 楼主| 发表于 2009-6-7 21:28 | 显示全部楼层
各位编程好手们帮帮忙啊,我顶~~~
发表于 2009-6-7 23:05 | 显示全部楼层
在选择的时候输入wp或者cp就能满足你的要求了
发表于 2009-6-8 12:57 | 显示全部楼层
本帖最后由 作者 于 2009-6-9 12:42:24 编辑

游客,本帖隐藏的内容需要发帖数高于 5 才可浏览,你当前发帖数只有 0

 楼主| 发表于 2009-6-8 13:22 | 显示全部楼层
ZZXXQQ版主的程序有问题,加载后无任何反应哟
发表于 2009-6-8 13:30 | 显示全部楼层
四楼改了,再试试。
发表于 2009-6-8 14:34 | 显示全部楼层

如题,等待高手~~~

发表于 2009-6-8 20:29 | 显示全部楼层
ZZXXQQ发表于2009-6-8 12:57:00

程序加载后如下:

[检查文字 <未命名-1> 正在加载...]
.
; 错误: 参数太少: (IF (AND ( ... ) ( ... ) ( ... ) ... ))
.
; 错误: 输入中含有多余的闭括号
; 检查完成.
 程序还有错误

发表于 2009-6-8 20:58 | 显示全部楼层
  1. ;统计封闭复线内的块。明经 ZZXXQQ 2009.6.8
  2. (DEFUN C:TT ()
  3.   (IF (AND (SETQ S1 (ENTSEL "\nSelect a Polyline 选择多段线 :"))
  4.            (SETQ ENT(ENTGET(CAR S1)))
  5.            (= (CDR(ASSOC 0 ENT)) "LWPOLYLINE")
  6.            (= (CDR(ASSOC 70 ENT)) 1))(PROGN
  7.    (SETQ PLST (LIST))
  8.    (FOREACH N ENT (IF (= (CAR N) 10) (SETQ PLST (CONS (CDR N) PLST))))
  9.    (SETQ PLST (REVERSE PLST))
  10.    (SETQ SS (SSGET "WP" PLST '((0 . "INSERT"))))
  11.   ))
  12.   (IF SS (SSLENGTH SS) 0)
  13. )
复制代码
 楼主| 发表于 2009-6-8 21:42 | 显示全部楼层
程序加载后提示选择多段线,选择多段线后又无任何反应了。程序还有问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-25 06:02 , Processed in 0.457808 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表