Autodesk:
AutoLISP

Vertical Pipe Deflection

(defun C:VERTICALPIPEDEFLECTION (/)

(defun rtd (x)
(* 180.0 (/ x pi))) ;equation that switches degree to radians

(setq a (getreal “\nSlope of pipe 1: “))
(setq b (getreal “\nSlope of pipe 2: “))

(setq c ( – a b ))
(setq d (abs c))
(setq e (/ d 100))
(setq f (atan e))
(setq g (rtd f))

(setq aa (getreal “\nEnter bend: “))

(set def (abs (- aa g)))

(alert (rtos def))

(princ)

)
(princ)

Line Segements from Arc Given Offset Distance

(defun C:UTARC (/)

(setq ent (ssget))
(setq arc (entlast)) ;object entith
(setq Object (vlax-Ename->Vla-Object arc))

(setq B1 (vla-get-radius object))
(setq B3 (vla-get-arclength object))

(setq B2 (getreal “\nMax Distance from Curve : “))

(setq M1 (- B1 B2))

(setq M2 (* M1 M1))

(setq J1 (* B1 B1))

(setq J4 (- J1 M2))

(setq J5 (sqrt J4 ))

(setq J6 (* J5 2))

(setq J7 (/ B3 J6))

(setq J8 (1+ (fix J7)))


(alert (strcat “Number of segments: ” (rtos j8 2 0)))

(vl-load-com)
(setq oldsnap (getvar “osmode”))
(setvar “osmode” 0)
(setq oldecho (getvar “cmdecho”))
(setvar “cmdecho” 0)

(while (setq ent (entsel “\nPick arc: “))
(setq obj (vlax-ename->vla-object (car ent)))
(if (= div nil) (setq div (getint “\nEnter number of chords: “)))

(setq endpt (vlax-curve-getEndPoint obj)
totlen (vlax-curve-getDistAtPoint obj endpt)
arclen (/ totlen div)
chrdpt (vlax-curve-getStartPoint obj)
num 1
)
(setq lst ‘())
(setq lst (list chrdpt))
(repeat div
(setq newpt (vlax-curve-getPointatDist obj (* arclen num)))
(setq lst (cons newpt lst))
(setq num (+ num 1))
) ;repeat

(entmakex (append (list (cons 0 “LWPOLYLINE”)
(cons 100 “AcDbEntity”)
(cons 100 “AcDbPolyline”)
(cons 90 (length lst))
(cons 70 0))
(mapcar (function (lambda (p) (cons 10 p))) lst))
)

) ; end while

(setvar “cmdecho” oldecho)
(setvar “osmode” oldsnap)

(princ)

)
(princ)