Aller au contenu

Boucler une liste


Arcasdk

Messages recommandés

Bonjour, bonjour, j'ai écris une petite routine qui me permet de créer un style de côte qui me va bien. J'ai cherché un peu sur le net et j'ai choisi la méthode du "ENTMAKE" après avoir écris une liste.

 

(LIST
       (CONS 0 "DIMSTYLE")
       (CONS 100 "AcDbSymbolTableRecord")
       (CONS 100 "AcDbDimStyleTableRecord")
       (CONS 2 "COT 1-1")
       (CONS 70 0)	
       (CONS 3 "")
       (CONS 4 "")
       (CONS 5 "")
       (CONS 6 "")
       (CONS 7 "")
       (CONS 40 1.0).....)

 

Je ne sais pas si c'est le plus rapide mais si un pro du vlisp connait quelque chose de mieux je serai ravi.

Mais la raison de mon post est que je voudrai faire une boucle sur cette liste pour créer plusieurs style de cote en ne changeant que le nom (code dxf 2) et le facteur d'échelle (code dxf 40).

En effet je voudrai plusieurs style de côte avec des noms comme (COT 1-10, COT 1-20, COT 1-5 etc...)

 

Je pense utilisé un (while (=/ nil (.... tant que la liste de nom n'est pas écoulé mais je me demande si un 'mapcar, lambda' ou un 'foreach' (fonction que je n'ai jamais compris) ne pourrais pas faire l'affaire.

Mon code est un peu long à cause de la multitude de code dxf qui sont nécessaire pour créer un style de cote.

 

(IF (= nil (TBLSEARCH "DIMSTYLE" "COT 1-1"))
   (PROGN
     (SETQ res$
     (LIST
       (CONS 0 "DIMSTYLE")
              (CONS 100 "AcDbSymbolTableRecord")
       (CONS 100 "AcDbDimStyleTableRecord")
       (CONS 2 "COT 1-1")
       (CONS 70 0)
       (CONS 3 "")
       (CONS 4 "")
       (CONS 5 "")
       (CONS 6 "")
       (CONS 7 "")
       (CONS 40 1.0)
       (CONS 41 2.5)
       (CONS 42 1.0)
       (CONS 43 1.0)
       (CONS 44 1.0)
       (CONS 45 0.0)
       (CONS 46 0.0)
       (CONS 47 0.0)
       (CONS 48 0.0)
       (CONS 140 2.5)
       (CONS 141 1.0)
       (CONS 142 0.0)
       (CONS 143 25.4)
       (CONS 144 1.0)
       (CONS 145 0.0)
       (CONS 146 1.0)
       (CONS 147 1.0)
       (CONS 71 0)
       (CONS 72 0)
       (CONS 73 0)
       (CONS 74 0)
       (CONS 75 0)
       (CONS 76 0)
       (CONS 77 1)
       (CONS 78 12)
       (CONS 79 3)
       (CONS 170 0)
       (CONS 171 2)
       (CONS 172 0)
       (CONS 173 0)
       (CONS 174 0)
       (CONS 175 0)
       (CONS 176 256)
       (CONS 177 256)
       (CONS 178 7)
       (CONS 179 4)
       (CONS 270 2)
       (CONS 271 4)
       (CONS 272 4)
       (CONS 273 2)
       (CONS 274 2)
       (CONS 275 0)
       (CONS 276 0)
       (CONS 277 2)
       (CONS 279 0)
       (CONS 280 0)
       (CONS 281 0)
       (CONS 282 0)
       (CONS 283 1)
       (CONS 284 12)
       (CONS 285 0)
       (CONS 286 0)
       (CONS 287 0))
       (CONS 288 1)
       (CONS 289 3))))
     )
     )
   )
     (ENTMAKE res$))

 

Si quelqu'un peu m'éclairer ou m'en dire plus sur ce qu'il aurait fait.

Un grand merci

<IMG SRC=http://peronfrederic.free.fr/banniere.jpg></IMG>

 

<a href=www.formu-lan.net>www.FormuLan.net

</a>

Lien vers le commentaire
Partager sur d’autres sites

Bonjour Arcasdk,

 

Mais la raison de mon post est que je voudrai faire une boucle sur cette liste pour créer plusieurs style de cote en ne changeant que le nom (code dxf 2) et le facteur d'échelle (code dxf 40).

En effet je voudrai plusieurs style de côte avec des noms comme (COT 1-10, COT 1-20, COT 1-5 etc...)

 

Je pense utilisé un (while (=/ nil (.... tant que la liste de nom n'est pas écoulé mais je me demande si un 'mapcar, lambda' ou un 'foreach' (fonction que je n'ai jamais compris) ne pourrais pas faire l'affaire.

 

Je pense qu’avec foreach ce sera plus concis.. De plus avec entmake (il y a déjà une vérification implicite de la présence ou non de ta définition dans la table) en résumé tblsearch n’est pas indispensable tout comme ton progn.

 

Pour l'exemple

(foreach x '(("COT 1-1" . 1) ("COT 1-10" . 10) ("COT 1-20" . 20) ("COT 1-5" . 5) ("COT 1-8" . 8))
 (ENTMAKE (LIST (CONS 0 "DIMSTYLE")
                (CONS 100 "AcDbSymbolTableRecord")
                (CONS 100 "AcDbDimStyleTableRecord")
                (CONS 2 (car x))
                (CONS 70 0)
                (CONS 3 "")
                (CONS 4 "")
                (CONS 5 "")
                (CONS 6 "")
                (CONS 7 "")
                (CONS 40 (cdr x))
                (CONS 41 2.5)
                (CONS 42 1.0)
                (CONS 43 1.0)
                (CONS 44 1.0)
                (CONS 45 0.0)
                (CONS 46 0.0)
                (CONS 47 0.0)
                (CONS 48 0.0)
                (CONS 140 2.5)
                (CONS 141 1.0)
                (CONS 142 0.0)
                (CONS 143 25.4)
                (CONS 144 1.0)
                (CONS 145 0.0)
                (CONS 146 1.0)
                (CONS 147 1.0)
                (CONS 71 0)
                (CONS 72 0)
                (CONS 73 0)
                (CONS 74 0)
                (CONS 75 0)
                (CONS 76 0)
                (CONS 77 1)
                (CONS 78 12)
                (CONS 79 3)
                (CONS 170 0)
                (CONS 171 2)
                (CONS 172 0)
                (CONS 173 0)
                (CONS 174 0)
                (CONS 175 0)
                (CONS 176 256)
                (CONS 177 256)
                (CONS 178 7)
                (CONS 179 4)
                (CONS 270 2)
                (CONS 271 4)
                (CONS 272 4)
                (CONS 273 2)
                (CONS 274 2)
                (CONS 275 0)
                (CONS 276 0)
                (CONS 277 2)
                (CONS 279 0)
                (CONS 280 0)
                (CONS 281 0)
                (CONS 282 0)
                (CONS 283 1)
                (CONS 284 12)
                (CONS 285 0)
                (CONS 286 0)
                (CONS 287 0)
                (CONS 288 1)
                (CONS 289 3)
          )
 )
)

 

Ps : Corrigé une erreur de parenthèse dans ton code (CONS 287 0))

A+

Apprendre => Prendre => Rendre

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

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é