明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 11850|回复: 25

横断面数据提取

    [复制链接]
发表于 2011-9-17 20:47:21 | 显示全部楼层 |阅读模式

  1. ;;;本程序命令为hdmout,仅针对图纸比例为1:1的情况而言,若比例不是1:1,请自行调整图纸比例
  2. ;;;本程序需选择断面桩号、坐标系基准中心、选择基准中心处的断面高程数据
  3. ;;;本程序所获得的数据为追加形式,一次采取一条断面,可以累加
  4. (defun c:hdmout (/ s filename e n fn jd pt pts number str_1)
  5.   (vl-load-com)
  6.   (setq str_1 (cdr (assoc 1(entget (car (entsel "请选择一个断面桩号:"))))))
  7.   (setq point_1 (getpoint "\n 请选择坐标系基准中心位置"))
  8.   (setq px_1 (car point_1)
  9.       py_1 (cadr point_1))
  10.   (setq e55 (cdr (assoc 1 (entget (car (entsel "\n 请选取该断面的中心高程数据:"))))))
  11.   (setq bb (vl-string->list e55))
  12.   (setq cc (vl-remove-if '(lambda (x) (> x 57)) bb))
  13.   (setq de (vl-remove-if '(lambda (x) (< x 43)) cc))
  14.   (setq height_1 (atof (vl-list->string de)))
  15.   (if (setq s (ssget ":S" '((0 . "*POLYLINE")))) ;_点选带过滤形式
  16.     (progn
  17.       (setq e (ssname s 0)
  18.             number (fix (vlax-curve-getendparam e))
  19.             n (+ 1 number)
  20.       )
  21.       (if (not (setq filename
  22.                       (getfiled "选择文件存储目录" "d:/断面线数据.txt" "txt" 33)
  23.                )
  24.           )
  25.         (setq filename "c:\\断面线数据.txt")
  26.       )
  27.       (setq fn (open filename "a")
  28.             jd n
  29.       )
  30.       (WRITE-LINE str_1 fn)
  31.       (setvar "dimdec" 3)
  32.       (repeat n
  33.         (setq pt (vlax-curve-getpointatparam e (setq jd (1- jd))))
  34.         (if (null pts)
  35.           (setq pts (list pt))
  36.           (if (not (equal pt (car pts) 1e-3))
  37.             (setq pts (cons pt pts))
  38.           )
  39.         )
  40.       )
  41.       (setq n 1)
  42.       (mapcar '(lambda (x)
  43.                  (write-line
  44.                    (strcat (itoa n)
  45.                            ","
  46.                             (rtos (- (car x) px_1))
  47.                            ","
  48.                            (rtos (+ height_1 (- (cadr x) py_1))) ;_与前面的 dimzin 配合采用用户 UNITS 精度设置
  49.                    )
  50.                    fn
  51.                  )
  52.                  (setq n (1+  n))
  53.                )
  54.               pts
  55.       )
  56.       (close fn)
  57.     )
  58.   )
  59.   (princ"\n")
  60. )


 楼主| 发表于 2011-9-19 09:09:22 | 显示全部楼层
谢谢楼上
各位如有什么好建议,请说明一下,以便改正。
回复 支持 0 反对 1

使用道具 举报

发表于 2020-11-1 20:58:38 | 显示全部楼层
断面一般都是左负右正,如果能完善批量选择横断图再根据中线里程来提取高程点数据就完美了
发表于 2017-8-24 23:21:46 | 显示全部楼层
断面一般都是左负右正,如果能完善批量选择横断图再根据中线里程来提取高程点数据就完美了
发表于 2011-9-17 21:28:55 | 显示全部楼层
无详细帮助,不会用,大哥来个帮助或者动画
发表于 2011-9-17 23:25:18 | 显示全部楼层
先收藏了。。。
发表于 2011-9-18 12:59:04 | 显示全部楼层
本帖最后由 yshf 于 2011-9-18 13:00 编辑

不能处理首尾相接的多条直线、多段线或直线与多段线的组合,由于跟绘图时的先后顺序有关,提取的断面数据中,有的断面是自左向右,有的断面自右向左,不尽统一。
发表于 2011-9-19 20:38:31 | 显示全部楼层
建议如下:
1.断面线应该输出的是图上自左到右的顺序,意即左正右负,符合一般的习惯
2.能加个选项就好了,选择保存为 1纬地格式2CASS格式3自定义格式(就是楼主程序自带的格式)
还是支持楼主的源码!
发表于 2011-9-20 01:14:51 | 显示全部楼层
不知道怎么用
发表于 2012-1-11 21:29:00 | 显示全部楼层
楼主,高程点是 类型的,CASS中的高程点不能用,显示数据类型错误
发表于 2012-2-6 05:22:03 | 显示全部楼层
有些复杂了,感觉
发表于 2012-5-1 19:59:25 | 显示全部楼层
yfanzi 发表于 2011-9-19 20:38
建议如下:
1.断面线应该输出的是图上自左到右的顺序,意即左正右负,符合一般的习惯
2.能加个选项就好了 ...

“意即左正右负”

大家是习惯左正右负 ,还是左负?
我习惯左负
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-22 20:07 , Processed in 0.180668 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表