注:
本程序,
缓和曲线段拟合长度为
0.4m
,
如需更改拟合长度,
将程序的第
8
行
(repeat(FIX(/Ls0.4))
及
9
行
(setql(+l(/Ls(FIX(/Ls0.4))))
中的
0.4
修改即可。
☆
;;
多义线摹拟缓和曲线。
;;
输入起止直线、半径、缓和曲线长或设计车速。
;;
命令:
HH
(defuncom_p()
(setql0)
(command"ucs""o"(list(-0x1)00))
(command"pline"(list000)"w""0"""
(repeat(FIX(/Ls0.4))
(setql(+l(/Ls(FIX(/Ls0.4))))
x(+(-l(/(*lllll)40CC))(/(*lllllllll)3456CCCC))
y(*id__(+(-(/(*lll)6C)(/(*lllllll)336CCC))(/(*lllllllllll)42240CCCCC)))
);setq
(command(listxy0))
);repaet
);command
(setqpt5(trans(listxy0)10))
);com_p
(defunll_v()
(setqV(getreal"\nGiveVelocity:")
Ls1(*V0.85)
Ls2(/(*0.0357VVV)R)
Ls(maxLs1Ls2(/R9))
Ls(*(fix(/Ls10))10.0)
);setq
(if(>LsR)(setqLsR))
(ll_d)
);ll_v
(defunll_d()
(setqos(getvar"osmode"))
(setvar"osmode"0)
(setqC(*LsR)
q(-(+(-(/Ls2)(/(*LsLsLs)240RR))(/(*LsLsLsLsLs)34560RRRR))(/(*LsLsLsLsLsLsLs)8386560RR
RRRR))
pt1(cdr(assoc10(entget(carp1))))