明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 763|回复: 10

[提问] 求一段代码,获取某点周围的图元名!

[复制链接]
发表于 2023-3-14 11:41:44 | 显示全部楼层 |阅读模式
10明经币
本帖最后由 cchessbd 于 2023-3-14 12:13 编辑




如上图的cad文件中,怎么获取点我已经弄明白了,但是还有2个问题对我有所困惑。
1、求一段代码,获取某点(K26-K27多段线起点)周围的"K26“文字图元名。只获取最近的一个。
2、求一段代码,获取某点(红色块心)周围的"CQZK*"文字图元名。只获取最近的一个。

当然,如果您能提供2段代码更好。提供任意一段都算解决问题。其他的我来学习,、、
我想再弄成一个通用的函数,就是可以获取某点周围的文字,块,线之类,当然,这是以后的问题了。

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

最佳答案

查看完整内容

获取某点(红色块心)周围的"CQZK*"最近文字
发表于 2023-3-14 11:41:45 | 显示全部楼层
获取某点(红色块心)周围的"CQZK*"最近文字




本帖子中包含更多资源

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

x
回复

使用道具 举报

 楼主| 发表于 2023-3-14 13:26:28 | 显示全部楼层
ssyfeng 发表于 2023-3-14 13:14
获取某点(红色块心)周围的"CQZK*"最近文字

试了下,对块可以用。谢谢您!再等1-2天看有没有更方便的。如果没有其他答案的话,您就是最佳。
回复

使用道具 举报

 楼主| 发表于 2023-3-14 13:38:33 | 显示全部楼层
ssyfeng 发表于 2023-3-14 11:41
获取某点(红色块心)周围的"CQZK*"最近文字

稍微改了下,都可正常获取对象。
剩下的我自己来研究了。
回复

使用道具 举报

 楼主| 发表于 2023-3-15 07:39:28 | 显示全部楼层
ssyfeng 发表于 2023-3-14 11:41
获取某点(红色块心)周围的"CQZK*"最近文字

您好,经过多次试用,一些情况会得不到我想要的结果。
我思考了下,估计是要以文字几何中心坐标才能得到正确结果?
可否再改进一下您的代码呢?
回复

使用道具 举报

发表于 2023-3-15 16:08:26 | 显示全部楼层
你可以把文字包围盒函数换成图元的包围盒函数
回复

使用道具 举报

 楼主| 发表于 2023-3-15 16:20:23 | 显示全部楼层
本帖最后由 cchessbd 于 2023-3-15 16:21 编辑
ssyfeng 发表于 2023-3-15 16:08
你可以把文字包围盒函数换成图元的包围盒函数

我拜读您的代码,现在是取得文字的中心点作为计算吗?
您这个代码在孔文字比较稀疏时候没有问题。但是对密布的没办法。

但是我估计要选文字的4个角点来计算比较科学。因为文字可左可又,一般是到圆心或块心有一个最近的角点。
取这个最近的点作为文字与块心圆心的距离。来做比较。

我还想在您的代码基础上加一个半径范围限制,比方说200圆范围以内。这样最多也就几十个点,计算步骤就没有这么多。

但是我现在还是读得不太懂。因为代码比较长。

回复

使用道具 举报

 楼主| 发表于 2023-3-15 16:25:46 | 显示全部楼层
本帖最后由 cchessbd 于 2023-3-15 16:27 编辑

我在论坛找了一段获取文字中心点的代码。但是还没搞明白怎么获取4个角点。
这个可读性强一点。您看能否帮忙修改一下。得到文字的四个角点。

(vl-load-com)

(defun MIDPOINT (PT1 PT2)
(mapcar '(lambda (X Y) (* 0.5 (+ X Y))) PT1 PT2 )
)

(defun AX:GETBOUNDINGBOX (ENT / LL UR)
(vla-getboundingbox (vlax-ename->vla-object ENT) 'LL 'UR)
(MIDPOINT (vlax-safearray->list LL) (vlax-safearray->list UR))
)

(defun c:TT1 ( / CENTPT N)
(SETQ OBJ (ENTSEL "\nSelect Text : "))
(SETQ ENT (ENTGET (CAR OBJ)))
(setq CENTPT (AX:GETBOUNDINGBOX (cdr (ASSOC -1 ENT))))
(command "_.DIST" centpt)
(princ)
)
回复

使用道具 举报

发表于 2023-3-15 16:35:16 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2023-3-15 17:07:16 | 显示全部楼层
我明白了,这里已经得到了2个角点了。等我再想法改一下
(vlax-safearray->list LL) (vlax-safearray->list UR)
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-16 10:37 , Processed in 0.189473 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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