Aller au contenu

Modification Lisp lexplode de USEGOMME


BIGC-ROMU

Messages recommandés

Bonjours à tous,

 

Je viens de trouver sur le forum, le lisp lexplode de usegomme (voir ci-dessous), qui est trés intéressant, mais pour moi, reste incomplet.

 

Je dessine essentielle mes blocs dans le calque 0 et les propriétés (couleur, type de ligne, épaisseur) de l'ensemble de mes objets sont sur DuBloc (sauf exeptions).

 

J'insere mes blocs toujour sur un calque autre que le calque 0, et bien souvent je modifie leurs propriétés (couleur, type de ligne, épaisseur).

 

Je souhaite qu'en décomposant mes blocs:

- Les objets des calques 0 et autre soit sur leur calque d'insertion.

- Les objet avec les propriétés Dublocs (couleur, type de ligne, épaisseur) reprennent leur propriété d'insertion (DuCalque, autre...)

- Les autres objets ayant des propriétés autre que DuBloc, les gardes aprés décomposition

 

Et le top, se serait que l'on puisse décomposer les attributs en texte (comme la commande des Express).

 

Bon, je crois que j'en demande un peu beaucoup, mais qui sait...

 

D'avance merci pour vos réponses...

 

usegomme si tu nous écoute!

 

 

 

 

Le lisp de usegomme

 

 ;; usegomme 08-09-2008
;; decompose en concervant le calque de l'objet
;; et concerve les calques internes au bloc autre que 0
(defun c:lexplode (/ js ent lent  typent ss ca ca0 ca2 i1 i2)
 (setvar "cmdecho" 0)
 (setq ca0 (cdr (assoc 70 (tblsearch "layer" "0"))))
 (if (>= ca0 4)(command "_layer" "_u" "0" ""))
 (setq js (ssget))
 (setq i1 0)
 (repeat (sslength js)
   (setq ent (ssname js i1))
   (setq lent (entget ent))
   (setq typent (cdr (assoc 0 lent)))
   (setq ca (cdr (assoc 8 lent))) 
   (command "_explode" ent)
   (if (not (zerop (getvar "cmdactive")))(command))   
   (if (and (setq ss (ssget "p"))(/= typent "3DSOLID")
     (/= typent "SURFACE")(/= typent "REGION"))
     (progn
       (setq i2 0)
       (repeat (sslength ss)
         (setq ent (ssname ss i2))

        (setq ca2 (cdr (assoc 8 (entget ent))))
        (if ( = ca2 "0")
         (command "_change" ent "" "_p" "_layer" ca "") 
           )       
         (setq i2 (1+ i2))   
       )
     )
   )
   (setq i1 (1+ i1))
 )
 (if (>= ca0 4)(command "_layer" "_lo" "0" "")) 
 (setvar "cmdecho" 1)
 (princ)
) 

Lien vers le commentaire
Partager sur d’autres sites

Salut BIGC-ROMU

 

Je vais voir ce que je peux faire en attendant tu devrais utiliser la 1er version de lexplode qui correspond mieux à ton besoin et qui est dans le même post.

Je la met ci-dessous mais j'ai changé son nom .

 

;; usegomme 03-09-2008
;; decompose en concervant le calque de l'objet
(defun c:expl2lo (/ js ent lent  typent ss ca ca0 i1 i2)
 (setvar "cmdecho" 0)
 (setq ca0 (cdr (assoc 70 (tblsearch "layer" "0"))))
 (if (>= ca0 4)(command "_layer" "_u" "0" ""))
 (setq js (ssget))
 (setq i1 0)
 (repeat (sslength js)
   (setq ent (ssname js i1))
   (setq lent (entget ent))
   (setq typent (cdr (assoc 0 lent)))
   (setq ca (cdr (assoc 8 lent))) 
   (command "_explode" ent)
   (if (not (zerop (getvar "cmdactive")))(command))   
   (if (and (setq ss (ssget "p"))(/= typent "3DSOLID")
     (/= typent "SURFACE")(/= typent "REGION"))
     (progn
       (setq i2 0)
       (repeat (sslength ss)
         (setq ent (ssname ss i2))
         (command "_change" ent "" "_p" "_layer" ca "")        
         (setq i2 (1+ i2))   
       )
     )
   )
   (setq i1 (1+ i1))
 )
 (if (>= ca0 4)(command "_layer" "_lo" "0" "")) 
 (setvar "cmdecho" 1)
 (princ)
) 

 

