明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1871|回复: 8

查询选中目标的数量的lisp怎样写?

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

工作中经常要计算某些东西的总数,老是用眼睛去数累死了,想写个LISP,但水平有限无从入手,有高手能帮个忙吗?

希望能实现以下功能:

自动列出某一范围内(非全图),点选中的目标各自的数量

如: 块1  有 12个     块2  有 22个

     文字值 UP  有24个  文字值 DON  有2个

     多段线1  有 11 个 

麻烦高手们帮帮忙,万分感激~~~~~

 楼主| 发表于 2005-10-13 09:04 | 显示全部楼层

我找到的代码只能实现文体的查询,我还想实现 块 、群组及多义线 的查询。

那位高手能帮忙修改一下可同时实现其他的查询

(defun c:txs()
  (setq ent(car (entsel "\\n选择要筛选的字母: ")))
  (redraw ent 3)
  (setq tex(cdr (assoc 1 (entget ent))))
  (prompt "选择要筛选的区域....")
  (setq ss(ssget (list '(0 . "TEXT") (cons 1 tex))))
  (redraw ent 4)
  (setq len (sslength ss))
  (print (strcat "文本" tex "共有" (rtos len)))
  (princ)
  )

发表于 2005-10-13 13:59 | 显示全部楼层

我来发一个

(defun c:cs( / YH_BLOCK1 YH_BLOCK1NUM YH_BLOCK2 YH_BLOCK2NUM YH_ENTGET YH_GETAREA YH_INDEX YH_LENGTH YH_TYPE)  (setq YH_block1 "YH_立管"
 YH_block2 "YH_喷头")
  (princ "\n\n请指定范围......")
  (setq YH_getarea (ssget))
  (if (/= YH_getarea nil)
    (progn
      (setq YH_length (sslength YH_getarea))     
      (setq YH_block1num 0
     YH_block2num 0)
      (setq YH_index 0)
      (repeat YH_length
 (setq YH_entget (entget (ssname YH_getarea YH_index)))
 (setq YH_type (cdr (assoc 0 YH_entget)))
 (if (and (= YH_type "INSERT") (= (cdr (assoc 2 YH_entget)) YH_block1)) (setq YH_block1num (1+ YH_block1num)))
        (if (and (= YH_type "INSERT") (= (cdr (assoc 2 YH_entget)) YH_block2)) (setq YH_block2num (1+ YH_block2num)))
 (setq YH_index (1+ YH_index))
 )
      (princ (strcat "图块" YH_block1 "数量为:" (rtos YH_block1num 2 0)))
 (princ "\n")
 (princ (strcat "图块" YH_block2 "数量为:" (rtos YH_block2num 2 0)))
      )
    )
      (princ)
  )

至于文字,不知道你是要求文字值为 UP  还是包含 UP 

 楼主| 发表于 2005-10-13 14:27 | 显示全部楼层
不行,你这个是查询固定块名的,我想要的是查询所选中的块的总数量,功能跟我发的那个查询文本数量是一样的,只是改成查块而已。就是希望能帮我把我的那个程序改一下,不只能查文体,还可以查块。
发表于 2005-10-13 18:40 | 显示全部楼层
命令CS   
发表于 2005-10-13 18:42 | 显示全部楼层

啊噢,忘记上传了,不好意思,用了笨办法解决

 

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2005-10-13 19:13 | 显示全部楼层
CTAL+1,就可以了,
发表于 2005-10-13 19:20 | 显示全部楼层
ctrl+1可以知道有多少块,有多少文字,但是不知道具体某个块有几个,具体某个文字有几个
 楼主| 发表于 2005-10-13 20:07 | 显示全部楼层

不行,非常不稳定,经常数错数,如果所选范围内的块都是些名字短的块时,就出现 ssget 列表值错误 的情况,别的情况也经常出错。前辈请帮忙改进一下。

还有,ctrl+1~9 我都已经用来作了捕捉点的快捷键了~~

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

本版积分规则

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

GMT+8, 2024-5-20 09:36 , Processed in 0.366685 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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