(defun C:draw_rectangle_be_3_points ( / t1 t2 t3 t4 t5 c1 d flag)
  ; прямоугольник по трем точкам
  (geo_tools-help "draw_rectangle_be_3_points")
  (if (not (setq draw-element (vlax-ldata-get "geo_tools_dictionary" "draw_rectangle_be_3_points")))
    (setq draw-element "Линия"))
  (while (not flag)
    (initget "Полилиния Линии Выход")
    (setq t1 (getpoint(strcat "\nУкажи первую точку жесткой стороны "
				       (cond
					 ((= draw-element "Полилиния")
					  "полилинии")
					 ((= draw-element "Линия")
					  "линий")
					 )
				       " ["
				       (cond
					 ((= draw-element "Полилиния")
					  "Линии")
					 ((= draw-element "Линия")
					  "Полилиния")
					 )
				       "/Выход]<Выход>: ")))

    (cond
      ((or (= t1 nil)(= t1 "Выход"))
       (setq flag T)
       )
      ((= t1 "Полилиния")
       (setq draw-element "Полилиния")
       (vlax-ldata-put "geo_tools_dictionary" "draw_rectangle_be_3_points" draw-element)
       )
      ((= t1 "Линия")
       (setq draw-element "Линия")
       (vlax-ldata-put "geo_tools_dictionary" "draw_rectangle_be_3_points" draw-element)
       )
      (T
       (initget 1)(setq t2(getpoint t1 "\nУкажи вторую точку жесткой стороны:"))
       (vla-StartUndoMark active_document)
       (entmake (list '(0 . "LINE") (cons 10 t1) (cons 11 t2)))
       (initget 1)(setq t3(getpoint t2 "\nУкажи третью точку (высота прямоугольника):"))
       (setq c1(+(angle t2 t1) (/ pi 2))); вычисляю угол на t4
       (setq d(*(distance t2 t3) (cos (- pi (- (- (angle t2 t1)(angle t2 t3)) (/ pi 2)))))); вычисляю расстояние на t4
       (setq t4(polar t2 c1 d)); вычисляю координаты на t4
       (setq t5(polar t4 (angle t2 t1) (distance t1 t2))); вычисляю координаты на t5
       (if (= draw-element "Линии")
	 (progn
	   (entmake (list '(0 . "LINE") (cons 10 t2) (cons 11 t4)))
	   (entmake (list '(0 . "LINE") (cons 10 t4) (cons 11 t5)))
	   (entmake (list '(0 . "LINE") (cons 10 t5) (cons 11 t1)))
	   )
	 (progn
	   (entdel (entlast))
	   (draw-lwpolyline-vla-by-list-property
	     (list(cons "spece" (if (eq (getvar "CTAB")"Model")model_spece paper_spece))
		  (cons "Coordinates" (list t1 t2 t4 t5))
		  (cons "Closed" -1)
		  ))
	   )
	 )
       (vla-EndUndoMark active_document)
       )
      )
    )
  (princ)
  )