[Edité le 26/2/2009 par usegomme]

Lien vers le commentaire
Partager sur d’autres sites

Regarde si ça commence à ressembler à ce que tu souhaites.

 

;; usegomme 26-02-2009 indice A  avec epaisseur ligne
;; decompose en concervant le calque de l'objet et ses propriétés
(defun c:expl2po (/ js ent lent  typent ss ca ca0 i1 i2 CO LT ep epb)
 (setvar "cmdecho" 0)
 (setq ca0 (cdr (assoc 70 (tblsearch "layer" "0"))))
 (if (>= ca0 4)(command "_layer" "_u" "0" ""))
 (setq js (ssget))
 (setq i1 0)
 (repeat (sslength js)
   (setq ent (ssname js i1))
   (setq lent (entget ent))
   (setq typent (cdr (assoc 0 lent)))
   (setq ca (cdr (assoc 8 lent)))
   (if (setq epb (cdr (assoc 370 lent)))(setq epb (* epb 0.01)))
   (command "_explode" ent)
   (if (not (zerop (getvar "cmdactive")))(command))   
   (if (and (setq ss (ssget "p"))(/= typent "3DSOLID")
     (/= typent "SURFACE")(/= typent "REGION"))
     (progn
       (setq i2 0)
       (repeat (sslength ss)
         (setq ent (ssname ss i2))
         (if (= 0 (setq co (cdr (assoc 62 (entget ent))))) (setq co "bylayer"))
         (if (= "ByBlock" (setq lt (cdr (assoc 6 (entget ent))))) (setq lt "bylayer"))
         
         (if (= -2 (cdr (assoc 370 (entget ent)))) (setq ep "bylayer")(setq ep nil))
         
         (command "_change" ent "" "_p" "_layer" ca )
         (if co (command "_co" co))
         (if lt (command "_lt" lt))
         (cond 
           ((and epb ep)(command "ep" epb))
           (ep (command "ep" ep)) 
         )
         (command "")        
         (setq i2 (1+ i2))   
       )
     )
   )
   (setq i1 (1+ i1))
 )
 (if (>= ca0 4)(command "_layer" "_lo" "0" "")) 
 (setvar "cmdecho" 1)
 (princ)
)  

 

[Edité le 26/2/2009 par usegomme]

Lien vers le commentaire
Partager sur d’autres sites

Bonjours à tous

 

 

Regarde si ça commence à ressembler à ce que tu souhaites.

 

Merci Usegomme de te pencher sur mon cas, je regarde ça dés que j'ai 5 min.

 

Sans vouloir me méler de ce qui ne me regarde pas, vous ne connaissez pas XPLODE, commande native ?

 

Désolé Tramber XPLODE, comme la commande BURST des express, ne récupère pas les propriétés de type de ligne et épaisseur de ligne. Et en plus il ne décompose pas les attributs en texte à l'inverse de BURST... Merci quand même.

 

Lien vers le commentaire
Partager sur d’autres sites

Extrait de l'aide avec l'option adéquate :

 

Vous devez entrer le nom d'un type de ligne chargé dans le dessin. Si vous entrez ducalque , les objets composants héritent leur type de ligne du calque de l'objet décomposé. Si vous entrez dubloc , ils héritent du type de ligne de l'objet décomposé.

 

En fait, ce qui vous gêne c'est la répartition dans les calques d'origne.... qui n'est pas possible.

 

Bon, j'arrête.

 

[Edité le 26/2/2009 par Tramber]

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Lien vers le commentaire
Partager sur d’autres sites

Regarde si ça commence à ressembler à ce que tu souhaites.

 

 

Ok c'est un bon début, les objets avec des proprités forcées (couleur, type de ligne, épaisseur) dans le bloc, les gardes bien aprés décomposition.

 

Mais les objets avec des propriétés en Dubloc, aprés décomposition, se mette en DuCalque pour la couleur et le type de ligne, et reste en Dubloc pour les épaisseur...alors qu'il faudrait qu'ils reprennent les propriétés "forcées" aprés l'insertion...

 

 

Je continus à tester...

 

A+

Lien vers le commentaire
Partager sur d’autres sites

En fait, ce qui vous gêne c'est la répartition dans les calques d'origne.... qui n'est pas possible.

 

