;;;=================================================================
;;;
;;; RB.LSP V1.11
;;;
;;; Refait tous les blocs de la couleur dubloc et sur le calque 0
;;;
;;; Copyright (C) Patrick_35
;;;
;;;=================================================================


(defun c:rb(/ a b s *errrb*)

  (defun *errrb* (msg)
    (or (member (strcase msg) '("FUNCTION CANCELLED" ""QUIT / EXIT ABORT"" "FONCTION ANNULEE" "QUITTER / SORTIR ABANDON"))
      (princ (strcat "\nErreur : " msg))
    )
    (vla-endundomark doc)
    (setq *error* s)
    (princ)
  )

  (vl-load-com)
  (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
  (setq s *error*
	*error* *errrb*
  )
  (setq a (tblnext "block" t))
  (while a
    (setq b (cdr (assoc -2 a)))
    (while b
      (setq b (entget b))
      (if (cdr (assoc 6 b))
	(setq b (subst (cons 6 "ByBlock") (assoc 6 b) b))
	(setq b (append b (list (cons 6 "ByBlock"))))
      )
      (setq b (subst (cons 8 "0") (assoc 8 b) b))
      (if (cdr (assoc 62 b))
	(setq b (subst (cons 62 0) (assoc 62 b) b))
	(setq b (append b (list (cons 62 0))))
      )
      (if (cdr (assoc 370 b))
	(setq b (subst (cons 370 -2) (assoc 370 b) b))
	(setq b (append b (list (cons 370 -2))))
      )
      (entmod b)
      (setq b (entnext (cdr (assoc -1 b))))
    )
    (setq a (tblnext "block"))
  )
  (if (setq a (vl-remove-if-not '(lambda (x) (eq (car x) 350)) (dictsearch (namedobjdict) "ACAD_MLINESTYLE")))
    (foreach b a
      (entmod (append (vl-remove-if '(lambda (x) (eq (car x) 62)) (entget (cdr b))) (list (cons 62 0) (cons 62 0) (cons 62 0))))
    )
  )
  (if (setq a (ssget "x" (list (cons 0 "INSERT"))))
    (foreach b (mapcar 'cadr (ssnamex a))
      (if (cdr (assoc 66 (entget b)))
	(progn
	  (setq a (entget (entnext b)))
	  (while (not (eq (cdr (assoc 0 a)) "SEQEND"))
	    (entmod (subst (cons 62 0) (assoc 62 a) a))
	    (setq a (entget (entnext (cdr (assoc -1 a)))))
	  )
	)
      )
      (entupd b)
    )
  )
  (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
  (setq *error* s)
  (princ)
)

(setq nom_lisp "RB")
(if (/= app nil)
  (if (= (strcase (substr app (1+ (- (strlen app) (strlen nom_lisp))) (strlen nom_lisp))) nom_lisp)
    (princ (strcat "..." nom_lisp " chargé."))
    (princ (strcat "\n" nom_lisp ".LSP Chargé.....Tapez " nom_lisp " pour l'éxecuter.")))
  (princ (strcat "\n" nom_lisp ".LSP Chargé......Tapez " nom_lisp " pour l'éxecuter.")))
(setq nom_lisp nil)
(princ)