Aller au contenu

Patrick_35

Membres
  • Compteur de contenus

    6 374
  • Inscription

  • Dernière visite

  • Jours gagnés

    30

Tout ce qui a été posté par Patrick_35

  1. Patrick_35

    Listing calques

    Ah oui, autant pour moi, je n'avais pas fait attention. @+
  2. Patrick_35

    Listing calques

    Salut Oui, sans lisp avec la commande -calque --> ? et des copier/coller d'autocad vers le bloc note, word, etc... @+
  3. Version simple, en pur autolisp. (defun c:exp(/ der ent dxf) (if (and (setq ent (entsel "\nSélectionnez un bloc : ")) (setq dxf (entget (car ent))) (= (cdr (assoc 0 dxf)) "INSERT") ) (progn (setq der (entlast)) (vl-cmdf "_.explode" (car ent)) (setq ent (entnext der)) (while ent (setq ent (entget ent)) (if (not (vl-position (cdr (assoc 0 ent)) '("ATTRIB" "SEQEND"))) (entmod (subst (cons 8 (getvar "clayer")) (assoc 8 ent) ent)) ) (setq ent (entnext (cdr (assoc -1 ent)))) ) ) ) (princ) ) Version sans if, avec utilisation du and et du or comme condition if. (defun c:exp(/ der ent dxf) (and (setq ent (entsel "\nSélectionnez un bloc : ")) (setq dxf (entget (car ent))) (= (cdr (assoc 0 dxf)) "INSERT") (progn (setq der (entlast)) (vl-cmdf "_.explode" (car ent)) (setq ent (entnext der)) (while ent (setq ent (entget ent)) (or (vl-position (cdr (assoc 0 ent)) '("ATTRIB" "SEQEND")) (entmod (subst (cons 8 (getvar "clayer")) (assoc 8 ent) ent)) ) (setq ent (entnext (cdr (assoc -1 ent)))) ) ) ) (princ) ) Version vlisp, car (vlax-invoke ent 'explode) retourne directement la liste des objets décomposés. C'est quand même plus simple. (defun c:exp(/ ent new) (and (setq ent (entsel "\nSélectionnez un bloc : ")) (setq ent (vlax-ename->vla-object (car ent))) (= (vla-get-objectname ent) "AcDbBlockReference") (progn (foreach new (vlax-invoke ent 'explode) (vla-put-layer new (getvar "clayer")) ) (vla-delete ent) ) ) (princ) ) ps : je t'ai laissé travailler avec le code dxf -2, mais regarde quand tu en as besoin. Perso, jamais. pps : L'idée de mattoti (et suggéré par La Lozère) d'utiliser le (ssget "_p") est excellente. J'avais complétement zappé cette solution. A force de faire du vlisp ;) @+
  4. Tout à fait, et aussi à une musique d'acid house (toute ma jeunesse). @+
  5. Bonjour Je lance un appel à notre administrateur pour qu'il ouvre enfin les forums concernant les versions 2019 d'Autocad. Je vois qu'il y a de plus en plus de messages concernant cette version et qu'ils sont postés dans le forum 2018 (ça va être simple de s'y retrouver). Cadmin, si tu nous lis. @+
  6. Je l'ai fait et de 3 manière afin de mieux expliquer. Je peux te les donner afin que tu vois ce qui a pu poser problème. @+
  7. Salut Le tout est de trouver :D @+
  8. Salut Oui, avec les fonctions type getkword, getstring, getint, etc... ps : ça avance pour la décomposition du bloc ? @+
  9. Salut Après une recherche. @+
  10. Oui, mais tu ne pourras plus exploiter 253. @+
  11. Justement, c'est pour trouver le 1er élément décomposé --> (entnext der) Pas pour l'utiliser vu qu'il a été décomposé. @+
  12. A part mon problème de délai (frappe clavier) et de la notification, je n'ai rien remarqué de spécial. La sélection en fenêtre ou capture fonctionne normalement (pour l'instant). @+
  13. Bonjour J'ai fait la mise à jour d'autocad avec l'update 19.1.1 (avec le lien donné par Lecrabe et aussi téléchargé pour mes collègues) Quand je regarde la fenêtre A propos d'Autocad 2019, je vois bien que j'ai Autocad 2019.1.1. Donc l'update a bien été installé. Sur l'onglet début, dans la notification, il est indiqué une mise à jour, donc je vais voir et l'update est en 2019.0.1 :blink: Il n'y aurait pas comme un léger bug ? @+
  14. Merci pour vos réponses. Oui, mais refaire la modif à chaque changement de version, même si on peut importer des profils, j'ai pris d'utiliser les alias par défaut. Cela me sert aussi quand je vais sur le poste d'un collègue. C'était déjà fait avant de poser la question, mais cela ne résolvait pas le problème. @+
  15. Salut C'est beaucoup plus simple que tu ne le pense. Tu prends un exemple et tu fais ton lisp au pas à pas, en effectuant chaque étape. Par exemple Je sélectionne mon bloc qui est le dernier objet de mon dessin. (setq ent (entlast)) J'indique que c'est aussi de dernier objet du dessin (setq der ent) Je décompose mon bloc (vl-cmdf "_.explode" ent) Je recherche le 1er objet de mon bloc décomposé (setq ent (entnext der)) Je fais une boucle pour voir tout les types d'objets décomposés (while ent (princ (strcat "\n" (cdr (assoc 0 (entget ent))))) (setq ent (entnext ent)) ) Et tu vas comprendre comment faire. @+
  16. Tu fais bien une 1ere manip en copiant (ctrl + c) puis coller (ctrl + v) ? @+
  17. Merci mon crabinou J'ai passé la variable INPUTSEARCHDELAY à 400 et ça fonctionne nickel. Tu es non seulement le maitre des Lisps (3000), mais aussi celui des variables 3 D :D @+
  18. Change le 5 3 en 7 1 comme l'indique BonusCad. Ou même 7 2 @+
  19. Bonjour Il y a un certain délai entre le moment où l'on tape au clavier une commande et la réponse d'autocad pour une liste de choix de différentes commandes. Y a-t-il une variable, un paramètre qui permette de changer ce délai. Car 9 fois sur 10, quand je tape cp pour copier, je me retrouve à faire un cercle. Comme le P est éloigné du C, soit je suis très rapide, soit j'attends la liste de choix pour saisir mon P et cela commence à me (beeeeeeep). @+
  20. Ben non, comme je te l'ai indiqué, pas d'expression diesel qui permette d'utiliser une partie du nom du calque. Je m'étais amusé à faire ceci. Insérer un champ --> Objet --> Sélection du texte --> Calque --> Puis un copier de la formule dans Expression de champ (ctrl + c). Annuler Insérer un champ --> Expression diesel --> $(substr,$( + le copier du champ (ctrl + v) + ),5,3) --> valider Graphiquement, ça marche, mais si tu édites ton texte, tu te rends compte que tu n'as que la partie de texte qui t'intéresse et que si tu changes de calque ton objet + regen, et bien cela ne fonctionne plus. Donc, aucun intérêt. @+
  21. La réponse va être rapide, non, pas en rtext. Par contre, tu peux utiliser les champs, mais pas de formule diesel dans ce cas. @+
  22. Patrick_35

    Qui ne tente rien…

    Salut Clique sur la flèche bas à droite du type de fichiers pour choisir l'extension .xlsx @+
  23. Alors, tu ne décomposes que le 1er. Pas besoin de tester si c'est un bloc imbriqué. Pour le SEQEND, au clavier Sélection d'un bloc (setq ent (car (entsel))) Codes dxf (entget ent) Entité suivante (setq ent (entnext ent)) Codes dxf --> Attribut (entget ent) Entité suivante (setq ent (entnext ent)) Codes dxf --> Attribut (entget ent) ... Entité suivante (setq ent (entnext ent)) Codes dxf --> SEQEND (entget ent) Autre exemple (setq ent (car (entsel))) (setq ent (entget ent)) (while (/= (cdr (assoc 0 ent)) "SEQEND") (princ (strcat "\n" (cdr (assoc 0 ent)))) (setq ent (entget (entnext (cdr (assoc -1 ent))))) ) @+
  24. Le SEQEND est là pour indiquer la fin des attributs. Pour ce qui est des blocs imbriqués, il suffit simplement de les décomposer au fur et a mesure que tu les trouvent. Les objets décomposés seront ajoutés à la suite du dernier et comme tu es dans une boucle. Par contre, dans ce cas, attention aux objets non décomposables (boucle infinie). @+
  25. Salut La formule est bonne, il faut juste, quand tu lances la commande rtext, choisir l'option D pour diesel. @+
×
×
  • 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é