Non, pas du tout. Je veut que tous mes objets soit sur le calque d'insertion du bloc, mais que ceux-ci garde leur propriétés qui ont été "forcées" dans le bloc mais aussi aprés insertion.

 

D'une manière simple, je veux que le bloc aprés décomposition ressemble exactement (couleur, type de ligne, épaisseur) au bloc avant décomposition et que tous les objets soit sur le calque d'insertion....

 

Lien vers le commentaire
Partager sur d’autres sites

C'est avec plaisir, et ça fait avancer le schmi.. le shmilili..le schmilblick , et je vais pouvoir améliorer mon lexplode . Bon faire et défaire des blocs ça m'a pris un peu la tête mais j'ai vu comment fonctionner épaisseur de ligne que je n'utilise pas ,ce qui est peut être à reconsidérer.

Est-ce que c'est vraiment bien , pratique ?

Pour la suite il faudra attendre un peu , je ne sais pas si l'intégration de burst.lsp va être aisé.

A+

Lien vers le commentaire
Partager sur d’autres sites

J'ai regardé "burst" des express , il ne décompose que les blocs mais tous les blocs avec ou sans attribut et fait ce que fait lexplode au niveau des calques aussi ce dernier ne sert à rien,

et je suis d'avis d' adapter burst à ton besoin plutôt que de tenter de l'intégrer.

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

je suis d'avis d' adapter burst à ton besoin plutôt que de tenter de l'intégrer.

 

Pourquoi pas... c'est toi le boss...

 

Pour info, j'utilise les épaisseurs de ligne car s'est une habitude que j'avais prise avec mon ancien logiciel (Powerdraw 6.0 sur MAC), et cela m'évite d'utiliser les fichiers .ctb que je trouve pénnible à gérer... peut être à reconsidérer...

Lien vers le commentaire
Partager sur d’autres sites

Salut , voilà BURST.LSP des express est modifié pour ton usage , ça semble fonctionner correctement.

si tu t' intêresses au lisp j'ai indiqué les modifs par ;***

 

JE SIGNALE EN PASSANT UNE ERREUR DANS BURST

Il faut remplacer "BYBLOCK" par "ByBlock" dans la ligne suivante

