;;;;;;; ;;;;;;;;画锚网喷巷道碹岔施工大样图的命令“xcdy”
;此命令需要输入相关数据来自动画出巷道的断面图 ;加载下面的程序,在命令行中键入”xcdy”并回车, ;通过人机交互的形式输入有关参数,可自动完成巷道断面的绘画。 ;一切数据均为按1:100设置 ;大部分代码已经通过,还有一部分代码需要添加,调用反函数的语句还是
不可以!!! ;2006-03-30
;(defun acos(/ X) ;(setq ACOS (- (/ pi 2.0)(atan (/ X (sqrt (- 1.0 (expt X 2))))))) ;) ;这样可以吗?
;;;****************主函数开始 (defun c:TS ( / a b α i θ β εb11 b12 b21 b22 b31 b32) (setq jbg (getpoint "\n请输入道岔的基本轨起点:")) (setq x0 (nth 0 jbg)) ;把道岔基本轨起点的坐标设置为初
始坐标 (setq y0 (nth 1 jbg)) (setq B1 (getreal "\n请输入主巷道开碹岔前巷道宽度B1(mm):")) (setq B2 (getreal "\n请输入主巷道开碹岔后巷道宽度B2(mm):")) (setq B3 (getreal "\n请输入支巷道宽度B3(mm):")) (setq b11 (getreal "\n请输入主巷道开碹岔前内侧宽度b1(mm):")) (setq b21 (getreal "\n请输入主巷道开碹岔后内侧宽度b2(mm):")) (setq b31 (getreal "\n请输入支巷道开碹岔后内侧宽度b3(mm):")) (setq γ (getangle "\n请输入支巷相对主巷道转角γ(°):")) (setq R (getreal "\n请输入碹岔转弯半径R(mm):")) (princ "\n现以我矿常用的DK615-4-12道岔的参数未基础做碹岔......")
;以下是在调试程序过程中简化输入给各变量赋的固定值 ;(setq B1 40) ;(setq B2 40) ;(setq B3 24) ;(setq b1 15) ;(setq b2 15) ;(setq b3 12) ;(setq γ (/ pi 2)) ;(setq R 90) ;以下为确定道岔参数和计算部分的代码 (setq a 35) (setq b 33.4) (setq α (/ (* 14.25 pi) 180)) (setq i 0.3) ;这里只是把i的值定为0.3,没有达到真正的自动选择,需
要在程序里加一个比较 (setq b12 (- B1 b11)) ;定义了柱墩外侧巷道宽度 (setq b22 (- B2 b21)) (setq b32 (- B3 b31)) (setq J (- (+ a (* b (cos α)))(* R (sin α)))) (setq H (+ (* R (cos α)) (* b (sin α)))) (setq θ (/ (* 49.5 pi) 180)) ;直接赋值可以,调用函数就不可以了,原始语句(setq θ (acos (/ (- H
(+ 5 b1)) (+ R b3)))) ;就是上面这行,赋给具体的数值可以 ,一调用acos函数就出错???他
的格式应该是(acos numer)吧? (setq P (+ J (* (- (+ R b31) B3) (sin θ)))) (setq NM (* B3 (sin θ))) (setq TN (+ (+ 5 B2) (* B3 (cos θ)))) (setq TM (sqrt (+ (expt NM 2) (expt TN 2)))) (setq L2 (+ P NM)) (setq L0 (/ (- TN B1) i)) (setq L3 (- P L0)) (setq β (- (/ (* α 180) pi) (/ (* γ 180) pi))) (setq ε (+ 90 (/ (- (/ (* γ 180) pi) (/ (* α 180) pi)) 2)))
;以下为确定碹岔各拐点X轴坐标的代码 (setq x1 (+ x0 50)) (setq x2 (- x0 L3)) (setq x3 (- x0 P)) (setq x4 (- (- x0 J) (* (- R b31) (sin γ)))) (setq x5 (- x0 L2)) (setq x6 (- x0 (+ L2 5))) (setq x7 (- (- x0 J) (* (- (+ R B3) b31) (sin γ)))) (setq x8 (- x0 J)) (setq x9 (- x0 a)) (setq x10 (- x0 (+ a (* b (cos α))))) (setq x11 (- x0 (+ L2 50))) (setq x12 (- (- x0 J) (* R (sin γ)))) (setq x13 (- x0 (+ L2 5)))
;以下为确定碹岔各拐点Y轴坐标的代码 (setq y1 (+ y0 b11)) (setq y2 (- y0 b12)) (setq y3 (+ y0 (- TN (- B1 b11)))) (setq y4 (+ y0 (- H (* (- R b3) (cos γ))))) ;(setq y5 ()) ;暂时没有定义 13号点不好定 (setq y6 (+ y0 (- H (* (+ R (- B3 b3)) (cos γ))))) (setq y7 (+ y0 (+ b11 5))) (setq y8 (+ y0 H)) (setq y9 (+ y0 (- H (* R (cos γ))))) (setq y10 (+ y0 (* b (sin α)))) (setq y11 (+ y0 (+ b11 5))) (setq y12 (- (+ y0 b11) (+ B1 5)))
;以下为确定碹岔各拐点坐标的列表代码 (setq o (list x8 y8)) ;坐标无问题 (setq o1 (list x9 y0)) ;坐标无问题 (setq o2 (list x10 y10)) ;坐标无问题 (setq po1 (list x1 y1)) ;坐标无问题 (setq po2 (list x2 y1)) ;坐标无问题 (setq po3 (list x3 y3)) ;坐标无问题 (setq po4 (list x4 y4)) ;坐标无问题 (setq po5 (list x1 y2)) ;坐标无问题 (setq po6 (list x0 y2)) ;坐标无问题 (setq po7 (list x2 y2)) ;坐标无问题 (setq po8 (list x3 y2)) ;坐标无问题 (setq po9 (list x5 y2)) ;坐标无问题 (setq po10 (list x5 y7)) ;坐标无问题 (setq po11 (list x5 y1)) (setq po12 (list x7 y6)) (setq po14 (list x12 y9)) ;坐标无问题 (setq po15 (list x11 y2)) (setq po16 (list x11 y1)) (setq po17 (list x13 y1)) (setq Cent1 (list x1 y0)) ;坐标无问题 (setq Cent2 (list x11 y0)) (setq po18 (list x1 y11)) (setq po19 (list x11 y11)) (setq po20 (list x1 y12)) (setq po21 (list x11 y12))
;画线的命令 (command "pline" o1 "w" 0 0 o2 "a" "r" R "a" β po14 "" "line"
Cent1 Cent2 "" ) (command "mline" "j" "b" "s" 1 po5 po15 "" "mline" "j" "t" "s"
1 po1 po2 po3 po4 "" "mline" "j" "t" "s" 1 po16 po17 "") (command "line" po8 po3 po9 po11 po10 "" ) (command "line" o po10 "" ) (command "line" o po12 "" ) (command "line" po2 po7 "" ) (command "line" o o2 "" ) (command "line" po18 "@0,-10" "@-5,0" Cent1 "");画断面线 (command "line" po20 "@0,10" "@5,0" Cent1 "");画断面线 (command "line" po19 "@0,-10" "@-5,0" Cent2 "");画断面线 (command "line" po21 "@0,10" "@5,0" Cent2 "");画断面线 ;(princ "\n如果画的图不正确请关闭“对象捕捉”后在试!!") )
请指点迷津!!!! |