;;----------------------------------------------------------;;
;; INITIALIZATION ;;
;;----------------------------------------------------------;;
;;----------------------------------------------------------;;
;; GENERAL ROUTINES ;;
;;----------------------------------------------------------;;
;; gc:AddLwPolyline
;; Creates a polyline in the current space from a list of 2d points
'PaperSpace
'ModelSpace
)
)
'AddLightWeightPolyline
)
)
;; gc:Ang<2pi
;; Returns the angle in 0 2*PI range
(if (and (<= 0 ang
) (< ang
(* 2 pi
))) ang
(gc:Ang
<2pi
(rem (+ ang
(* 2 pi
)) (* 2 pi
))) )
)
;; gc:Convert2d
;; Converts a 3d point into a 2d point
)
;; gc:clockwise-p
;; Returns T if p1 p2 et p3 are clockwise
)
;; gc:tan
;; Returns the tangent of the angle
;;----------------------------------------------------------;;
;; SPECIFIC ROUTINES ;;
;;----------------------------------------------------------;;
;; bh_input
;; Gets input for c:BH3 et c:BH7
(defun bh_input
(/ *error* asnp snpa ortho p1 p2 p3 p4 tmp norm elv
) (/= msg "Function cancelled")
)
)
)
p2 p1
)
)
p4 p3
)
)
(or (gc:clockwise
-p p1 p2 p4
) p1 p2
p2 tmp
)
)
(+ (angle p2 p1
) (/ pi
2)) )
)
)
)
(*error* nil)
(list p1 p2 p3 p4 norm elv
) )
;;----------------------------------------------------------;;
;; COMMANDS ;;
;;----------------------------------------------------------;;
;; BH3
;; Draws a basket-handle arch with 3 centers
(defun c:BH3
(/ p1 p2 p3 p4 p5 norm elv a1 a2 r pl
) )
)
p2
)
)
)
)
;; BH7
;; Draws a basket-handle arch with 3 centers
(defun c:BH7
(/ pt0 pt1 pt2 pt3 pt4 pt5 cen norm elv ac0 ac4 pi
/4 tmp1 tmp2 a04 a02 a24 bsc0 bsc2
bsc3 bsc4 plst blst)
pi/4 (+ ac0 (/ pi 4.))
bsc0
(/ (gc:Ang
<2pi
(- a02 ac4
)) 2.
) bsc2
(/ (gc:Ang
<2pi
(- a04 a02
)) 2.
) bsc3
(/ (gc:Ang
<2pi
(- a24 a04
)) 2.
) bsc4
(/ (gc:Ang
<2pi
(- (+ ac0 pi
) a24
)) 2.
) (polar pt0
(+ ac0
(/ pi
2.
) bsc0
) 1.
) pt2
(polar pt2
(+ a02 bsc2
) 1.
) nil
)
(polar pt2
(+ a04 bsc3
) 1.
) pt4
(polar pt4
(+ a24 bsc4
) 1.
) nil
)
plst
(list pt4 pt3 pt2 pt1 pt0
) (list bsc4 bsc3 bsc2 bsc0
) )
)
)
plst
)
)
)
'(0 1 2 3 4 5 6 7 8)
blst
)
)