新手 运行时 遇到问题 我自己是不行了 又来求助了
我自己翻书百度 都找不出问题所在 唉运行时如下:
命令: sqx
拾取第一条直线:
拾取第二条直线:
输入竖曲线半径R:400
; 错误: 参数类型错误: fixnump: 1590.0
代码如下:
(defun c:sqx ()
(setq en1 (entsel "\n拾取第一条直线:"))
(setq en1_date (entget (car en1)))
(setq pts1 (assoc 10 en1_date))
(setq pt1 (cdr pts1))
(setq x1 (car pt1))
(setq y1 (cadr pt1))
(setq pte1 (assoc 11 en1_date))
(setq pt2 (cdr pte1))
(setq x2 (car pt2))
(setq y2 (cadr pt2))
(setq i1 (/ (- y2 y1) (- x2 x1)))
;;;;;;;;;;;;;;;;;;;
(setq en2 (entsel "\n拾取第二条直线:"))
(setq en2_date (entget (car en2)))
(setq pts2 (assoc 10 en2_date))
(setq pt3 (cdr pts2))
(setq x3 (car pt3))
(setq y3 (cadr pt3))
(setq pte2 (assoc 11 en2_date))
(setq pt4 (cdr pte2))
(setq x4 (car pt4))
(setq y4 (cadr pt4))
(setq i2 (/ (- y4 y3) (- x4 x3)))
;;;;;;;;;;;;;;;;;;;
(setq jdx (cond ((= x1 x2) x1)
((= x1 x3) x1)
((= x1 x4) x1)
((= x2 x3) x2)
((= x2 x4) x2)
((= x3 x4) x3)
(T (x4))
)
)
(setq jdy (cond ((= x1 jdx) y1)
((= x2 jdx) y2)
((= x3 jdx) y3)
(T (y4))
)
)
;;;;;;;;;;;;;;;;;;;
(setq R (getdist "\n输入竖曲线半径R:"))
(setq w (abs (- i2 i1)))
(setq L (* R w))
(setq TT (/ L 2))
(setq E (/ (* TT TT) (* 2 R)))
;;;;;;;;;;;;;;;;;;;
(setq qdx (- jdx TT))
(setq qdy (- jdy (* TT i1)))
(setq zdx (+ jdx TT))
(setq zdy (+ jdy (* TT i2)))
(setq m (rem (* 2 TT) 0.2))
(setq n (/ (- zdx m qdx) 0.2))
(setq p0 (list qdx qdy))
(repeat n
(setq dx (+ qdx (* 0.2 n)))
(setq
dy (- (+ qdy (* (* 0.2 n) i1)) (/ (expt (* 0.2 n) 2) (* 2 R)))
)
(setq p1 (list dx dy))
(command "line" p0 p1 "")
(setq p0 p1)
)
(command "")
(setq p2x (- zdx m))
(setq p2y (- (+ qdy (* (- p2x qdx) i1))
(/ (expt (- p2x qdx) 2) (* 2 R))
)
)
(setq p2 (list p2x p2y))
(setq p3 (list zdx zdy))
(command "line" p2 p3 "")
(command "")
)
页:
[1]