求一段代码,获取某点周围的图元名!
本帖最后由 cchessbd 于 2023-3-14 12:13 编辑如上图的cad文件中,怎么获取点我已经弄明白了,但是还有2个问题对我有所困惑。
1、求一段代码,获取某点(K26-K27多段线起点)周围的"K26“文字图元名。只获取最近的一个。
2、求一段代码,获取某点(红色块心)周围的"CQZK*"文字图元名。只获取最近的一个。
当然,如果您能提供2段代码更好。提供任意一段都算解决问题。其他的我来学习,、、
我想再弄成一个通用的函数,就是可以获取某点周围的文字,块,线之类,当然,这是以后的问题了。
获取某点(红色块心)周围的"CQZK*"最近文字
ssyfeng 发表于 2023-3-14 13:14
获取某点(红色块心)周围的"CQZK*"最近文字
试了下,对块可以用。谢谢您!再等1-2天看有没有更方便的。如果没有其他答案的话,您就是最佳。 ssyfeng 发表于 2023-3-14 11:41
获取某点(红色块心)周围的"CQZK*"最近文字
稍微改了下,都可正常获取对象。
剩下的我自己来研究了。 ssyfeng 发表于 2023-3-14 11:41
获取某点(红色块心)周围的"CQZK*"最近文字
您好,经过多次试用,一些情况会得不到我想要的结果。
我思考了下,估计是要以文字几何中心坐标才能得到正确结果?
可否再改进一下您的代码呢? 你可以把文字包围盒函数换成图元的包围盒函数 本帖最后由 cchessbd 于 2023-3-15 16:21 编辑
ssyfeng 发表于 2023-3-15 16:08
你可以把文字包围盒函数换成图元的包围盒函数
我拜读您的代码,现在是取得文字的中心点作为计算吗?
您这个代码在孔文字比较稀疏时候没有问题。但是对密布的没办法。
但是我估计要选文字的4个角点来计算比较科学。因为文字可左可又,一般是到圆心或块心有一个最近的角点。
取这个最近的点作为文字与块心圆心的距离。来做比较。
我还想在您的代码基础上加一个半径范围限制,比方说200圆范围以内。这样最多也就几十个点,计算步骤就没有这么多。
但是我现在还是读得不太懂。因为代码比较长。
本帖最后由 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)
)
http://bbs.mjtd.com/thread-183274-1-1.html 我明白了,这里已经得到了2个角点了。等我再想法改一下
(vlax-safearray->list LL) (vlax-safearray->list UR)
页:
[1]
2