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

    appeler du lisp en vba

    Voir ce sujet @+
  2. Patrick_35

    Devinettes

    Je vois que Pako est plus pressé que tout le monde, et si je pose une devinette, j'ai forcement la réponse, sinon ce n'est pas la peine soit a l'age de blanche soit b le nombre d'année depuis l'époque évoquée Antoine a 21 ans : il a trois fois l'âge qu'avait sa soeur Blanche se traduit par : 21 = 3 * (a - b) donc en simplifiant 7 = a - b Au moment ou il avait l'âge qu'elle a actuellement se traduit par : 21 - b = a alors b = 21 - a Donc si on remplace b dans la première équation : 7 = a - (21 - a) 7 = 2 * a - 21 2 * a = 21 + 7 = 28 et le résultat a = 14
  3. Patrick_35

    protection d\'un plan?

    Non, pas une guerre, c'est selon la fibre de chacun Pour oli553 Est-il possible de faire plusieurs pages dans un dwf comme dans un pdf (je pense notamment aux schémas d'armoire) @+
  4. Ah, merci Patrick, une commande que je ne connais pas. Vivement que je passe à une version supérieur @+
  5. Patrick_35

    protection d\'un plan?

    La solution que j'utilise plutôt que d'envoyer un dwg, c'est de faire parvenir un pdf @+
  6. Deux sujets que devraient t'intéresser ICI et ICI Sinon, il suffit de faire une recherche avec vbaload ou vbarun @+
  7. Patrick_35

    FORMATION

    Certains font des projets pour l’avenir @+
  8. Qu’entends tu par convertisseur de calque ? ? ? @+
  9. Bonjour à tous Voila un bout de code qui permet de faire un facteur d'échelle fixe lors de l'insertion d'un bloc Il fonctionne à merveille, mais lorsque que j'ouvre un nouveau dessin, ce réacteur est toujours actif, et la variable qui le détermine est passé à nil, ce qui est normal pour un nouveau dessin. Comment faire pour savoir si mon réacteur est actif afin d’éviter de le lancer une deuxième fois, ce qui à pour conséquence qu’il s’additionne à lui même :mad: Il y a bien la possibilité de faire un (vlr-remove-all) mais ça supprime tous les réacteurs présents, ce que je voudrais éviter. Serge a bien donné une explication sur ce sujet, mais je n'arrive pas à la comprendre :casstet: @+ (defun reacteur_echelle_inserer(rea cde / ent) (if (= (car cde) "INSERT") (progn (setq ent (entget (entlast))) (setq ent (subst (cons 41 (* (cdr (assoc 41 ent)) echelle_inserer)) (assoc 41 ent) ent)) (setq ent (subst (cons 42 (* (cdr (assoc 42 ent)) echelle_inserer)) (assoc 42 ent) ent)) (setq ent (subst (cons 43 (* (cdr (assoc 43 ent)) echelle_inserer)) (assoc 43 ent) ent)) (entmod ent) (entupd (cdr (assoc -1 ent))) ) ) (princ) ) (vl-load-com) (if reacteur_echelle (vlr-remove reacteur_echelle) ) (if (setq echelle_inserer (getreal "Facteur d'échelle pour les blocs : ")) (setq reacteur_echelle (vlr-command-reactor nil '((:vlr-commandended . reacteur_echelle_inserer))) ) (princ)
  10. Tu as le lisp Bibles qui permet cela. Il est en téléchargement membres @+
  11. Patrick_35

    Légende automatique

    Un truc vite fait pour compter des blocs sur un calque "MACOUCHE" (setq i (tblnext "block" t)) ; parcourir la table des blocs (while i (if (= (logand (cdr (assoc 70 i)) 4) 0) ; trier les blocs dans les xrefs (progn (setq n (ssget "x" (list (cons 8 "MACOUCHE") (assoc 2 i)))) (if n (princ (strcat "\nIl y a " (itoa (sslength n)) " " (cdr (assoc 2 i)) " dans le dessin")) ) ) ) (setq i (tblnext "block")) ) (princ) @+ ps : le plus dur est fait, il ne reste plus qu'à l'adapter ;)
  12. Patrick_35

    Légende automatique

    Tout est faisable, il faut juste bien cadrer ce que l'on veut faire 1) Quels blocs (pas ceux de l'archi ou du plombier par exemple) 2) Où inserer la légende, sur quelle modèle et avec quels éléments (Symbole, Qt, Désignation, référence, etc...) 3) Pour faire au plus simple, je ne lance que la commande qui permet de créer la légende 4) Ce n'est valable que sur une version pleine ou une LT avec additif Ce peut être très complexe ou relativement simple à faire.Il faut juste bien définir ce que l'on veux faire, et de plus, c'est une exellente occasion pour se mettre au lisp @+
  13. Un sujet que tu devrais lire @+
  14. Encore faut-il être dans le bon répertoire @+
  15. Patrick_35

    Code DXF

    Ah exact, tu as gagné 10 pts pour ce bug ;) Le lisp n'est pas ma langue maternelle mais j'ai commencé sur autocad V12, ce qui fait presque 9 ans déjà. Et comme j'ai développé plein d'outils pour mon boulot, ça aide, malgré que ce ne soit pas mon métier. J'en apprends tous les jours, même avec tes lisps comme la fonction sssetfirst dont je ne me suis jamais servi. Il est toujours utile de regarder ce que font les autres, quelle est leur logique et de quelles fonctions ils se servent. Ca rafraîchi parfois la mémoire ou ça permet de faire plus court et plus simple. :cool: Tu sais, une fois que tu as bien compris comment fonctionne la programmation, le reste n'est plus qu'un jeu et une question d'interprétation. Un ordinateur est bête, si on lui dit un plus un, il répond deux. Maintenant, si le résultat est de trois, c'est qu'il y a un bug, une chose qui n'a pas été comprise, ou pire encore, un virus qui met son grain de sel. :mad2: @+
  16. Parfois, il y a des erreurs dont on ne comprend pas d’où elles viennent. On a beau chercher, se tuer les yeux devant l’écran et rien, que nenni. Donc on laisse tomber, une bonne nuit et ensuite on ré-attaque le lendemain et oups... en à peine cinq minutes, on trouve. Comme quoi… http://smileys.smileycentral.com/cat/36/36_19_3.gif @+
  17. Si ça peut te faire plaisir Ludwig, ton (ssget "I" '((8 . "*D$*"))) fonctionne très bien sur un autocad 2000 sans Autodesk Architectural Desktop Et je viens de voir une erreur, ce n'est pas _pselect mais _qselect @+
  18. Pour Rebcao (sssetfirst sel1 sel2) sssetfirst est une fonction qui permet d'afficher les grips d'une sélection (sel1) et aussi de les mettrent en surbrillance (sel2) @+
  19. Patrick_35

    Devinettes

    Je vois que tu as corrigé ta réponse Pako et que tu as bien relu l'exposé, mais ce qui est le plus intéressant dans tout problème, ce n'est pas la solution mais la démonstration Je laisse un peu de temps volontairement afin que l'on puisse chercher un peu @+
  20. http://smileys.smileycentral.com/cat/36/36_1_55.gif Bravo, rien de plus plaisant que de comprendre, de réussir et de voir fonctionner correctement son lisp @+
  21. Patrick_35

    Code DXF

    Salut Déjà pour solutionner la couleur dubloc (if (not (assoc 62 n)) (setq n (append n (list (cons 60 0)))) (if (/= (cdr (assoc 62 n)) 0) (setq n (subst (cons 62 0) (assoc 62 n) n)) ) ) (entmod n) Ensuite, pour ce qui est des attibuts Si le code 66 pour un bloc est présent, c'est que des attributs suivent Dand ce cas par exemple (setq sel (ssget "x" (list (cons 0 "INSERT")))) (setq j 0) (while (ssname sel j) (setq n (entget (ssname sel j) (if (assoc 66 n) (progn (setq i (entget (entnext (cdr (assoc -1 n))))) (while (/= (cdr (assoc 0 i)) "SEQEND") (setq i (subst (assoc 8 n) (assoc 8 i) i)) ; mettre l'attribut sur le même calque que celui du bloc par exemple (entmod i) ; modifier l'entité (entupd (cdr (assoc -1 i))) ; mettre à jour sur l'écran l'entité (setq i (entget (entnext (cdr (assoc -1 i))))) ) ) ) (setq j (1+ j)) ) Nb : la sélection doit se faire cette fois ci dans tout le dessin et non plus dans la table des blocs. Ce n'est valable que pour des blocs qui sont déjà insérés dans le dessin @+
  22. Patrick_35

    Code DXF

    Si le code 62 n'existe pas, cela veut dire que la couleur est ducalque. Si on souhaite la changer en dublock, il faut lui ajouter (setq n (append n (cons 62 "Byblock"))) @+
  23. Peut-être ce lisp @+
  24. J'ai un peu modifié ton programme tout en essayant de garder ton principe de fonctionnement (defun c:de(/ layouts jeu n j cmd) (setq cmd (getvar "cmdecho")) (setvar "cmdecho" 0) (command "_.undo" "_group") (setq layouts (layoutlist)) (if (vl-position "Model" layouts) (setq layouts (vl-remove "Model" layouts)) ) (foreach n layouts (while (setq jeu (ssget "x" (list (cons 0 "INSERT") (cons 410 n)))) (setq j 0) (command "_.layout" "_set" n) (while (ssname jeu j) (command "_explode" (ssname jeu j)) (setq j (1+ j)) ) ) ) (command "_.undo" "_end") (setvar "cmdecho" cmd) (princ) ) @+ [Edité le 19/1/2005 par Patrick_35]
  25. Patrick_35

    Devinettes

    Ce n'est pas si simple que ça Pako, relis bien l'exposé @+
×
×
  • 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é