(If (= "BYBLOCK" (ITEM 6 ENT))

 

-------------------------

 

 ;;;
;;;    BIGBURST.LSP adaptation de BURST.LSP      04-03-09 modifié le 05-03-09
;;;    
(Defun C:BIGBURST (/ item bitset bump att-text lastent burst-one burst   ;***
                 BCNT BLAYER BCOLOR ELAST BLTYPE ETYPE PSFLAG ENAME )

  ;-----------------------------------------------------
  ; Item from association list
  ;-----------------------------------------------------
  (Defun ITEM (N E) (CDR (Assoc N E)))
  ;-----------------------------------------------------
  ; Error Handler
  ;-----------------------------------------------------

 (acet-error-init
   (list
     (list "cmdecho" 0
           "highlight" 1
     )
     T     ;flag. True means use undo for error clean up.
   );list
 );acet-error-init


  ;-----------------------------------------------------
  ; BIT SET
  ;-----------------------------------------------------

  (Defun BITSET (A B) (= (Boole 1 A B) B))

  ;-----------------------------------------------------
  ; BUMP
  ;-----------------------------------------------------

  (Setq bcnt 0)
  (Defun bump (prmpt)
     (Princ
        (Nth bcnt '("\r-" "\r\\" "\r|" "\r/"))
     )
     (Setq bcnt (Rem (1+ bcnt) 4))
  )

  ;-----------------------------------------------------
  ; Convert Attribute Entity to Text Entity or MText Entity
  ;-----------------------------------------------------

  (Defun ATT-TEXT (AENT / ANAME TENT ILIST INUM)
     (setq ANAME (cdr (assoc -1 AENT)))
    ; (if (_MATTS_UTIL ANAME)                            ;***
      ;  (progn                                          ;***
           ; Multiple Line Text Attributes (MATTS) -
           ; make an MTEXT entity from the MATTS data
       ;    (_MATTS_UTIL ANAME 1)                       ;***
       ; )                                               ;***    
       ; (progn                                          ;*** 
           ; else -Single line attribute conversion
           (Setq TENT '((0 . "TEXT")))
           (ForEach INUM '(8
                           6
                           38
                           39
                           62
                           67
                           210
                           10
                           40
                           1
                           50
                           41
                           51
                           7
                           71
                           72
                           73
                           11
                           74
                          )
              (If (Setq ILIST (Assoc INUM AENT))
                  (Setq TENT (Cons ILIST TENT))
              )
           )
           (Setq
              tent (Subst
                      (Cons 73 (item 74 aent))
                      (Assoc 74 tent)
                      tent
                   )
           )
           (EntMake (Reverse TENT))
      ;  )                                              ;***
    ; )                                                ;***
  )

  ;-----------------------------------------------------
  ; Find True last entity
  ;-----------------------------------------------------

  (Defun LASTENT (/ E0 EN)
     (Setq E0 (EntLast))
     (While (Setq EN (EntNext E0))
        (Setq E0 EN)
     )
     E0
  )

  ;-----------------------------------------------------
  ; See if a block is explodable. Return T if it is, 
  ; otherwise return nil
  ;-----------------------------------------------------

  (Defun EXPLODABLE (BNAME / B expld)
     (vl-load-com)
     (setq BLOCKS (vla-get-blocks 
                    (vla-get-ActiveDocument (vlax-get-acad-object)))
      )
     
     (vlax-for B BLOCKS (if (and (= :vlax-false (vla-get-islayout B))
                                 (= (strcase (vla-get-name B)) (strcase BNAME)))
                     (setq expld (= :vlax-true (vla-get-explodable B)))
          )
      )
      expld
   )


  ;-----------------------------------------------------
  ; Burst one entity
  ;-----------------------------------------------------

  (Defun BIGBURST-ONE (BNAME / BENT ANAME ENT ATYPE AENT AGAIN ENAME        ;***    
                    ENT BBLOCK SS-COLOR SS-LAYER SS-LTYPE mirror ss-mirror
                    mlast)
     (Setq
        BENT   (EntGet BNAME)
        BLAYER (ITEM 8 BENT)
        BCOLOR (ITEM 62 BENT)
        BBLOCK (ITEM 2 BENT)
        BCOLOR (Cond
                  ((> BCOLOR 0) BCOLOR)
                 ;;;  ((= BCOLOR 0) "BYBLOCK")                  ;***
                  ((= BCOLOR 0) "BYLAYER")                      ;***
                  ("BYLAYER")
               )
       BLTYPE (Cond ((ITEM 6 BENT)) ("BYLAYER")) 
     )
            ;*** rajout
     (if (setq bepl (item 370 bent)) 
      (if (= bepl -2)
          (setq bepl nil)
          (setq bepl (* bepl 0.01))
      )
     ) 
           ;*** fin rajout
     
     
     (Setq ELAST (LASTENT))
     (If (and (EXPLODABLE BBLOCK) (= 1 (ITEM 66 BENT)))
        (Progn
           (Setq ANAME BNAME)
           (While (Setq
                     ANAME (EntNext ANAME)
                     AENT  (EntGet ANAME)
                     ATYPE (ITEM 0 AENT)
                     AGAIN (= "ATTRIB" ATYPE)
                  )
              (bump "Converting attributes")
              (ATT-TEXT AENT)
           )
        )
     )
        (Progn
           (bump "Exploding block")
           (acet-explode BNAME)
           ;(command "_.explode" bname)
        )
     (Setq
        SS-epl   (SsAdd)                ;*** rajout
        SS-LAYER (SsAdd)
        SS-COLOR (SsAdd)
        SS-LTYPE (SsAdd)
        ENAME    ELAST
     )
     (While (Setq ENAME (EntNext ENAME))
        (bump "Gathering pieces")
        (Setq
           ENT   (EntGet ENAME)
           ETYPE (ITEM 0 ENT)
        )
        (If (= "ATTDEF" ETYPE)
           (Progn
              (If (BITSET (ITEM 70 ENT) 2)
                 (ATT-TEXT ENT)
              )
              (EntDel ENAME)
           )
           (Progn
                (if (= -2 (item 370 ent)) (ssadd ename ss-epl))   ;*** rajout
           
             ;; (If (= "0" (ITEM 8 ENT)) ;***
                 (SsAdd ENAME SS-LAYER)
             ;; )                        ;***
              (If (= 0 (ITEM 62 ENT))
                 (SsAdd ENAME SS-COLOR)
              )
              (If (= "ByBlock" (ITEM 6 ENT))  ;*** remplacé "BYBLOCK" par "ByBlock"
                 (SsAdd ENAME SS-LTYPE) 
              )
           )
        )
     )
     (If (> (SsLength SS-LAYER) 0)
        (Progn
           (bump "Fixing layers")
           (Command
              "_.chprop" SS-LAYER "" "_LA" BLAYER ""
           )
        )
     )
     (If (> (SsLength SS-COLOR) 0)
        (Progn
           (bump "Fixing colors")
           (Command
              "_.chprop" SS-COLOR "" "_C" BCOLOR ""
           )
        )
     )
     (If (> (SsLength SS-LTYPE) 0)
        (Progn
           (bump "Fixing linetypes")
           (Command
              "_.chprop" SS-LTYPE "" "_LT" BLTYPE ""
           )
        )
     )
         ;***  rajouté
     (If (> (SsLength SS-EPL) 0)                                
        (Progn                                                        
           (bump "Fixing Epaisseur_ligne")                            
           (Command "_.chprop" SS-EPL "" )                            
           (if bepl (command "ep" bepl) (command "ep" "BYLAYER"))   ; pas trouvé "ep" en anglais "_.."  ?   
           (command "")                                                 
        )                                                            
     )                                                          
        ;*** fin rajout
  )

  ;-----------------------------------------------------
  ; BURST MAIN ROUTINE
  ;-----------------------------------------------------

  (Defun BIGBURST (/ SS1)                   ;***
     (setq PSFLAG (if (= 1 (caar (vports)))
                      1 0
                  )
     )
     (Setq SS1 (SsGet (list (cons 0 "INSERT")(cons 67 PSFLAG))))
     (If SS1
        (Progn
           (Setvar "highlight" 0)
           (terpri)
           (Repeat
              (SsLength SS1)
              (Setq ENAME (SsName SS1 0))
              (SsDel ENAME SS1)
              (BIGBURST-ONE ENAME)          ;*** 
           )
           (princ "\n")
        )
     )
  )

  ;-----------------------------------------------------
  ; BURST COMMAND
  ;-----------------------------------------------------

  (BIGBURST)                           ;***

 (acet-error-restore)

);end defun

(princ)

 

[Edité le 5/3/2009 par usegomme]

Lien vers le commentaire
Partager sur d’autres sites

Ok ça marche, enfin presque...

 

Je te passe un dwg avec un bloc type inséré 2 fois. La 1er insertion, j'ai forcé la couleur, type de ligne et épaisseur, et la seconde, je l'ai laissé en DuCalque.

 

Le but du jeu, c'est qu'aprés décomposition, les objets des blocs soit tous sur le calque d'insertion et qu'ils aient le même aspect visuel (couleur, type de ligne, épaisseur de ligne) d'avant la décomposition des blocs ...

 

le fichier est ici : http:// http://cjoint.com/?dhnTAIZ2to

 

Tiens moi au courrant...

Lien vers le commentaire
Partager sur d’autres sites

Salut , il y a du progrés .

voici le dernier jus.

 

 ;;;    BIGBURST.LSP adaptation de burst.lsp  12-03-09  ind C
;;;    
(Defun C:BIGBURST (/ item bitset bump att-text lastent burst-one burst    
                 BCNT BLAYER BCOLOR ELAST BLTYPE ETYPE PSFLAG ENAME )

  ;-----------------------------------------------------
  ; Item from association list
  ;-----------------------------------------------------
  (Defun ITEM (N E) (CDR (Assoc N E)))
  ;-----------------------------------------------------
  ; Error Handler
  ;-----------------------------------------------------

 (acet-error-init
   (list
     (list "cmdecho" 0
           "highlight" 1
     )
     T     ;flag. True means use undo for error clean up.
   );list
 );acet-error-init


  ;-----------------------------------------------------
  ; BIT SET
  ;-----------------------------------------------------

  (Defun BITSET (A B) (= (Boole 1 A B) B))

  ;-----------------------------------------------------
  ; BUMP
  ;-----------------------------------------------------

  (Setq bcnt 0)
  (Defun bump (prmpt)
     (Princ
        (Nth bcnt '("\r-" "\r\\" "\r|" "\r/"))
     )
     (Setq bcnt (Rem (1+ bcnt) 4))
  )

  ;-----------------------------------------------------
  ; Convert Attribute Entity to Text Entity or MText Entity
  ;-----------------------------------------------------

  (Defun ATT-TEXT (AENT / ANAME TENT ILIST INUM)
     (setq ANAME (cdr (assoc -1 AENT)))
    ; (if (_MATTS_UTIL ANAME)                            ;***
      ;  (progn                                          ;***
           ; Multiple Line Text Attributes (MATTS) -
           ; make an MTEXT entity from the MATTS data
       ;    (_MATTS_UTIL ANAME 1)                       ;***
       ; )                                               ;***    
       ; (progn                                          ;*** 
           ; else -Single line attribute conversion
           (Setq TENT '((0 . "TEXT")))
           (ForEach INUM '(8
                           6
                           38
                           39
                           62
                           67
                           210
                           10
                           40
                           1
                           50
                           41
                           51
                           7
                           71
                           72
                           73
                           11
                           74
                          )
              (If (Setq ILIST (Assoc INUM AENT))
                  (Setq TENT (Cons ILIST TENT))
              )
           )
           (Setq
              tent (Subst
                      (Cons 73 (item 74 aent))
                      (Assoc 74 tent)
                      tent
                   )
           )
           (EntMake (Reverse TENT))
      ;  )                                              ;***
    ; )                                                ;***
  )

  ;-----------------------------------------------------
  ; Find True last entity
  ;-----------------------------------------------------

  (Defun LASTENT (/ E0 EN)
     (Setq E0 (EntLast))
     (While (Setq EN (EntNext E0))
        (Setq E0 EN)
     )
     E0
  )

  ;-----------------------------------------------------
  ; See if a block is explodable. Return T if it is, 
  ; otherwise return nil
  ;-----------------------------------------------------

  (Defun EXPLODABLE (BNAME / B expld)
     (vl-load-com)
     (setq BLOCKS (vla-get-blocks 
                    (vla-get-ActiveDocument (vlax-get-acad-object)))
      )
     
     (vlax-for B BLOCKS (if (and (= :vlax-false (vla-get-islayout B))
                                 (= (strcase (vla-get-name B)) (strcase BNAME)))
                     (setq expld (= :vlax-true (vla-get-explodable B)))
          )
      )
      expld
   )


  ;-----------------------------------------------------
  ; Burst one entity
  ;-----------------------------------------------------

  (Defun BIGBURST-ONE (BNAME / BENT ANAME ENT ATYPE AENT AGAIN ENAME             
                    ENT BBLOCK SS-COLOR SS-LAYER SS-LTYPE mirror ss-mirror
                    mlast)
     (Setq
        BENT   (EntGet BNAME)
        BLAYER (ITEM 8 BENT)
        BCOLOR (ITEM 62 BENT)
        BBLOCK (ITEM 2 BENT)
        BCOLOR (Cond
                  ((> BCOLOR 0) BCOLOR)
                 ;;;  ((= BCOLOR 0) "BYBLOCK")   ;;; 0 = byblock ;***
                  ((= BCOLOR 0) "BYLAYER")                      ;***
                  ("BYLAYER")
               )
       BLTYPE (Cond ((ITEM 6 BENT)) ("BYLAYER")) 
     )
            ;*** rajout
     (if (setq BEPL (item 370 bent)) 
      (if (= bepl -2)                      ;;; -2 = byblock
          (setq bepl nil)
          (if (> bepl 0)(setq bepl (* bepl 0.01)))
      )
     ) 
           ;*** fin rajout
     
     
     (Setq ELAST (LASTENT))
     (If (and (EXPLODABLE BBLOCK) (= 1 (ITEM 66 BENT)))
        (Progn
           (Setq ANAME BNAME)
           (While (Setq
                     ANAME (EntNext ANAME)
                     AENT  (EntGet ANAME)
                     ATYPE (ITEM 0 AENT)
                     AGAIN (= "ATTRIB" ATYPE)
                  )
              (bump "Converting attributes")
              (ATT-TEXT AENT)
           )
        )
     )
        (Progn
           (bump "Exploding block")
           (acet-explode BNAME)
           ;(command "_.explode" bname)
        )
     (Setq   
        SS-LAYER (SsAdd)
        ENAME    ELAST
     )
     (While (Setq ENAME (EntNext ENAME))
        (bump "Gathering pieces")
        (Setq
           ENT   (EntGet ENAME)
           ETYPE (ITEM 0 ENT)
        )
        
        (If (= "ATTDEF" ETYPE)
           (Progn
              (If (BITSET (ITEM 70 ENT) 2)
                 (ATT-TEXT ENT)
              )
              (EntDel ENAME)
           )
           (Progn
             ;; (If (= "0" (ITEM 8 ENT)) ;***
                 (SsAdd ENAME SS-LAYER)   ; toutes les entités seront changées de calque
             ;; )
             ; propriétés du calque de l'entité avant changement    ;; ajout ***
           (setq EL-COLOR (cdr (assoc 62 (entget (tblobjname "LAYER" (ITEM 8 ENT))))))
           (setq EL-TPL (cdr (assoc 6 (entget (tblobjname "LAYER" (ITEM 8 ENT))))))
           (if (< 0 (setq EL-EPL (cdr (assoc 370 (entget (tblobjname "LAYER" (ITEM 8 ENT)))))))
            (setq EL-EPL (* EL-EPL 0.01)) (if (= EL-EPL -3) (setq EL-EPL "BYLAYER"))
           )
               
                   
              (If (= 0 (ITEM 62 ENT))
                 (Command "_.chprop" ename "" "_C" BCOLOR "")
              )
              (If (and (not (ITEM 62 ENT))(/= "0" (ITEM 8 ENT)) )
                  (Command "_.chprop" ename "" "_C" EL-COLOR "")
               )
              
              (If (= "ByBlock" (ITEM 6 ENT))  ;*** remplacé "BYBLOCK" par "ByBlock"
                 (Command "_.chprop" ename "" "_LT" BLTYPE "") 
              )
              (If (and (not (ITEM 6 ENT))(/= "0" (ITEM 8 ENT)))
                  (Command "_.chprop" ename "" "_LT" EL-TPL "")
              )
              
              (If (and (not BEPL) (= -2 (ITEM 370 ENT)))
                 (Command "_.chprop" ename "" "ep" "BYLAYER" "")
              )
              (If (and BEPL (= -2 (ITEM 370 ENT)))
                 (Command "_.chprop" ename "" "ep" BEPL "")
              )
               (If (and (not (ITEM 370 ENT))(/= "0" (ITEM 8 ENT)))
                 (Command "_.chprop" ename "" "ep" EL-EPL "")
               )
                
              
           )
        )
     )
     (If (> (SsLength SS-LAYER) 0)
        (Progn
           (bump "Fixing layers")
           (Command
              "_.chprop" SS-LAYER "" "_LA" BLAYER ""
           )
        )
     )
                
  )

  ;-----------------------------------------------------
  ; BURST MAIN ROUTINE
  ;-----------------------------------------------------

  (Defun BIGBURST (/ SS1)                   ;***
     (setq PSFLAG (if (= 1 (caar (vports)))
                      1 0
                  )
     )
     (Setq SS1 (SsGet (list (cons 0 "INSERT")(cons 67 PSFLAG))))
     (If SS1
        (Progn
           (Setvar "highlight" 0)
           (terpri)
           (Repeat
              (SsLength SS1)
              (Setq ENAME (SsName SS1 0))
              (SsDel ENAME SS1)
              (BIGBURST-ONE ENAME)          ;*** 
           )
           (princ "\n")
        )
     )
  )

  ;-----------------------------------------------------
  ; BURST COMMAND
  ;-----------------------------------------------------

  (BIGBURST)                           ;***

 (acet-error-restore)

);end defun

(princ)

[Edité le 10/3/2009 par usegomme]

 

[Edité le 12/3/2009 par usegomme]

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Essaye de faire un peu plus précis comme critique

 

Les objets, avec une épaisseur DuBloc, dans un blocs, insérés avec une épaisseur DuCalque, restent en épaisseur DuBloc aprés décomposition alors qu'ils devraient avoir une épaisseur DuCalque.

 

Ce n'est pas trés important, mais bon...

 

D'ailleur je ne saisi pas trés bien, en espace papier ou objet, la propriété DuBloc pour des objets à l'extérieure d'un bloc. Il semblerait que pour ces objets, DuBloc = DuCalque . Est que j'ai raison , ou y a t'il une différence que je n'ai pas encore trouvé?[Edité le 11/3/2009 par BIGC-ROMU]

 

[Edité le 11/3/2009 par BIGC-ROMU]

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité