从dtext到z位置
问候语,我正在为我的期末项目设计一条道路,我刚刚收到一张高度图。问题是,高度是dtext的,我需要用文本中写的高度创建点。我会手动添加它们,但有大约30000条文本,所以这不是一个现实的选择。
所以我的问题是;有没有办法在dtexts的原点自动创建点,其中点的z值来自文本内容,x和y值来自文本的几何体?
一些额外信息:
-文本的起源在x和y方向上相距5个单位。
-我正在使用AutoCAD 2008。
谢谢。 快速的答案是肯定的,这可以使用Lisp来完成。
缓慢的回答是,你必须引起能写这个Lisp程序的人的注意——可能会在论坛的那个部分发布一个帖子 Eldon是对的,至少我认为他是对的,你可能需要一个lisp来完成这件事-所以我把你的线程移到了论坛的lisp部分,希望你能在这里得到更快的帮助 谢谢你的回复。
如果有那么多工作我会使用我创建的宏,我不想让别人经历那么多麻烦。我花了三个小时来制作宏,每个文本需要2秒,但我只能让它运行一整晚,我只是希望有一些我不知道的秘密命令/功能来加快速度,以防将来我不得不再次这样做。
PS,如果有人想做,我不会反对 一个问题是,LISP应该不会太难,文本项是否只包含z值而不包含其他文本?还有,我们是只说数字文本,还是也说多行文字?
此外,我可以创建一个LISP,用户可以在其中手动选择文本(使用选择集)或者,如果所有高度都在同一层上,或者它们是图形中唯一的文本(或DTEXT),那么我可以设置LISP自动为您进行选择为了实现这一点,文本需要一些“定义”因素,因此可以创建一个过滤器列表i、 e.在自己的图层上,或唯一的DTEXT,或有自己的颜色等。 此外,您希望这些“点”位于哪一层我假设它们只是标准ACAD点。
如果我是正确的,你想用文本的基点来表示x,y,用文本的内容来表示z?
谢谢
李 回答您的问题:
[列表]
[*]是,文本仅包含高度值,例如:“129.30”
[*]它们都是dtext,没有MTEXT。
[*]文件仅包含文本,并且它们都是相同的层/颜色。图层为“49”,颜色为“12”,这是redish颜色。
[/列表]
[列表]
[*]点可以在任何层上,如果需要,我会移动它们。
[*]它们只是常规AutoCAD点。
[*]“要将文本的基点用于x、y,将文本的内容用于z?”
[/列表]
谢谢你的帮助 好的,试试这个:
(defun c:zht (/ varlist oldvars ss eLst bPt zVal nbPt ptLst)
(vl-load-com)
(setq varlist (list "CMDECHO" "OSMODE")
oldvars (mapcar 'getvar varlist))
(mapcar 'setvar varlist (list 0 0))
(if (setq ss (ssget "X" '((0 . "TEXT")(8 . "49")(62 . "12"))))
(progn
(setq eLst (vl-remove-if 'listp
(mapcar 'cadr (ssnamex ss))))
(foreach e eLst
(setq bPt (cdr (assoc 10 (entget e)))
zVal (atof (cdr (assoc 1 (entget e))))
nbPt (subst zVal (last bPt) bPt)
ptLst (cons nbPt ptLst)))
(foreach pt ptLst
(command "_point" pt)))
(princ "\n<!> No Text Found <!>"))
(mapcar 'setvar varlist oldvars)
(princ))
甜心,很有魅力
以下是我在谷歌上搜索的一些程序中加载的点:
非常感谢!! 没问题,VeryName,很高兴它对你有用
如果你还有任何问题,请告诉我
页:
[1]
2