Aller au contenu

mattoti

Membres
  • Compteur de contenus

    10
  • Inscription

  • Dernière visite

mattoti's Achievements

Newbie

Newbie (1/14)

0

Réputation sur la communauté

  1. Trop rapide pour moi (gile)... J'avais vu un truc avec les fonctions "setpropertyvalue" (defun C:invAtt ( / valAtt1 valAtt2 cpteur nb sselect sel att1 att2) (setq valAtt1 (strcase (getstring "\nEtiquette de l'attribut 1 : "))) (setq valAtt2 (strcase (getstring "\nEtiquette de l'attribut 2 : "))) (setq cpteur 0 nb 0) (if (setq sselect (ssget '((0 . "INSERT")))) (while (setq sel (ssname sselect cpteur)) (if (and (not (vl-catch-all-error-p (vl-catch-all-apply 'getpropertyvalue (list sel valAtt1)))) (not (vl-catch-all-error-p (vl-catch-all-apply 'getpropertyvalue (list sel valAtt2)))) ) (progn (setq att1 (getpropertyvalue sel valAtt1) att2 (getpropertyvalue sel valAtt2)) (setpropertyvalue sel valAtt1 att2) (setpropertyvalue sel valAtt2 att1) (setq nb (1+ nb)) ) ) (setq cpteur (1+ cpteur)) ) ) (princ (strcat "\n " (itoa nb) " bloc(s) traité(s).")) (princ) ) Je crois que ça marche.
  2. Bonjour, Si j'ai bien compris l'histoire, tu cherches à exploser le bloc sans exploser les blocs imbriqués et tu changes le calque des entités créées si elles sont sur le calque "0" ? Mais je n'ai pas bien compris sur quel calque les entités devaient être placées... J'ai fait un bout de code qui semble correspondre à ce que tu veux. (Je déplace les entités sur le calque "0" vers le calque courant). (defun c:ALK_decomposer-dernier ( / der sslst clq ent entl cpteur) (setq der (entlast)) ; Dernière entité (command "_explode" der) ; décompose l'entité (setq sslst (ssget "_P") cpteur 0) ; récupère les entités 'principales' (setq clq (getvar "clayer")) ; calque courant (while (setq ent (ssname sslst cpteur)) (if (= (cdr (assoc 8 (entget ent))) "0") ; vérifie si l'entité est sur le calque "0" (progn (setq entl (entget ent)) (setq entl (subst (cons 8 clq) (assoc 8 entl) entl)) ; place l'entité sur le calque courant (entmod entl) (entupd ent) ) ) (setq cpteur (1+ cpteur)) ) ) Bon week-end à tous...
  3. mattoti

    L\'omerta sur Fukishima

    Intéressant ce blog KOKOPELLI Je connaissais déjà cette association à cause des procès que leur font les multinationales agro-alimentaire car ils vendent des semences de variétés anciennes non-inscrites dans le catalogue officiel. Eh oui pour vendre des semences il faut payer pour les inscrire dans un catalogue. Une idée des grosses firmes agro-alimentaire (soutenus par l’état) pour imposer des semences stériles dont on doit obligatoirement racheter chaque année de nouvelles graines. (voir par exemple ici http:// IL FAUT SAUVER LES SEMENCES KOKOPELLI )
  4. mattoti

    Arguments et Variables

    J'ai lu environ un dizaine de fois ce passage pour le comprendre. D'accord (gile) j'ai compris, mais comme Bred ce qui me gêne c'est le "temporairement écrasée". Je pense plutôt que si une variable globale est déclarée dans une fonction, bien que les 2 variables aient le même nom, pour le LISP ce sont 2 entités complètement différentes, et il interprète la variable en fonction de la situation.
  5. mattoti

    Arguments et Variables

    BRED: oui Bred ça je sais que c'est logique, ce qui me paraissait moins logique c'est ça:
  6. mattoti

    Arguments et Variables

    Intéressant de connaître cet "effet de bord". Récemment je me suis aperçu qu'une variable V1 définie dans une fonction F1 en variable Locale, était "vue" dans la fonction F2 quand j'appelais F2 de F1. Alors que je croyais jusqu'ici que V1 serait de valeur Nil. Je ne suis peut être pas très clair dans mon explication, je m'explique: (defun F1 ( / V1 V2 result) (setq V1 25 V2 3) (setq result (F2 V2)) (princ (strcat (itoa V1) " * " (itoa V2) " = " (itoa result))) (princ) ) (defun F2 (Val) (* Val V1) ) Si je lance de la ligne de commande: (F1) > 25 * 3 = 75 La variable V1 de la fonction F2 est la variable locale de la fonction F1. Alors que si je tape: (F2 3) > ; erreur: type d'argument incorrect: numberp: nil La variable V1 n'existe plus hors de la fonction F1. Peut être que ça parait logique aux pros du lisp comme (gile) mais je pensais que V1 ne serait pas vu dans F2. ...
  7. Merci (gile), il faut mettre la valeur 256, je n'y avais pas pensé...
  8. Bonjour, Vendredi dernier j'ai reçu des plans d'un prestataire travaillant sur le même projet que moi, et certains blocs contiennent des attributs qui ne doivent pas apparaitre à l'impression. Étant donné qu'il y avait environ 500 blocs à modifier j'ai fait une petite routine toute simple en lisp: (defun dbe01 ( / ss cpteur ent entl typent attexist attribname) (setq ss (ssget "X" (list (cons 0 "INSERT") (cons 2 "XEMT*")))) (setq cpteur 0) (while (setq ent (ssname ss cpteur)) (setq entl (entget ent)) (setq typent (cdr (assoc 0 entl))) (setq attexist (cdr (assoc 66 entl))) (if (and (= typent "INSERT") (= attexist 1)) (progn (setq ent (entnext ent)) (setq entl (entget ent)) (while (= (cdr (assoc 0 entl)) "ATTRIB") (Setq attribname (cdr (assoc 2 entl))) (if (or (= attribname "$REPERE_TENANT") (= attribname "$FIL_TENANT") (= attribname "$REPERE_ABOUTISSANT") ) (progn (setq entl (subst (cons 8 "002 - NUMEROTATION - INVISBLE AU TRACAGE") (assoc 8 entl) entl)) (setq entl (subst (cons 62 250) (assoc 62 entl) entl)) (entmod entl) (entupd ent) ) ) (setq ent (entnext ent)) (setq entl (entget ent)) ) ) ) (setq cpteur (1+ cpteur)) ) (princ (strcat "\n\nNombre d'attribut déplacé dans le calque \"002 etc...\" = " (itoa cpteur))) (princ) Tout se passe bien, le seul point qui me chagrine c'est la ligne: (setq entl (subst (cons 62 250) (assoc 62 entl) entl)) Le code de groupe "62" étant la couleur de l'attribut, je le force à "250", c'est la couleur du calque où je le déplace, mais j'aimerais que mon attribut ait la couleur "Ducalque". En comparant les valeurs de groupe entre un attribut avec une couleur et un autre en couleur "Dulcalque", la seule différence est que dans le 2ème cas le code de groupe 62 n'existe pas. J'ai essayé de faire un: (setq entl (vl-remove (assoc 62 entl) entl)) mais ça n'a pas marché. J'ai aussi essayé de mettre la valeur "nil" pour le groupe "62" mais nada! Quelqu'un aurait-il une solution? Merci Mattoti
  9. mattoti

    Visual LISP, qu'es aquò ?

    Salut Tramber, J'évalue mes expressions directement dans AutoCAD lorsque je veux débugger mon code. C'est sans doute plus facile avec l'Editeur VLISP mais je me contente de cette méthode depuis quelques années. Mais promis, dès que j'aurais un peu de courage je me met à l'Editeur. D'ailleurs je viens d'essayer et j'ai eu le message suivant en chargeant mon code: ; avertissement: symbole identique trouvé avant et après / dans la liste d'arguments: FILTRECAO Erreur que je n'aurais sans doute jamais vu autrement. Oui j'imagine que quand on commence à utiliser l'Editeur on ne peut plus s'en passer. En fait je suis habitué à SCITE car je code parfois un peu en Common Lisp (CLISP) et je n'ai rien de mieux de SCITE pour cela...
  10. mattoti

    Visual LISP, qu'es aquò ?

    Merci (gile) pour ces intéressants détails concernant autolisp/Vlisp. Pour ma part, je n'ai jamais utilisé l'Editeur Visual Lisp, je devrai m'y mettre pour essayer. Je suis habitué à l'Editeur SCITE. Toute ma connaissance (ou presque) en LISP me vient de CADxp et je m'inspire beaucoup des exemples de codes que j'y trouve. En ce moment, pendant mes temps libres, je fais une petite "CAO élec.", avec des symboles "pères" et "fils" dont les renvois sont automatiques. Pour l'instant je me débrouille mais j'aurais peut-être besoin plus tard des lumières de pros de Lisp. Mat
×
×
  • 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é