欢迎来到 - http://www.gczl8.com !

您当前所在位置: 工程资料吧建筑课堂工程资料工程测量曲线线元绘制(LISP)函数 -- 正文

曲线线元绘制(LISP)函数

[05-05 17:11:48]   来源:http://www.gczl8.com  工程测量   阅读:9839

概要:圆曲线的半径。 ;(6) 当线元为非完整缓和曲线时,起点与直线相接时,曲率半径等于设计规定的;值;与圆曲线相接时,曲率半径等于圆曲线的半径。止点与直线相接时,曲率半径等;于设计规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径。;二、功能;在Auto CAD中按1:1000比例绘制曲线线元(直线、圆曲线、完整缓和曲线、非完整型缓和曲线)。;三、源程序;== test ;测试函数(defun c:test() (setq xyys (list (list 500.000 19942.837 28343.561 2.186466069 269.256 1E45 1E45 0) (list 769.256 19787.340 28563.378 2.186466069 37.492 1E45 221.75 -1) (list 806.748 19766.566 28594.574 2.101929446 112.779 221.75 221.75 -1) (list 919.527 19736.

曲线线元绘制(LISP)函数,http://www.gczl8.com
曲线线元绘制(LISP)函数 ;一、约定
       ; (1) 以道路中线的前进方向(即里程增大的方向)区分左右;当线元往左偏时,
;线元偏向标志=-1;当线元往右偏时,线元偏向标志=1;当线元为直线时,线元偏向标志=0。
        ;(2) 当所求点位于中线时,边距=0;当位于中线左铡时,边距取负值;当位于中线中线右
;侧时,边距取正值。
       ; (3) 当线元为直线时,其起点、止点的曲率半径为无穷大,以10的45次代替。
        ;(4) 当线元为圆曲线时,无论其起点、止点与什么线元相接,其曲率半径均等于圆
;弧的半径。
         ;(5) 当线元为完整缓和曲线时,起点与直线相接时,曲率半径为无穷大,以10的45
;次代替;与圆曲线相接时,曲率半径等于圆曲线的半径。止点与直线相接时,曲率半
;径为无穷大,以10的45次代替;与圆曲线相接时,曲率半径等于圆曲线的半径。
         ;(6) 当线元为非完整缓和曲线时,起点与直线相接时,曲率半径等于设计规定的
;值;与圆曲线相接时,曲率半径等于圆曲线的半径。止点与直线相接时,曲率半径等
;于设计规定的值;与圆曲线相接时,曲率半径等于圆曲线的半径。
;二、功能
;在Auto CAD中按1:1000比例绘制曲线线元(直线、圆曲线、完整缓和曲线、非完整型缓和曲线)。
;三、源程序
;==================  test  ========================================================
;测试函数
(defun c:test()
  (setq xyys (list
        (list 500.000 19942.837 28343.561 2.186466069 269.256 1E45   1E45     0)
               (list 769.256 19787.340 28563.378 2.186466069  37.492 1E45   221.75   -1)
        (list 806.748 19766.566 28594.574 2.101929446 112.779 221.75 221.75   -1)
        (list 919.527 19736.072 28701.893 1.593343217  80.285 221.75 9579.228 -1)
        (list 999.812 19744.038 28781.659 1.408141337 100.000 1E45   1E45      0)
      )
 n    (length xyys)  i 0
  )
  (repeat n
     (hqxxy (nth i xyys))
     (setq i (1+ i))
  )
)
;================   hqxxy ========================================================
;给制曲线线元函数
;入口参数线元要素xyb为:
;xyb=(线元起点里程  线元起点X坐标  线元起点Y坐标  线元起点切线方位角(以弧度为单位)
; 线元长度    线元起点曲率半径  线元止点曲率半径   线元偏向标志)
(defun hqxxy(xyb / s0 x0 y0 f0 ls r0 rn q pt0  ptn sn xyn x1 x2 y1 y2 mj ptt pp s i n)
  (setq cm (getvar "cmdecho") os (getvar "osmode"))
  (setvar "cmdecho" 0)(setvar "osmode" 0)
  (setq s0 (nth 0 xyb)  x0 (nth 1 xyb)  y0 (nth 2 xyb)  f0 (nth 3 xyb)
 ls (nth 4 xyb)  r0 (nth 5 xyb)  rn (nth 6 xyb)  q  (nth 7 xyb)
 pt0 (list y0 x0)
 sn (+ s0 ls)
 xyn (qxzs xyb (list sn 0))
 ptn (list (cadr xyn) (car xyn))
 x1 x0  y1 y0
 x2  (car xyn) y2 (cadr xyn)

  )
  (if (< x2 x1) (setq x1 x2 x2 x0))
  (if (< y2 y1) (setq y1 y2 y2 y0))
  (command "undo" "be")
  (command "zoom" "w" (list (- y1 200) (- x1 200) 0) (list (+ y2 200) (+ x2 200) 0))
  (cond ((and (= r0 rn) (= r0 1e45)) (command "line" pt0 ptn ""))
 ((and (= r0 rn) (< r0 1e45))
     (setq ptt (polar pt0 (+ f0 (* q 0.5 pi)) r0)
    mj  (sjxmj pt0 ptn ptt)
     )
     (if (and (> q 0) (< mj 0)) (setq pp pt0 pt0 ptn ptn pp))
     (if (and (< q 0) (< mj 0)) (setq pp pt0 pt0 ptn ptn pp))
     (command "_arc"  pt0 "e" ptn  "r" r0)
 )
 (t  (command "pline")
     (setq n  (+ 2 (fix (/ ls 0.5))) i 0)
            (repeat n
               (setq s (+ s0 (* i 0.5)))
               (if (> s sn) (setq s sn))
               (setq xyn (qxzs xyb (list s 0)))
               (command (list (cadr xyn) (car xyn)))

[1] [2]  下一页


标签:工程测量工程测量规范大全,工程测量技术工程资料 - 工程测量

《曲线线元绘制(LISP)函数》相关文章