如何将文字转化为高程点?
业主发过来的地形图 没有高程信息 标高全是文字 这些文字只有高程数值但是没有Z坐标有没有一个程序 能实现将这些文字 转化为带高程的点
这样我能将这些高程点 导入犀牛或者su中 生成面 进而建模 生成场地模型
4年前写的一个类似的,在1:2000比例尺的图上做的,可以自己改别的比例尺图中的搜索距离和定位点距离,也可以在模式2里面根据图形比例尺加一个定位点,当时够用就没加这些功能了:
模式1是在文字注记的周围搜索高程点散点(即定位点),将散点作为新高程点的定位点,将该文字注记内容作为高程值。最后删除文字注记和高程散点。
模式2是利用文字注记的位置,将文字内的文本转换为高程值,将文字注记偏左的位置(按2000比例尺的距离计算的)作为定位点,生成新的高程点。最后删除文字注记; 依然小小鸟 发表于 2024-6-7 09:09
有程序吗
我的思路,定位提取高程文字,剔除错误点再展绘高程。;创建图层
(defun LL(str)
(command "layer" "m" str "")
)
;取组码中的文字
(defun V#(n e / pt_)
(if (not (listp e)) (setq e (entget e)))
(setq pt_ (cdr (assoc n e)))
(if (and (> n 9) (< n 34) (/= pt_ nil) ) (trans pt_ 0 1) (setq pt_ pt_) )
)
;写出CAD中Text内容到记事本,序号,X,Y ,文本内容
(defun c:ctextout(); 提取文本转换高度
(setq ffn(getfiled "写出文件" "" "txt" 1))
(setq zwd1 (getpoint "\n 请选择范围左下角点"))
(setq zwd2 (getcorner zwd1 "\n请选择范围对角点"))
(setq ss1 (ssget "_W"zwd1 zwd2(list (cons 0 "TEXT"))) );text为X,y 高程点为 X,Y,Z
;(setq ss1(ssget "X" (list (cons 0 "TEXT"))))全选文本
(setq n1 (sslength ss1) n0 0 str_e2 "")
(LL "DLG_TEXT")
(setq ff (open ffn "w"))
(repeat n1
(setq e1 (ssnamess1 n0) n0 (+ 1 n0) p1 (V# 10 e1) )
(setq str_e2 (v# 1 e1))
(setq txtz (strcat(rtos n0 2 0) "," "h" ","( rtos (nth 0 p1) 2 3 )"," ( rtos (nth 1 p1) 2 3 ) "," str_e2 ))
;高程点str_e2替换为( rtos (nth 2 p1) 2 3 )
(princ txtz ff)
(princ "\n" ff)
(print n0)
) ;end repeat
(close ff)
) 飞时达土方可以,其他小插件就不清楚了 你的高程数据内还有这种奇葩的值 生成不了高程点 升不上去
lzspain 发表于 2024-6-6 09:33
飞时达土方可以,其他小插件就不清楚了
飞时达和南方cass 湘源控规都可以我就是不想再单独安装一个软件 三涂彼岸 发表于 2024-6-6 09:37
4年前写的一个类似的,在1:2000比例尺的图上做的,可以自己改别的比例尺图中的搜索距离和定位点距离,也可 ...
总图的比例一般是1比1的所以只要有1比1的就行 不需要再换算比例 容易乱 love1030312 发表于 2024-6-6 09:54
你的高程数据内还有这种奇葩的值 生成不了高程点 升不上去
所以能不能先把这些奇葩的东西 转为文字文字再转高程点
因为 业主发过来的总图 有时候 还有一些文字块 之类的 依然小小鸟 发表于 2024-6-6 11:16
所以能不能先把这些奇葩的东西 转为文字文字再转高程点
因为 业主发过来的总图 有时候 还有一些文字 ...
因为2楼发了代码了,你这应该比较简单,依据此代码修改为高程点坐标=(文字中心坐标+文字内容组成)即可。 cchessbd 发表于 2024-6-6 12:21
因为2楼发了代码了,你这应该比较简单,依据此代码修改为高程点坐标=(文字中心坐标+文字内容组成)即可。
我不会编程呢 也不会写代码有大神能帮忙吗 依然小小鸟 发表于 2024-6-6 12:33
我不会编程呢 也不会写代码有大神能帮忙吗
付钱肯定有人愿意帮你改,找楼上liuhe大神。