I am working on this routine to draw perpendicular along a polyline. This routine will be creating some 3d geometry based on a couple of 3D pick points. The problem I haven't figured out just yet is how do I calculate the perpendicular angle at a specified distance along the polyline.

I have attached the code that will place a POINT entity at the selected places. The inserted point will be replaced with some code to draw the necessary 3d geometry. I already have the 3d geometry code written. I just need to calculate the perpendicular angle of the polyline. The polyline will most likely contain some kind of arc and possible more than one arc and a tangent.

Code:
(defun C:TEST ()
  (setq	ENTITY	    (entget (car (entsel "\nSelect alignment: ")))
	VLAX-ENTITY (vlax-ename->vla-object (cdr (assoc -1 ENTITY)))
	VLAX-LENGTH (if	(vlax-property-available-p VLAX-ENTITY 'length)
		      (vlax-get-property VLAX-ENTITY 'length)
		    )
  )
  (setq OSM (getvar "osmode"))
  (if VLAX-LENGTH
    (progn
      (setq INCREMENT (fix (/ VLAX-LENGTH 3.0)) ;_ Arbetrary length of 3.0 for testing.
	    INCREMENT (/ VLAX-LENGTH INCREMENT)
      )
      (setvar "osmode" 0)
      (repeat (- (fix (/ VLAX-LENGTH 3.0)) 1)
	(setq VLAX-LENGTH (- VLAX-LENGTH INCREMENT))
	(setq TempPoint (vlax-curve-getpointatdist VLAX-ENTITY VLAX-LENGTH))
	(command "_.point" TempPoint)
						  ; This is the place in the code I need to calculate
						  ; the perpendicular angle of the polyline.  As you can
						  ; see this angle will change based on where along the
						  ; polyline the point is located.
      )
    )
  )
  (vlax-release-object VLAX-ENTITY)
  (setvar "osmode" OSM)
)