从文本指向
我有一个图形,有一组点(2000+),具有正确的X,Y信息,但其中Z是0。Z高度包含在点附近的文本中。任何人都可以共享一个lisp例程,该例程将文本信息作为Z值附加到点,或将文本转换为具有适当Z值的点。
点位于ROAD\u PT和SITE\u PT层上。
文字信息位于ROAD\u ELEV和SITE\u ELEV图层上。
谢谢 你有绘画的例子吗? 干得好
如果你有原始的数据文本文件,它会更容易。
我看到一些观点没有文字-然后呢? 问题是没有文本文件。
没有文本的点有一个参考号,就像其他点一样-为了清晰起见,我刚刚关闭了图层。 这将有助于了解文本是否有与点相同的理由,即底部中心?
同样有用的是一个有20个左右点的绘图片段,这样任何能够编写Lisp的人都可以进行一些实验。 正如所暗示的,这里困难的部分是识别(通过编程角度)哪个文本项与哪个点对应。
在SelectionSet过程中,项目是随机收集的,因此大多数情况下不会为点分配正确的Z值。
另一种选择是在每个点周围创建一个交叉窗口的选择集,但这显然仍然不是100%准确,因为可能会遗漏一些文本项。
另一个需要考虑的选项是按任意坐标(例如x)对点和文本的两个选择集进行排序,如果文本基点接近该点,则两个选择集的顺序将正确。
试一试:
(defun c:ptZ (/ spc ss Objlst)
(vl-load-com)
(setq spc (vla-get-ModelSpace
(vla-get-ActiveDocument
(vlax-get-acad-object))))
(if (setq ss (ssget "_X" '((0 . "TEXT") (8 . "ROAD_ELEV,SITE_ELEV"))))
(progn
(setq Objlst (mapcar 'cadr (ssnamex ss)))
(mapcar
(function
(lambda (x)
(vla-addPoint spc
(vlax-3D-point x))))
(mapcar
(function
(lambda (x y)
(list (car x) (cadr x) (distof y))))
(mapcar
(function
(lambda (x)
(cdr (assoc 10 (entget x))))) Objlst)
(mapcar
(function
(lambda (x)
(cdr (assoc 1 (entget x))))) Objlst)))
(mapcar 'entdel Objlst))
(princ "\n<!> No Text Found <!>"))
(princ))
{ModelSpace} 下面是随机选择点的dwg
积分。图纸 我看到文本插入点大多位于与该点的某个偏移处,但存在变化,并且文本的大小似乎会改变偏移。相当棘手。我有一个lisp,它在点的(x,y)处放置一个新点,z值从文本中提取,但手动一次一个点,但现在,人们似乎希望能在短时间内完成。
给你李:眨眼:
页:
[1]
2