明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5721|回复: 21

各位帮我改一个图块统计程序,谢谢

  [复制链接]
发表于 2007-12-4 11:22:00 | 显示全部楼层 |阅读模式

各位帮我改一个程序,谢谢

我希望通过窗选来统计,不希望它统计整张图的块。

程序如下:

(defun c:ttt()
   (setvar "cmdecho" 0)
   (setq os (getvar "osmode"))
   (setvar "osmode" 0)
   (setq pt1 (getpoint "\n左上角: "))
   (setq ww (getdist pt1 "\n宽度 <50>: "))
   (if (null ww) (setq ww 40.0))
   (setq hh (getdist pt1 "\n每格高度 <8>: "))
   (if (null hh) (setq hh 8.0))
   (setq pt2 (polar pt1 0 ww))
   (setq pt3 (polar pt2 (* pi 1.5) hh))
   (setq pt4 (polar pt1 (* pi 1.5) hh))
   (command "pline" pt1 pt2 pt3 pt4 "c")
   (setq pt5 (polar pt1 0 (/ ww 2)))
   (setq pt6 (polar pt5 (* pi 1.5) hh))
   (command "line" pt5 pt6 "")
   (command "text" "m" (inters pt1 pt6 pt4 pt5) (/ hh 2) 0 "图块名称")
   (command "text" "m" (inters pt5 pt3 pt2 pt6) (/ hh 2) 0 "数量") 
    (setq blk (tblnext "block" t))
    (while blk
      (setq blkn (assoc 2 blk))
      (setq blk_key (substr (cdr blkn) 1 1))
      (if (/= blk_key "*")
         (progn
            (setq ss (ssget "X" (list blkn)))
            (if (null ss)
               (setq ssn 0)
               (setq ssn (sslength ss))             
            )
            (setq blknn (cdr blkn))
            (setq pt1 pt4 pt5 pt6 pt2 pt3)
            (setq pt4 (polar pt1 (* pi 1.5) hh))
            (setq pt6 (polar pt5 (* pi 1.5) hh))
            (setq pt3 (polar pt2 (* pi 1.5) hh))
            (command "pline" pt2 pt3 pt4 pt1 "")
            (command "line" pt5 pt6 "")
            (command "text" "m" (inters pt1 pt6 pt4 pt5) (/ hh 2) 0 blknn)
            (command "text" "m" (inters pt5 pt3 pt2 pt6) (/ hh 2) 0 (itoa

ssn))
         )
      )
      (setq blk (tblnext "block"))
   )
   (setvar "osmode" os)
   (prin1)
)


 楼主| 发表于 2007-12-4 18:40:00 | 显示全部楼层

没有那位大哥帮改一下吗?

发表于 2007-12-5 20:47:00 | 显示全部楼层

不希望它统计整张图的块,就不要这一行(setq blk (tblnext "block" t))

改成别的

发表于 2007-12-5 20:57:00 | 显示全部楼层
不知道楼主想干嘛,给个块统计的
  1. ;;;块数量carrot1983,2007.12.05
  2. ;;-------------------------------------
  3. (defun c:tt (/ DATA ELST LASTLST NAME NLST SS)
  4.   ;;ss->elst选择集->图元表
  5.   (defun ss->elst (ss / elst)
  6.     (setq i 0)
  7.     (repeat (sslength ss)
  8.       (setq elst (cons (ssname ss i) elst)
  9.      i  (1+ i)
  10.       )
  11.     )
  12.     (reverse elst)
  13.   )
  14. ;;;统计表中相同元素的个数
  15.   (defun lstsameitmnum (lst / a len x return)
  16.     (while lst
  17.       (setq a (car lst))
  18.       (setq len (length lst))
  19.       (setq lst (vl-remove-if '(lambda (x) (= a x)) lst))
  20.       ;;第一个是(- len(length lst))个
  21.       (setq return (cons (list a (- len (length lst))) return))
  22.     )
  23.     return
  24.   )
  25.   (if (setq ss (ssget '((0 . "INSERT"))))
  26.     (progn
  27.       (setq elst (ss->elst ss))
  28.       (foreach e elst
  29. (setq data (entget e))
  30. (setq name (cdr (assoc 2 data)))
  31. (setq nlst (cons name nlst))
  32.       )
  33.       (setq lastlst (lstsameitmnum nlst))
  34.       (princ "\n>>>块数量统计如下(块名,数量):\t")
  35.       (prin1 lastlst)
  36.     )
  37.     (princ "\n请重新选择")
  38.   )
  39.   (princ)
  40. )
发表于 2007-12-5 22:36:00 | 显示全部楼层
游客,本帖隐藏的内容需要发帖数高于 5 才可浏览,你当前发帖数只有 0

 楼主| 发表于 2007-12-7 22:43:00 | 显示全部楼层
谢谢你们,问题搞定
发表于 2007-12-10 11:50:00 | 显示全部楼层
可以统计整张图一种圆孔大小和数量吗?
发表于 2008-1-23 10:51:00 | 显示全部楼层
可以自动生成表格吗?
发表于 2008-1-23 10:56:00 | 显示全部楼层

生成的统计数是否可以根据图纸中的变化而更改~

发表于 2008-4-2 14:24:00 | 显示全部楼层

我也碰到这个问题

我也碰到这个问题
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-6-3 13:33 , Processed in 0.164341 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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