如何在AutoCAD中畫緩和曲線
一、在CAD中畫出切線長
二、運行程序: 在命令行中輸入hh回車
三、選擇兩條切線,然后輸入曲線半徑如:2204.5回車
四、輸入緩和曲線長,如270,繪圖完成!如圖
記事本格式內容,新建的lisp語言,在CAD中要先加載
;;多義線摹擬緩和曲線。
;;輸入起止直線、半徑、緩和曲線長或設計車速。
;;命令:HH
(defun com_p()
(setq l 0)
(command "ucs" "o" (list (- 0 x1) 0 0))
(command "pline" (list 0 0 0) "w" "0" ""
(repeat 1000
(setq l (+ l (/ Ls 1000))
x (+ (- l (/ (* l l l l l) 40 C C)) (/ (* l l l l l l l l l) 3456 C C C C))
y (* id__ (+ (- (/ (* l l l) 6 C) (/ (* l l l l l l l) 336 C C C)) (/ (* l l l l l l l l l l l) 42240 C C C C C)))
);setq
(command (list x y 0))
);repaet
);command
(setq pt5 (trans (list x y 0) 1 0))
);com_p
(defun ll_v()
(setq V (getreal "\nGive Velocity:")
Ls1 (* V 0.85)
Ls2 (/ (* 0.0357 V V V) R)
Ls (max Ls1 Ls2 (/ R 9))
Ls (* (fix (/ Ls 10)) 10.0)
);setq
(if (> Ls R) (setq Ls R))
(ll_d)
);ll_v
(defun ll_d()
(setq os (getvar "osmode"))
(setvar "osmode" 0)
(setq C (* Ls R)
q (- (+ (- (/ Ls 2) (/ (* Ls Ls Ls) 240 R R)) (/ (* Ls Ls Ls Ls Ls) 34560 R R R R)) (/ (* Ls Ls Ls Ls Ls Ls Ls) 8386560 R R R R R R))
pt1 (cdr (assoc 10 (entget (car p1))))
pt2 (cdr (assoc 11 (entget (car p1))))
pt10(polar pt1 (angle pt1 pt2) (/ (distance pt1 pt2) 2))
pt3 (cdr (assoc 10 (entget (car p2))))
pt4 (cdr (assoc 11 (entget (car p2))))
pt20(polar pt3 (angle pt3 pt4) (/ (distance pt3 pt4) 2))
p (+ (- (/ (* Ls Ls) 24 R) (/ (* Ls Ls Ls Ls) 2688 R R R)) (/ (* Ls Ls Ls Ls Ls Ls) 506880 R R R R R))
jd (inters pt1 pt2 pt3 pt4 nil)
alf1(angle pt10 jd)
alf2(angle pt20 jd)
alf (- (angle jd pt20) alf1)
);setq
(if (or (> alf pi) (and (< alf 0) (> alf (- 0 pi))))
(progn
(setq id__ -1)
(if (> alf pi) (setq alf (- (+ pi pi) alf)) (setq alf (abs alf)))
);progn
(progn
(setq id__ 1)
(if (<= alf (- 0 pi)) (setq alf (+ pi pi alf)))
);progn
);if
(setq x0 (/ (* (+ p R) (sin(/ alf 2.0))) (cos(/ alf 2.0)))
x1 (+ x0 q)
Cl (+ (* alf R) Ls)
E (- (/ (+ R p) (cos(/ alf 2))) R)
);setq
(command "ucs" "o" jd)
(command "ucs" "z" (/ (* 180 alf1) pi))
(com_p) (setq pt6 pt5)
(setq ppt1 (list x1 0 0))
(command "ucs" "")
(command "ucs" "o" jd)
(command "ucs" "z" (/ (* 180 alf2) pi))
(setq id__ (- 0 id__)) (com_p)
(setq ppt2 (list x1 0 0))
(command "ucs" "")
(if (> (abs(distance jd pt1)) (abs(distance jd pt2)))
(setq ptt1 pt1)
(setq ptt1 pt2)
);if
(setq ptt2 (polar jd alf1 (- 0 x1)))
(thh p1 ptt1 10)
(thh p1 ptt2 11)
(if (> (abs(distance jd pt3)) (abs(distance jd pt4)))
(setq ptt3 pt3)
(setq ptt3 pt4)
);if
(setq ptt4 (polar jd alf2 (- 0 x1)))
(thh p2 ptt3 10)
(thh p2 ptt4 11)
(if (= id__ 1) (command "arc" pt5 "e" pt6 "r" R) (command "arc" pt6 "e" pt5 "r" R))
(setq alfd (angf alf))
(setvar "osmode" os)
(command "cmdecho" "1")
(command "text" pause pause "" (strcat "偏 角=" alfd))
(command "cmdecho" "0")
(command "text" "" (strcat "半 徑=" (rtos R 2 2)))
(command "text" "" (strcat "切 線 長=" (rtos x1 2 2)))
(command "text" "" (strcat "曲 線 長=" (rtos Cl 2 2)))
(command "text" "" (strcat "外 距=" (rtos E 2 2)))
(command "text" "" (strcat "緩和曲線長=" (rtos Ls 2 2)))
);ll_d
(defun angf (alf)
(setq alff (angtos alf 1 4)
n 1
kk (strlen alff))
(repeat kk
(setq alfn (substr alff n 1))
(if (= alfn "d")
(setq nn n));if
(setq n (+ n 1))
);repeat
(strcat (substr alff 1 (- nn 1)) "%%" (substr alff nn))
);angf
(defun c:hh(/ p1 p2 pt1 pt2 pt3 pt4 pt5 pt6 pt10 pt20 id__ R V Ls E p3
r1 x y l x0 x1 C jd alf alf1 alf2 q p Cl Ls1 Ls2)
(command "ucs" "")
(setq p1 nil p2 nil)
(while (= p1 nil) (setq p1 (entsel "\n拾取第一條直線:")))
(redraw (car p1) 3)
(while (= p2 nil) (setq p2 (entsel "\n拾取第二條直線:")))
(redraw (car p2) 3)
(initget 1)
(setq R (getdist "\n請輸入彎道半徑 R: "))
(initget 1 "Ls V")
(setq p3 (getdist "\n輸入緩和曲線長度(Ls)或[設計速度(V)]: "))
(if (= p3 "V") (ll_v) (progn (setq ls p3) (ll_d)))
(princ)
);eline
(defun thh(len pt h)
(setq en_data (entget (car len))
old_data (assoc h en_data)
new_data (cons h pt)
en (subst new_data old_data en_data));setq
(entmod en)
);thh
公路設計中的緩和曲線在CAD中繪制時一直是個難題。
本人有一種簡單的辦法可以做到。望頂。
輸入導線:pline命令繪制1、2、3各點,其對應坐標如下
x1=213.7748 y1=92.1117
x2=313.7748 y2=92.1117
x3=399.6787 y3=143.3026
繪制通過ZH、HZ、QZ、HY和YH各點的與路線導線相切的含緩和曲線的平曲線。
通過計算,五個點的直角坐標為:
ZH:X=232.9548 Y=92.1117
HY:X=285.3608 Y=94.4667
QZ:X=311.8101 Y=99.2371
YH:X=336.9780 Y=108.6801
HZ:X=383.6319 Y=133.7401
使用真樣條曲線命令繪制含緩和曲線的平曲線的基本操作步驟如下:
Command: Spline(啟動真樣條曲線命令)
object/<Enter first point>:232.9548,92.1117(通過ZH)
Enter point :285.3608,94.4667
Close/Fit Tolerance/<Enter point>:311.8101,99.2371<通過QZ>
Close/Fit Tolerance/<Enter point>:336.9708,108.6801<通過YH>
Close/Fit Tolerance/<Enter point>:383.6319,133.7401<通過HZ>
Close/Fit Tolerance/<Enter point>:<加如回車>(選擇輸入切點的模式)
Enter star tangent:232.9548,92.1117 (輸入起點切點)
Enter star tangent:383.6319,133.7401 (輸入終點的切點)
---------------------------------------
以上是如何繪制緩和曲線的辦法了,