(menucmd "P16=+luis+.pop1")

(vl-load-com)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;; Функция задания значения текущего масштаба 1:1, если пользователем не определено ;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun luis+-if-not-scale (/)
  (if (= (getvar "userr1") 0)
    (progn
      (setvar "userr1" 1.0)
      (setq sp:luis+-scale
             (getvar "userr1")
      ) ;_ end of setq
    ) ;_ end of progn
  ) ;_ end of if
  (setq sp:luis+-scale (getvar "userr1"))
  (setq luis+-scale sp:luis+-scale)
  (princ
    (strcat "\n Текущий масштаб вставки -  1:" (rtos sp:luis+-scale))
  ) ;_ end of princ
  (setvar 'MODEMACRO "** Масштаб вставки = $(rtos,$(getvar, userr1)) **")
  (princ)
) ;_ end defun

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;; Функция задания значения текущего масштаба ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun c:sca (/ old-luis+-scale)
;;;масштаб для вставки блоков
  (luis+-if-not-scale)
;;;Проверить установлен ли масштаб (luis+-scale )

  (setq	old-luis+-scale sp:luis+-scale)
  (setq	sp:luis+-scale  (getreal (strcat "\n* Введите масштаб (1:"
				      (rtos sp:luis+-scale)
				      ") > "
			      ) ;_ end of strcat
		     ) ;_ end of getreal
  )					; end setq
  (setvar "userr1" sp:luis+-scale)
  (setvar "dimscale" sp:luis+-scale)
  (if (null sp:luis+-scale)
    (setq sp:luis+-scale old-luis+-scale)
  ) ;_ end of if
  (princ (strcat "\n* Установлен масштаб - 1:"
                 (rtos sp:luis+-scale)
         ) ;_ end of strcat
  ) ;_ end of princ
  (setvar 'MODEMACRO "**SB** Масштаб вставки = $(rtos,$(getvar, userr1)) **SB** ")
  (princ)
)   ; end of c:sca


(defun c:ысф (/)
  (c:sca)
) ;_ end of defun

 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;Установит слой (создать если не существует);;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun luis+-set-layer (layer-name layer-color layer-line-weight /)
(defun luis+-set-old-layer (/)
  (setvar "clayer" oldClayer)
  (princ)
) ;_ end of defun

  (setq oldEcho   (getvar "cmdecho")
        oldClayer (getvar "clayer")
  ) ;_ end of setq
  (setvar "cmdecho" 0)
  (command "_color" "_bylayer")
  (command "_linetype" "_s" "_bylayer" "")
  (command "_lweight" "_bylayer")
  (if (not (tblsearch "layer" layer-name))
    (progn (command "_.layer" "_new" layer-name "") ;имя слоя
           (command "_.layer" "_lw" layer-line-weight layer-name "") ;вес линий
           (command "_.layer" "_c" layer-color layer-name "") ;цвет
           (setvar "clayer" layer-name)
    ) ;_ end progn
    (setvar "clayer" layer-name)
  ) ;_ end if
  (setvar "cmdecho" oldEcho)
  (princ)
)   ; end of layer

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;Функция простой вставки блока;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun luis+-block-insert (block-name /)
  (luis+-if-not-scale)
  (defun *error* (msg)
    (setvar "cmdecho" oldEcho)
  ) ; end of *error*
  (setvar "attreq" 0)
  (setq oldEcho (getvar "cmdecho"))
  (setvar "cmdecho" 0)
