(defun C:draw_3dpoly_be_get_elevation (/ t1 t2 2Dpline dxf z p popravka temp list_3D_point *error*); создание 3D полилинии с явным указанием отметок вершин
  (geo_tools-help "draw_3dpoly_be_get_elevation")
  (load_global_variable)
  (defun *error* (msg)
    (if (not(eq 2Dpline nil))
      (entdel 2Dpline)
      )
    (if(and
	 (not(eq list_3D_point nil))
	 (> (length list_3D_point) 1))
      (draw_pline_entmake list_3D_point nil T 0 0))
    (princ)
    )
  (initget 1)(setq t1(getpoint "\nУкажи начальную точку 3D полилинии: "))
  (if
    (not(eq t1 nil))
    (progn
      (setq z(get_elivation))
      (setq p (list (nth 0 t1)(nth 1 t1)z))
      (setq list_3D_point (list p))
      (setq  t2 t1)
      (while (not (eq t2 nil))
	(initget)(setq t2(getpoint t2 "\nУкажи следующую точку 3D полилинии<ENTER - закончить>: "))
	(if
	  (not(eq t2 nil))
	  (progn
	    (if
	      (eq 2Dpline nil)
	      (progn
		(entmake(list
			  '(0 . "LWPOLYLINE")
			  '(100 . "AcDbEntity")
			  '(100 . "AcDbPolyline")
			  (cons 90 2)
			  (cons 43 0.0)
			  (cons 70 0)
			  (cons 10 t1)
			  (cons 10 t2)
			  )
			)
		(setq 2Dpline (entlast))
		)
	      (progn
		(setq dxf (entget 2Dpline))
		(setq dxf (subst (cons 90 (1+ (cdr(assoc 90 dxf))))(assoc 90 dxf) dxf))
		(entmod (append dxf (list (cons 10 t2))))
		(entupd 2Dpline)
		)
	      )
	    (setq z(get_elivation))
	    (setq p (list (nth 0 t2)(nth 1 t2)z))
	    (setq list_3D_point (append list_3D_point(list p)))
	    )
	  )
	)
      (entdel 2Dpline)
      (draw_pline_entmake list_3D_point nil T 0 0)
      )
    )
  (princ)
  )
