注册 登录
明经CAD社区 返回首页

ZZXXQQ的个人空间 http://www.mjtd.com/?97616 [收藏] [复制] [分享] [RSS]

日志

统计当前图中的图块数量

已有 2758 次阅读2005-8-19 09:58 |系统分类:开发

;统计图块数量

(DEFUN C:SUMBLK ()
 (IF (SETQ SS (SSGET "X" (LIST (CONS 0 "INSERT")))) (PROGN
  (SETQ SL (SSLENGTH SS) I 0 BL (LIST))
  (REPEAT SL
   (SETQ ENT (ENTGET (SSNAME SS I)) I (1+ I)
         BNM (CDR (ASSOC 2 ENT)))
   (IF (EVAL (READ BNM))
    (SET (READ BNM) (1+ (EVAL (READ BNM))))
   (PROGN
    (SETQ BL (CONS (LIST BNM 1) BL))
    (SET (READ BNM) 1)
   ))
  )
  (SETQ SL (LENGTH BL) I 0 BL (REVERSE BL))
  (PRINC "图块名:数量\n")
  (REPEAT SL
   (SETQ B (NTH I BL) BNM (CAR B)
         BL (SUBST (LIST BNM (EVAL (READ BNM))) B BL))
   (PRINC BNM) (PRINC " : ")
   (PRINC (EVAL (READ BNM))) (PRINC "\n")
   (SETQ I (1+ I))
   (SET (READ BNM) nil)
  )
 ))
 (PRINC)
)


路过

雷人

握手

鲜花

鸡蛋

发表评论 评论 (3 个评论)

回复 meflying 2005-8-26 15:46
有些问题,不能重复使用(数量会累加),还会出现无法判断的情况,未仔细看,不知道是什么原因,还有,如果有用纯数字做块名,会出错。
我也写了一个:
(DEFUN C:SUMBLK ( / blk ss)
  (prompt "\n块名\t数量")
  (prompt "\n--------------")
  (while (setq blk (tblnext "block" (not blk)))
    (if (/= "*" (substr (cdr (assoc 2 blk)) 1 1))
      (progn
 (setq ss (ssget "x" (list '(0 . "INSERT") (assoc 2 blk))))
 (if ss (princ (strcat "\n" (cdr (assoc 2 blk)) ":\t" (rtos (sslength ss)))))
      )
    )
  )
  (princ)
)
回复 无痕 2005-9-3 19:50
(setq ss (ssget "x" (list '(0 . "INSERT") (assoc 2 blk))))
图大块多的时候,效率会降低。其实楼主的程序结构是可以 的,只是用别的方法来替换set的功能就可以了。
回复 doubao 2005-9-3 20:38
设置清零
变量名前再加一个字符如 “b”

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

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

GMT+8, 2024-3-29 07:23 , Processed in 0.106268 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

返回顶部