;;; (command "_insert" block-name "_s" luis+-scale pause "")
  (command "_insert"
           block-name
           "_PROTATE"
           0
           "_PXScale"
           luis+-scale
           "_PYScale"
           luis+-scale
           pause
           "_x"
           luis+-scale
           luis+-scale
           "0.1"
           ""
  ) ;_ end of command
  (setvar "cmdecho" oldEcho)
  (princ)
)   ; end of luis+-block-insert

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;; Функция простой вставки блока c последующим сдвигом ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun luis+-block-insert-move
                            (block-name / luis+-scale blPath *error*)
  (defun *error* (msg)
    (setvar "cmdecho" oldEcho)
    (luis+-set-old-layer)
    (redraw (entlast) 4)
  ) ; end of *error*
  (setq oldEcho (getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (setvar "attreq" 0)
  (luis+-if-not-scale)
;;;Проверить установлен ли масштаб
  (progn
    (princ (strcat "\n* Разместить временно"))
;;;  (command "_insert" block-name "_s" luis+-scale pause "")
    (command "_insert" block-name "_x" luis+-scale "_y" luis+-scale "_z" "0.1" pause "")
;;;    (sssetfirst nil (ssadd (entlast)))
    (redraw (entlast) 3)
    (if (setq pt (getpoint "\n* Указать базовую точку, переместить в нужное место (Enter - отмена):"))
;;;      (command "_.move" (entlast) "" pt pause) блок сука улетает если не указать точку перемещения, поэтому - копи-пасте:
      (command "_.copybase" pt (entlast) "" "_.erase" (entlast) "" "_.pasteclip" pause)
    ) ;_ end of if
  ) ; end progn
  (redraw (entlast) 4)
  (setvar "cmdecho" oldEcho)
  (princ)
)   ; end of luis+-block-insert-move


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;; Функция простой вставки блока c последующим поворотом ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun luis+-block-insert-rotate
                              (block-name / oldEcho luis+-scale blPath *error*)
(defun *error* (msg)
    (setvar "cmdecho" oldEcho)
    (luis+-set-old-layer)
    (redraw (entlast) 4)
  ) ; end of *error*

  (setq oldEcho (getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (setvar "attreq" 0)
  (luis+-if-not-scale)
;;;Проверить установлен ли масштаб (luis+-scale )
  (progn
    (princ (strcat "\n* Разместить блок"))
;;;    (command "_insert" block-name "_s" luis+-scale pause pause)
    (command "_insert" block-name "_x" luis+-scale "_y" luis+-scale "_z" 0.1 pause pause)

  ) ; end progn

 (setq copy_block_name (cdr (assoc -1 (entget (entlast)))))
  (attr-rot copy_block_name '(("*" . 0))) ; повернуть атрибуты в 0; повернуть атрибуты в 0

  (setvar "cmdecho" oldEcho)
  
   ;;;двинуть атрибут вместо (c:luis+-attrib-move)
    (setq z (nentsel))
           (setq zz (entget (car z)))
           (setq zz1 (cdr (assoc 0 zz)))
           (if z
             (progn (if (or (/= zz1 "ATTRIB") (= z nil))
                      (princ "* Это не атрибут - повторите выбор ")
                      (setq flag nil)
                    ) ;if
             ) ;progn
             (princ)
           ) ;if
(command "_attedit" "" "" "" "" z "_p" pause "_n")
  
  (princ)
) 


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;; Функция  вставки блока c последующим поворотом и сдвигом;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun luis+-block-insert-rotate-move
                              (block-name / oldEcho luis+-scale blPath *error*)

(defun *error* (msg)
    (setvar "cmdecho" oldEcho)
    (luis+-set-old-layer)
    (redraw (entlast) 4)
  ) ; end of *error*

  (setq oldEcho (getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (setvar "attreq" 0)
  (luis+-if-not-scale)
;;;Проверить установлен ли масштаб (luis+-scale )
  (progn
    (princ (strcat "\n* Разместить блок"))
;;;    (command "_insert" block-name "_s" luis+-scale pause pause)
    (command "_insert" block-name "_x" luis+-scale "_y" luis+-scale "_z" 0.1 pause pause)

  ) ; end progn


   (setq copy_block_name (cdr (assoc -1 (entget (entlast)))))
  (attr-rot copy_block_name '(("*" . 0))) ; повернуть атрибуты в 0; повернуть атрибуты в 0

  (if (setq pt (getpoint "\n* Указать базовую точку, переместить в нужное место (Enter - отмена):"))
      (command "_.move" (entlast) "" pt pause)
    )

  (setvar "cmdecho" oldEcho)
  
   ;;;двинуть атрибут вместо (c:luis+-attrib-move)
    (setq z (nentsel))
           (setq zz (entget (car z)))
           (setq zz1 (cdr (assoc 0 zz)))
           (if z
             (progn (if (or (/= zz1 "ATTRIB") (= z nil))
                      (princ "* Это не атрибут. Повторите выбор ")
                      (setq flag nil)
                    ) ;if
             ) ;progn
             (princ)
           ) ;if
(command "_attedit" "" "" "" "" z "_p" pause "_n")

  
  (princ)
) 
























 
(luis+-if-not-scale)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;Программа копирования блока ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun c:сс () (c:cc))
(defun c:cc (/ TEMP)
  (setq oldEcho (getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (setq block (ssget "_:S" '((0 . "INSERT"))))
  (command "_copybase"
           (list (car (cdr (assoc 10 (entget (ssname block 0))))) (caddr (assoc 10 (entget (ssname block 0)))))
           block
           ""
  ) ;_ end of command
  (command "_pasteclip" "0,0,0") ;поставить в 0

  (princ "\производится вставка")
  (command "_pasteclip" pause)
  (c:am)
  (setvar "cmdecho" oldEcho) ;
  (princ)
) ;_ end of defun


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;; Функция поворота блока ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun c:кк () (c:rr))
(defun c:rr (/ TEMP)
  (setq oldEcho (getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (setq block (ssget "_:S" '((0 . "INSERT"))))
  (setq block_name (ssname block 0))
  (setq block_koord (list (car (cdr (assoc 10 (entget block_name)))) (caddr (assoc 10 (entget block_name)))))
  (setq ang (* (cdr (assoc 50 (entget block_name))) (/ -180.0 pi)))
  (command "_rotate" block_name "" block_koord ang)
  (command "_.rotate"
           block_name
           ""
           (list (car (cdr (assoc 10 (entget block_name)))) (caddr (assoc 10 (entget block_name))))
           pause
  ) ;_ end of command
  
  (attr-rot block_name '(("*" . 0)))
  
  (setvar "cmdecho" oldEcho) ;
  (princ)
) ;_ end of defun

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;Программа копирования блока с поворотом в начальное положение ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun c:ск () (c:cr))
(defun c:cr (/ TEMP)
  (setq oldEcho (getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (setq block (ssget "_:S" '((0 . "INSERT"))))
  (command "_copybase"
           (list (car (cdr (assoc 10 (entget (ssname block 0))))) (caddr (assoc 10 (entget (ssname block 0)))))
           block
           ""
  ) ;_ end of command
  (command "_pasteclip" "0,0,0") ;поставить в 0
  (setq obj (entget (entlast))) ;Последний объект
  (setq block_name (cdr (assoc -1 obj)))
  (setq ang (cdr (assoc 50 obj))) ;угол поворота в рад
  (setq ang (/ (* ang -180.0) pi)) ;угол поворота в град
  (command "_rotate" ;повернуть обратно
           (entlast)
           ""
           (list (car (cdr (assoc 10 (entget (entlast))))) (caddr (assoc 10 (entget (entlast)))))
           ang
  ) ;_ end of command

  (if (eq 1 (cdr (assoc 66 obj))) ; если в выбранном блоке есть атрибуты то 
    (attr-rot block_name '(("*" . 0))) ; повернуть атрибуты в 0 ; повернуть атрибуты в 0

  ) ;_ end of if


  (command "_copybase" "0,0,0" (entlast) "") ;копировать с 0
  (command "_erase" (entlast) "") ;удалить с 0
;;;
;;;(setq TEMP T)
;;;(while TEMP
  (princ "\производится вставка")
  (command "_pasteclip" pause)
  (setq copy_block_name (cdr (assoc -1 (entget (entlast)))))
  (command "_.rotate"
           (entlast)
           ""
           (list (car (cdr (assoc 10 (entget (entlast))))) (caddr (assoc 10 (entget (entlast)))))
           pause
  ) ;_ end of command
  (princ (strcat "\n*** Указать базовую точку, переместить в нужное место"))

  (attr-rot copy_block_name '(("*" . 0))) ; повернуть атрибуты в 0; повернуть атрибуты в 0


  (if (setq pt (getpoint "\n* Указать базовую точку, переместить в нужное место (Enter - отмена):"))
    (command "_.move" (entlast) "" pt pause)
  ) ;_ end of if

  (c:am)
  (setvar "cmdecho" oldEcho) ;
  (princ)
) ;_ end of defun

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;Функция перемещения блока с поворотом в начальное положение ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun c:ьк () (c:mr))
(defun c:mr (/ TEMP)
  (setq oldEcho (getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (setq block (ssget "_:S" '((0 . "INSERT"))))
  (setq block_name (ssname block 0))
  (setq block_koord (list (car (cdr (assoc 10 (entget block_name)))) (caddr (assoc 10 (entget block_name)))))
  (setq ang (* (cdr (assoc 50 (entget block_name))) (/ -180.0 pi)))
  (command "_rotate" block_name "" block_koord ang)
 (attr-rot block_name '(("*" . 0))) ; повернуть атрибуты в 0
  (command "_move" block_name "" block_koord pause)
  (command "_.rotate"
           block_name
           ""
           (list (car (cdr (assoc 10 (entget block_name)))) (caddr (assoc 10 (entget block_name))))
           pause
  ) ;_ end of command
  (attr-rot block_name '(("*" . 0))) ; повернуть атрибуты в 0
    
  (c:am)
  (setvar "cmdecho" oldEcho) ;
  (princ)
) ;_ end of defun






















;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;; Функция поворота аттрибута после вставки с поворотом ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun attr-rot (block ang-list / ang) 

  (foreach x (vlax-safearray->list
               (vlax-variant-value
                 (vla-getattributes (setq block (vlax-ename->vla-object block)))
               ) 
             ) 
    (cond ((= (vla-get-invisible x) :vlax-true))
          ((= (vla-get-constant x) :vlax-true))
          ((setq ang (assoc (vla-get-tagstring x) ang-list))
           (if (cdr ang)
             (vla-put-rotation x (* (cdr ang) (/ pi 180)))
             (vla-put-rotation x (vla-get-rotation block))
           ) 
          )
          (t
           (vla-put-rotation
             x
             (* (/ (angle (trans '(0.0 0.0) 1 0) (trans '(1.0 0.0) 1 0))
                   pi
                ) 
                180
             ) 
           ) 
          )
    ) 
  ) 
)



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;Программа циклического перемещения атрибутов ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun c:фь () (c:am))
(defun c:am (/ flag z zz zz1 cmd)
  (setq cmd (getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (setq flag 1)
  (while (> flag 0)
    (progn (setq z (nentsel "\n*** Выберите перемещаемый атрибут: "))
	   (if (= z nil)
	     (setq flag 0)
	   )
	   (if (= z nil)
	     (prompt "\n* D O N E")
	     (progn (setq zz (entget (car z)))
		    (setq zz1 (cdr (assoc 0 zz)))
		    (if	(/= zz1 "ATTRIB")
		      (prompt "\n* Это не атрибут - повторите выбор")
		      (progn (if (= z nil)
			       (setq flag 0)
			     )
			     (if (= z nil)
			       (prompt "\n* D O N E")
			       (command "_attedit" "" "" "" "" z "_p" pause "_n")
			     ) ;if
		      ) ;progn
		    ) ;if
	     ) ;progn
	   ) ;if
    )	  ;progn
  )	  ;while  
  (setvar "cmdecho" cmd)
  (princ)
)
