明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2841|回复: 10

[源码] 绘制公路曲线(改进)

  [复制链接]
发表于 2016-5-16 07:13 | 显示全部楼层 |阅读模式
本帖最后由 ashleytgg 于 2016-5-16 07:09 编辑

;; 程序说明,参照了南方CASS绘制公路中心线的界面, 对原来绘制公路中心线进行了修改。希望对广大从事测量的朋友有所帮助,不对的地方,乐意大家提出,以方便修改
  1. (defun change_group_turning_point_original
  2.              (group_turning_point_original
  3.               Z_road_start
  4.               /
  5.               group
  6.               group_2
  7.               group_string
  8.               lst_str
  9.               lst1
  10.               lst2
  11.               string
  12.              )

  13.   ;; 把group_turning_point_original 数组转换成 自己需要的形式  
  14.   (setq  lst_str  (list "JD="   "state="   "E(Y)="    "N(X)="
  15.           "Lh1="   "R_start=" "R="       "R_end="
  16.           "Lh2="
  17.          )
  18.   )
  19.   (setq  group_string
  20.    (mapcar '(lambda (lst)
  21.         (apply 'append lst)
  22.       )
  23.      group_turning_point_original
  24.    )
  25.   )
  26.   (setq  group_2        ; (setq lst (cadr group_string))  
  27.    (mapcar '(lambda (lst / state subset)
  28.         (setq state (cadr lst))
  29.         (setq subset
  30.          (append lst lst_str)
  31.         )
  32.         (if  (not state)
  33.           (progn
  34.       (setq subset
  35.              (mapcar '(lambda  (i)
  36.             (nth i subset)
  37.           )
  38.                (list 7 0 8 1 9 2 10 3 11 4 13 5 15 6)
  39.              )
  40.       )
  41.       (setq subset
  42.              (mapcar '(lambda  (i / j lst1 lst2)
  43.             (setq j (* i 2))
  44.             (setq  lst1 (nth j subset)
  45.             lst2 (nth (+ j 1) subset)
  46.             )
  47.             (cond
  48.               ((= (type lst2) 'real)
  49.                (setq lst2 (rtos lst2))
  50.               )
  51.               ((= (type lst2) 'int)
  52.                (setq lst2 (itoa lst2))
  53.               )
  54.               (t
  55.                (setq lst2
  56.                 (vl-princ-to-string
  57.                   lst2
  58.                 )
  59.                )
  60.               )
  61.             ) ;cond 函数结束  
  62.             (list lst1 lst2)
  63.           )
  64.                (list 0 1 2 3 4 5 6)
  65.              )
  66.       )
  67.           )
  68.           (progn
  69.       (setq subset
  70.              (mapcar '(lambda  (i)
  71.             (nth i subset)
  72.           )
  73.                (list 9 0 10 1 11 2 12 3 13 7 14 4 15 5 16 6 17 8)
  74.              )
  75.       )
  76.       (setq subset
  77.              (mapcar '(lambda  (i / j lst1 lst2)
  78.             (setq j (* i 2))
  79.             (setq  lst1 (nth j subset)
  80.             lst2 (nth (+ j 1) subset)
  81.             )
  82.             (cond
  83.               ((= (type lst2) 'real)
  84.                (setq lst2 (rtos lst2))
  85.               )
  86.               ((= (type lst2) 'int)
  87.                (setq lst2 (itoa lst2))
  88.               )
  89.               (t
  90.                (setq lst2
  91.                 (vl-princ-to-string
  92.                   lst2
  93.                 )
  94.                )
  95.               )
  96.             ) ;cond 函数结束  
  97.             (list lst1 lst2)
  98.           )
  99.                (list 0 1 2 3 4 5 6 7 8)
  100.              )
  101.       )
  102.           )
  103.         )      ; (if  (not state) 函数结束  
  104.         (mapcar '(lambda (lst)
  105.              (apply 'strcat lst)
  106.            )
  107.           subset
  108.         )
  109.       )
  110.      group_string
  111.    )
  112.   )
  113.   ;; 把Z_road_start 加入数组 group_2 中的第一行 最后一个元素  
  114.   (if (not Z_road_start)
  115.     (setq Z_road_start 0)
  116.   )
  117.   (setq  string (rtos Z_road_start)
  118.   string (strcat "Z_start=" string)
  119.   )
  120.   (setq  lst1  (car group_2)
  121.   lst2  (append lst1 (list string))
  122.   group_2  (append (list lst2) (cdr group_2))
  123.   )
  124.   (mapcar
  125.     '(lambda (lst / str)    ; (setq str (car group_2))  
  126.        (setq str (vl-princ-to-string lst)
  127.        str (vl-string-left-trim "(" str)
  128.        str (vl-string-right-trim ")" str)
  129.        )
  130.      )
  131.     group_2
  132.   )
  133. )
  134. ;; (setq tgg (change_group_turning_point_original group_turning_point_original Z_road_start ) )   

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 3明经币 +4 金钱 +140 收起 理由
树櫴希德 + 2 + 100 很给力!
skg123 + 1 + 40 很给力!
USER2128 + 1 赞一个!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2016-5-16 07:43 来自手机 | 显示全部楼层
平纵横为什么不合并在一块?超高加宽支持吗?
 楼主| 发表于 2016-5-16 09:05 | 显示全部楼层
超高,加宽支持, 平纵横合在一块,我还没这个水平, 也没这个时间。
发表于 2016-5-16 12:24 | 显示全部楼层
再做个中边桩坐标计算
发表于 2016-5-16 13:19 | 显示全部楼层
这个很有用处
 楼主| 发表于 2016-5-17 08:57 | 显示全部楼层
回复 jjjyxcm ,可以做中桩坐标计算,具体见gif图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2016-5-19 15:45 | 显示全部楼层
演示一下 , 绘制包含非完整缓和曲线的交点, ,哈哈自娱自乐

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2016-5-19 21:00 | 显示全部楼层
深入学习!!!!!
 楼主| 发表于 2016-5-31 21:27 | 显示全部楼层
展示一下 利用该小程序,结合南方cass软件 绘制公路横断面   ,
       (注意: cad 必须是在安装了南方CASS软件的条件下才能运行图示所示参数)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2016-6-16 22:48 | 显示全部楼层
应楼上的提示,把输出方式再加了个表格的样式。   但在cad 中创建表格速度非常慢。我也不知道为什么,希望高手指点下。
演示参数中,创建表格 需用时3分钟,请耐心等待。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-6 04:11 , Processed in 0.436519 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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