PLINE节点坐标()
PILINE线每个节点上有一个圆的块(块的插入点坐标与PLINE线每个节点的坐标一样,但块中有不同的Z坐标值)
线是从左到右画的,起点为1,从左到右。。。已1基准点,,依次算出每个节点与基准点的绝对距离,如图,1-2的距离14.24,1-3的距离28.12,。。。。。。1-5的距离54.13
我想的方法是
得到距离的方法:选择线,提取每个节点坐标,然后用坐标可以算出绝对距离,
得到块Z坐标的方法:当到2的节点时,判断块与节点坐标一样,得到块的Z坐标值,依此类推,
最后输出到文件即可。
其实就是一个横断面提取数据的问题,格式:绝对距离,绝对高程,绝对距离,绝对高程,绝对距离,绝对高程,绝对距离,绝对高程
顺便还想问个问题:就是输出文件的时候能不能已行的的格式输出。如图:
(print "横断面距离高程数据提取.2013.1")
(defun c:tq ()
(setq ff (open (getfiled "文件保存为" "c:/" "csv" 1) "a"))
(setq zh (getstring"\n请输入桩号:"))
(write-line zh ff)
(while (setq dist (getdist "\n取2点距离:"))
(print dist)
(setq gcc (getstring "输入高程:"))
(setq pdz (strcat (rtos dist) "," gcc))
(write-line pdz ff)
)
(close ff)
(princ)
)
这是我自己学着弄的一个,输出的格式都是纵向的如上图一样。应该这样
楼主,现在按照你提的要求弄出程序没有,有的话给我发一个,qq:50056697 本帖最后由 llsheng_73 于 2013-11-18 23:11 编辑
(write-line zh ff)
(while (setq dist (getdist "\n取2点距离:"))
(print dist)
(setq gcc (getstring "输入高程:"))
(setq pdz (strcat (rtos dist) "," gcc))
(write-line pdz ff)
)
改为
(write-line zh ff)
(setq pdz"")
(while (setq dist (getdist "\n取2点距离:"))
(setq gcc (atof(getreal (strca(rots dist 2 2)"输入高程:")));;;这样显示少占行也更直观一些,先取REAL再转为字串可以避免输入一些乱七八糟的东东比如字母等
(setq pdz (strcatpdz(rtos dist) "," gcc","))
)
(write-line pdz ff)
就可以把它们写成一行了,另外逗号最好改成制表符TAB
如果是根据图上的线和块来提取数据,可以把块坐标按与线起点坐标的距离来排序,自动计算距离并获取相应高程值(当某个点上得不到高程时再要求输入)
页:
[1]