找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3121|回复: 23

[每日一码] API应用 亮显重叠文字

[复制链接]

已领礼包: 593个

财富等级: 财运亨通

发表于 2014-7-14 21:36:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×

  1. (defun c:tt (/ ss lst l1 lst1 ll tf)
  2.   (if (setq ss (ssget '((0 . "text"))))
  3.     (progn
  4.       (setq lst        (mapcar        '(lambda (x)
  5.                            (list (xd::text:box x);_实际包围盒
  6.                                  x
  7.                            )
  8.                          )
  9.                         (xdrx_pickset->ents ss)
  10.                 )
  11.       )
  12.       (while lst
  13.         (setq l1   (car lst)
  14.               lst1 (cdr lst)
  15.               tf   t
  16.         )
  17.         (while lst1
  18.           (setq        l2   (car lst1)
  19.                 lst1 (cdr lst1)
  20.           )
  21.           (if (xdrx_points_boundingboxintersect (car l1) (car l2));_几何运算,效率更高
  22.             (if        tf
  23.               (setq ll (cons (cadr l1) ll)
  24.                     ll (cons (cadr l2) ll)
  25.                     tf nil
  26.               )
  27.               (setq ll (cons (cadr l2) ll))
  28.             )
  29.           )
  30.           (setq lst1 (cdr lst1))
  31.         )
  32.         (setq lst (cdr lst))
  33.       )
  34.       (if ll
  35.         ;;(progn
  36.         (sssetfirst nil (xd::Entity->Pickset ll))
  37.         ;;(xdrx_pickset_highlight (xd::Entity->Pickset ll))
  38.         ;;)
  39.         (princ "\nOk!")
  40.       )
  41.     )
  42.   )
  43.   (princ)
  44. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 1个

财富等级: 恭喜发财

发表于 2016-6-19 10:48:15 | 显示全部楼层
不能用,(xdrx_points_boundingboxintersect (car l1) (car l2)) 函数值始终未nil,不知道为什么
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2016-6-19 20:21:27 来自手机 | 显示全部楼层
对使用者而言,尺寸文字也是文字,可以扩展一下,给用户提个 醒
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-6-20 07:56:08 | 显示全部楼层
14702470 发表于 2016-6-19 10:48
不能用,(xdrx_points_boundingboxintersect (car l1) (car l2)) 函数值始终未nil,不知道为什么

是点表求包围盒交,两个参数都要是点表。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-6-20 09:25:08 | 显示全部楼层
14702470 发表于 2016-6-19 10:48
不能用,(xdrx_points_boundingboxintersect (car l1) (car l2)) 函数值始终未nil,不知道为什么

看了下代码,是 L1 L2都是二维点表的原因,你把他们变成3D点表就行了

(xdrx_points_boundingboxintersect (xd::pnts:z0 (car l1)) (xd::pnts:z0 (car l2)))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2016-7-9 22:30:31 | 显示全部楼层
newer 发表于 2016-6-20 09:25
看了下代码,是 L1 L2都是二维点表的原因,你把他们变成3D点表就行了

(xdrx_points_boundingboxinters ...

谢谢,太感谢了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 48个

财富等级: 招财进宝

发表于 2017-5-18 21:42:04 来自手机 | 显示全部楼层
试用了一下,似乎能判断水平、竖向文字是否重叠,对于其他角度的文字(例如45度),判断是否重叠时,不重叠的文字,程序也认为重叠
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-5-18 21:56:18 | 显示全部楼层

截取个图片上来说明下, 图上标出你认为的问题的地方。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 48个

财富等级: 招财进宝

发表于 2017-5-19 09:20:21 | 显示全部楼层

jdfw.gif
请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:测试cad图纸.rar 
下载次数:1  文件大小:1.99 MB 
下载权限: 不限 以上  [免费赚D豆]


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 48个

财富等级: 招财进宝

发表于 2017-5-19 09:30:13 | 显示全部楼层
如截图所示,没有重叠的位置,程序有时将它当成重叠了。有重叠的位置,有时当成不重叠。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-5-19 10:48:14 | 显示全部楼层

修改了下代码,你拷贝下面代码回去,测试下,看看

代码支持TEXT和MTEXT的重叠查找

  1. (defun c:tt (/ ss lst l1 lst1 ll tf)
  2.   (if (setq ss (ssget '((0 . "text,mtext"))))
  3.     (progn
  4.       (setq lst        (mapcar        '(lambda (x)
  5.                            (list (xdrx_getpropertyvalue x "textbox") ;_实际包围盒
  6.                                  x
  7.                            )
  8.                          )
  9.                         (xdrx_pickset->ents ss)
  10.                 )
  11.       )
  12.       (while lst
  13.         (setq l1   (car lst)
  14.               lst1 (cdr lst)
  15.               tf   t
  16.         )
  17.         (while lst1
  18.           (setq        l2   (car lst1)
  19.                 lst1 (cdr lst1)
  20.           )
  21.           (setq        g1 (xdrx_polyline_make (car l1) t)
  22.                 g2 (xdrx_polyline_make (car l2) t)
  23.           )
  24.           (if (xdrx_entity_intersectWith g1 g2)
  25.             (if        tf
  26.               (setq ll (cons (cadr l1) ll)
  27.                     ll (cons (cadr l2) ll)
  28.                     tf nil
  29.               )
  30.               (setq ll (cons (cadr l2) ll))
  31.             )
  32.           )
  33.           (xdrx_entity_delete g1 g2)
  34.           (setq lst1 (cdr lst1))
  35.         )
  36.         (setq lst (cdr lst))
  37.       )
  38.       (if ll
  39.         (progn
  40.           (sssetfirst nil (xd::entity->pickset ll))
  41.           (xdrx_prompt
  42.             "\n找到了"
  43.             (length ll)
  44.             "个重叠文字. 已经夹点显示."
  45.           )
  46.         )
  47.         (princ "\n没有找到重叠的文字!")
  48.       )
  49.     )
  50.   )
  51.   (princ)
  52. )


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 48个

财富等级: 招财进宝

发表于 2017-5-19 11:41:50 | 显示全部楼层
非常感谢new版主的回复。感觉这个程序,实际上算法相当复杂。像我一样画图的CAD工程师,无法理解的。但是程序实用性很强的。

还是上贴附件测试图,下面截图中,同样的文字选择集,重复文字统计,数量有时不同。 jdfw.gif
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2017-5-19 12:18:56 | 显示全部楼层

你这个图片看不请,你就把文字图层显示,其他关闭,

然后集中放大某几个地方,截取几个图片,说明下 哪些是不应该重叠的,给判断重叠了, 或者 应该重叠的,给落下了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 48个

财富等级: 招财进宝

发表于 2017-5-19 13:51:09 | 显示全部楼层
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 48个

财富等级: 招财进宝

发表于 2017-5-19 15:49:33 | 显示全部楼层
如上图所示,红色外框的文字,实际是部分重叠的。

反复执行tt,通过不同的选择方式(从左到右选,从右到左选,从上到下选等等),程序有时能判断为重叠,有时不行。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-22 00:53 , Processed in 0.232633 second(s), 63 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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