明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: xd-xdcad

[源码] 已解决:查找文字后,定位并统计数量

  [复制链接]
发表于 2011-7-30 08:38:08 | 显示全部楼层
   感谢ZZXXQQ的源程序,学习并试着修改了一下。。。。
;选中文字做圆圈标记并显示数量 明经 ZZXXQQ 2011.1.27
;yjr学习并修改 2011.7.29
(DEFUN *ERROR* (msg)
  (COMMAND) (COMMAND)
  (PRINC (STRCAT "\n 警告! " "程序已经退出!"))
  (PRINC)
)
(defun c:ttz ()
(setvar "cmdecho" 0)
(setq stxt (getstring "\n输入标记<屏选> :"))
(if (and (= stxt "")
          (setq s1 (entsel "\n选择标记 :"))
          (setq ent (entget(car s1)))
          (= (cdr(assoc 0 ent)) "TEXT"))
  (setq stxt (cdr(assoc 1 (entget(car s1)))))
)
  
(if (setq ss (ssget (list '(0 . "TEXT") (cons 1 (strcat "*" stxt "*"))))) (progn   
  (setq i 0)
  (repeat (sslength ss)
   (setq en (ssname ss i))
   (vla-getboundingbox(vlax-ename->vla-object en) 'minp 'maxp)
   (setq minp (vlax-safearray->list minp)
         maxp (vlax-safearray->list maxp))
   (setq pt (polar minp (angle minp maxp) (/ (distance minp maxp) 2)))
   (setq ybl (getreal"\n 请输入圆的大小:<右键默认1000>"))
    (if (not ybl )(setq ybl 1000))
    (command "layer" "make" "circle" "c" 1 "circle" "")
    (command ".CIRCLE" pt ybl)
    (setq i(1+ i))
   )
  (princ "\n")
  (princ (list "总共找到" (sslength ss)"处"))
))
  (princ "\n")
(initget 1  " Yes NO")
   (setq yorn(getkword "要删除圆吗?<Yes or No>:"))
  (if (= yorn "Yes")
    (progn
    (setq sss (ssget "x" '((0 . "circle")(8 . "circle"))))
    (command "erase" sss "")
    )
    (command "")
    )
  (setvar "CMDECHO" 1)
(princ)
)

点评

很好哈,跟萝卜哥滴差不多但是萝卜哥多了对话框。模糊查询到。显示在一个框内选框内滴字。再标那个圆  发表于 2012-3-27 12:57

评分

参与人数 2明经币 +2 收起 理由
品茗新秀 + 1 赞一个!
flytoday + 1 很给力!

查看全部评分

发表于 2011-7-30 12:17:10 | 显示全部楼层
不错,能否一次性可以选择上并知道“总共找到”的数量?
发表于 2011-7-30 13:29:01 | 显示全部楼层
可以的,请使用下面的代码即可。
;选中文字做圆圈标记并显示数量 明经 ZZXXQQ 2011.1.27
;yjr学习并修改 2011.7.29
(DEFUN *ERROR* (msg)
  (COMMAND) (COMMAND)
  (PRINC (STRCAT "\n 警告! " "程序已经退出!"))
  (PRINC)
)
(defun c:ttz ()
(setvar "cmdecho" 0)
(setq stxt (getstring "\n输入标记<屏选> :"))
(if (and (= stxt "")
          (setq s1 (entsel "\n选择标记 :"))
          (setq ent (entget(car s1)))
          (= (cdr(assoc 0 ent)) "TEXT"))
  (setq stxt (cdr(assoc 1 (entget(car s1)))))
)
  
  (setq ybl (getreal"\n 请输入圆的大小:<右键默认1000>"))
    (if (not ybl )(setq ybl 1000))
    (command "layer" "make" "circle" "c" 1 "circle" "")
  
(if (setq ss (ssget (list '(0 . "TEXT") (cons 1 (strcat "*" stxt "*"))))) (progn
        
  (setq i 0)
  (repeat (sslength ss)
   (setq en (ssname ss i))
   (vla-getboundingbox(vlax-ename->vla-object en) 'minp 'maxp)
   (setq minp (vlax-safearray->list minp)
         maxp (vlax-safearray->list maxp))
   (setq pt (polar minp (angle minp maxp) (/ (distance minp maxp) 2)))
   
    (command ".CIRCLE" pt ybl)
    (setq i(1+ i))
   )
   (princ "\n")
  (princ (list "总共找到" (sslength ss)"处"))
))
  (princ "\n")
(initget 1  " Yes NO")
   (setq yorn(getkword "要删除圆吗?<Yes or No>:"))
  (if (= yorn "Yes")
    (progn
    (setq sss (ssget "x" '((0 . "circle")(8 . "circle"))))
    (command "erase" sss "")
    )
    (if (= yorn "No")(command ""))
    )
  (setvar "CMDECHO" 1)
(princ)
)

回复 支持 1 反对 0

使用道具 举报

发表于 2011-7-30 13:45:34 | 显示全部楼层
赞一个
发表于 2011-10-14 09:52:34 | 显示全部楼层
发帖回复,呵呵!
发表于 2011-10-28 18:47:55 | 显示全部楼层
很好的功能。谢谢。
发表于 2011-11-25 15:33:10 | 显示全部楼层
太好了,谢谢楼主
发表于 2011-11-25 15:33:42 | 显示全部楼层
真的吗,实在是厉害
发表于 2011-11-25 15:35:23 | 显示全部楼层
牛人啊,不看看不行,哈哈哈哈哈哈
发表于 2011-11-25 15:36:14 | 显示全部楼层
有插件直接下吗,哈哈哈
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-14 14:35 , Processed in 0.391056 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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