明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1883|回复: 6

求关于点选框输出框内文字

[复制链接]
发表于 2013-1-13 23:13 | 显示全部楼层 |阅读模式
1明经币
本帖最后由 weiqi 于 2013-1-13 23:24 编辑

希望点选框    提取框内 两个图层的文字(框内有其他图层的文字)并输出(E-ID 和 E-PE)里的文字。(E-ID排在前,E-PE的文字排在后 输出)




感谢 群里 阿然大哥提供的一段 提取一个图层 内的文字并输出    图层里的所有 文字并输出。
但我希望是有 范围的输出。
望高手出手指点指点

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

最佳答案

查看完整内容

学习重要, 也只有你这样选吧 已改
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2013-1-13 23:13 | 显示全部楼层
本帖最后由 叮咚 于 2013-1-14 20:03 编辑

学习重要,
也只有你这样选吧

已改

本帖子中包含更多资源

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

x

点评

就是,一次选多个框然后列出来~~  发表于 2013-1-15 19:55
谢咯,能赠加个复选的话,就完每啦~就是 点多个然后列出来。  发表于 2013-1-15 19:54
回复

使用道具 举报

 楼主| 发表于 2013-1-14 01:37 | 显示全部楼层
本帖最后由 weiqi 于 2013-1-14 01:37 编辑

边查边写,自己试着改了一下。


有几个问题。
我这样写的时候
(ssget  (list (cons 8 "E-ID,E-PE")  (cons 0 "TEXT"))
选对象就可以。
但是我如果先选对象
(setq s1 (ssget))  对象集定义为s1
后 想 从 s1 中  加入条件 (list (cons 8 "E-ID,E-PE")  (cons 0 "TEXT") 得怎么写呢。

本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 2013-1-14 01:39 | 显示全部楼层
本帖最后由 weiqi 于 2013-1-14 01:55 编辑

第三个箱错误 是因为第三个箱的文字 并不在 E-ID 和 E-PE上边。

还搞不懂 ,这个是以什么方式 来计算先输出哪个的。

貌似是按 生成时间来的,要是能就近距离按范围来输出就好了。。。。

免得,大量框选的时候。由于画图的时候顺序不对。    输出的顺 序乱了。
回复

使用道具 举报

 楼主| 发表于 2013-1-14 19:21 | 显示全部楼层
感谢楼上~但是 貌似 只能列出 一个屏幕内的内容,如果在框内,但是屏幕没显示的话,列不出来

本帖子中包含更多资源

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

x
回复

使用道具 举报

发表于 2013-1-15 08:02 | 显示全部楼层
CAD版本不同,有些命令不一样。
  1. (defun c:cdx ()
  2. (setvar "cmdecho" 0)
  3. (princ "\n选择方框<空格退出>:")
  4. (while (setq ss (ssget ":e:s" (list (cons 0 "lwpolyline"))))
  5.   (setq lin (ssname ss 0) data (entget lin) pts nil)
  6.   (foreach xx data (if (= 10 (car xx))(setq pts (cons (cdr xx) pts))))
  7.   (command ".zoom" "W" (car pts) (caddr pts))
  8.   (setq ens (ssget "cp" pts '((0 . "TEXT") (8 . "E-PE,e-id"))))
  9.   (command ".zoom" "p")
  10.   (or ens (setq ens (ssadd)))
  11.   (setq len (sslength ens) n 0 strs nil)
  12.   (while (< n len)
  13.    (setq en (ssname ens n) data (entget en))
  14.    (setq strs (cons (cons (cdr (assoc 10 data))(strcat " " (cdr (assoc 1 data)))) strs))
  15.    (setq n (1+ n))
  16.   )
  17.   (if strs (progn
  18.    (setq strs (vl-sort strs '(lambda(e1 e2) (> (cadar e1)(cadar e2)))))
  19.    (setq str "")
  20.    (foreach  xx strs (setq str (strcat str (cdr xx))))
  21.    (initget 1)
  22.    (setq pt-ins (getpoint "\n指定一点:"))
  23.    (entmake
  24.     (list
  25.      '(0 . "TEXT")
  26.      '(100 . "AcDbEntity")
  27.      '(8 . "E-PE")
  28.      '(62 . 110)
  29.      '(100 . "AcDbText")
  30.      (cons 10 pt-ins)
  31.      '(40 . 444.444)
  32.      (cons 1  str)
  33.      '(41 . 0.7)
  34.      '(7 . "HZ")
  35.     )
  36.    )
  37.   )
  38.    (princ "\n不包含指定层文字!")
  39.   )
  40.   (princ "\n选择方框<空格退出>:")
  41. )
  42. (setvar "cmdecho" 1)
  43. (princ)
  44. )

点评

感谢斑竹热心回答  发表于 2013-1-15 19:55
也想过用“w”,不过,考虑到,如果不是四方框的话,也是不行的。所以就用了,“o”  发表于 2013-1-15 08:14
回复

使用道具 举报

发表于 2013-1-15 12:13 | 显示全部楼层
为什么要限制图层,合并框里面的就可以?

点评

因为限制图层 方便后边数据的统计啊什么的。  发表于 2013-1-15 19:56
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-16 02:29 , Processed in 0.163795 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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