54525596 发表于 2013-4-16 21:11:14

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)
)
这是我自己学着弄的一个,输出的格式都是纵向的如上图一样。应该这样

cgwang1023 发表于 2013-11-18 00:13:43

楼主,现在按照你提的要求弄出程序没有,有的话给我发一个,qq:50056697

llsheng_73 发表于 2013-11-18 22:56:18

本帖最后由 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]
查看完整版本: PLINE节点坐标()