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

    Modifier des blocs

    On approche de la perfection ;) @+
  2. Salut En faisant un jeu de sélection (setq js (ssadd)) (command "calque....") (command "_pline....") (setq js (ssadd (entlast) js)) ..... ..... (command "_.hatch" "" "" "" js) @+
  3. Si tu l'as compris, maintenant tu es capable de le créer ;) C'est ce qui permet de détourner une commande ou d'avoir des liaisons dynamiques dans le dessin. Par exemple, j'associe un texte à une polyligne fermé pour avoir sa surface. dès que je modifie ma poly avec les grips, le texte se met à jour automatiquement; Un exemple ici Pour ce qui est de commandes, tu as un exemple ici
  4. Avec l'aide Voici un exemple simple Fichier MIM.DCL // =================================================== // // MIM.DCL V1.00 // // Copyright (C) Patrick_35 // // =================================================== mim : dialog { key = "titre"; fixed_width = true; alignment = centered; is_cancel = true; width = 60; : popup_list {label= "Origine"; key = "mim";} spacer; : list_box {label= "Destination" ; key="dest"; height = 10; multiple_select=true;} spacer; ok_cancel; } Et le fichier MIM.LSP ;;;=================================================== ;;; ;;; MIM.LSP V1.00 ;;; ;;; Changer l'imprimante des Présentations ;;; ;;; Copyright (C) Patrick_35 ;;; ;;;=================================================== (defun c:mim(/ s) ;;;--------------------------------------------------------------- ;;; ;;; Gestion des erreurs ;;; ;;;--------------------------------------------------------------- (defun *errmim* (msg) (if (/= msg "Function cancelled") (if (= msg "quit / exit abort") (princ) (princ (strcat "\nErreur : " msg)) ) (princ) ) (setq *error* s) (vla-endundomark (vla-get-activedocument (vlax-get-acad-object))) (princ) ) ;;;--------------------------------------------------------------- ;;; ;;; Routine principale ;;; ;;;--------------------------------------------------------------- (defun multiplie_pre(/ config doc init_mim liste_lay n position positiondests resultat tra) (setq init_mim (load_dialog (findfile "mim.dcl"))) (setq liste_lay (layoutlist) n 0 position "0" positiondest "0" doc (vla-get-activedocument (vlax-get-acad-object))) (setq tra (vlax-safearray->list (vlax-variant-value (vla-getplotdevicenames (vla-get-layout (vla-get-modelspace doc)))))) (if (vl-position "Aucun" tra) (setq tra (vl-remove "Aucun" tra)) ) (if (vl-position "Model" liste_lay) (setq liste_lay (vl-remove "Model" liste_lay)) ) (new_dialog "mim" init_mim "") (start_list "mim") (mapcar 'add_list tra) (end_list) (start_list "dest") (mapcar 'add_list liste_lay) (end_list) (set_tile "titre" "Sélection Imprimante V1.00") (set_tile "mim" position) (mode_tile "mim" 2) (while (and (/= resultat 1)(/= resultat 0)) (action_tile "mim" "(setq position $value)") (action_tile "dest" "(setq positiondest $value)") (action_tile "accept" "(done_dialog 1)") (action_tile "cancel" "(done_dialog 0)") (setq resultat (start_dialog)) ) (unload_dialog init_mim) (if (eq resultat 1) (while (not (eq positiondest "")) (setq n (read positiondest)) (vlax-for lay (vla-get-layouts doc) (if (eq (nth n liste_lay) (vla-get-name lay)) (progn (vla-put-ConfigName lay (nth (atoi position) tra)) (princ (strcat "\nPrésentation " (vla-get-name lay) " Configurée avec " (nth (atoi position) tra))) ) ) ) (setq positiondest (substr positiondest (+ 2 (strlen (itoa n))) (strlen positiondest))) ) ) ) ;;;--------------------------------------------------------------- ;;; ;;; Routine de lancement ;;; ;;;--------------------------------------------------------------- (vl-load-com) (setq s *error*) (setq *error* *errmim*) (vla-startundomark (vla-get-activedocument (vlax-get-acad-object))) (multiplie_pre) (vla-endundomark (vla-get-activedocument (vlax-get-acad-object))) (setq *error* s) (princ) ) (princ "\nMIM.LSP chargé. Tapez MIM pour l'exécuter") (princ)
  5. J'auroi plutôt écrit cette partie comme ceci (if (not (setq Ech (vlax-ldata-get "Phalene" "Echel1"))) (if (setq Ech (getreal "Échelle du dessin (1/")) (vlax-ldata-put "Phalene" "Echel1" Ech) ) ) (if Ech (princ (strcat "Echelle = 1/" (rtos Ech))) ) (princ) au lieu de (setq Ech (vlax-ldata-get "Phalene" "Echel1")) (if (= Ech nil) (progn (setq Ech (getreal "Échelle du dessin (1/")) (vlax-ldata-put "Phalene" "Echel1" Ech) (princ (strcat "Echelle = 1/" (vlax-ldata-get "Phalene" "Echel1"))) ) ) [Edité le 22/5/2006 par Patrick_35]
  6. Patrick_35

    Xref et chemin relatif

    Oui @+
  7. Pour la modifier, rien de plus simple, il suffit de la réecrire Le nom de clés doit être illimitées. Je n'ai jamais testé. Je fais des listes avec des objets vla (environ 100 vla par liste) sur une dizaine de listes et ça fonctionne bien Et justement ce qui est intérressant, c'est que c'est inscrit dans le dwg pour pouvoir les réutiliser ensuite. Je m'en sert surtout pour mes réacteurs, de manière à ce que ce q'ils soient toujours actifs quand on ouvre son dessin @+
  8. Patrick_35

    Xref et chemin relatif

    Salut Didier Ca fait plaisir de te revoir de nouveau Tes jeux de mots à deux balles commencaient à nous manquer @+
  9. Salut Si c'es pour conserver une valeur dans un dessin sans passer par les blocs, il est possible de se servir des vlax-ldata Donc pour conserver la valeur 200, je peux faire (vlax-ldata-put "Mon_appli" "Ma_cle" 200) Pour lire ma valeur (vlax-ldata-get "Mon_appli" "Ma_cle") Pour l'effacer (vlax-ldata-delete "Mon_appli" "Ma_cle") Et encoe pour voir la liste de toutes mes valeurs avec leurs ckes (vlax-ldata-list "Mon_appli") @+
  10. Patrick_35

    Xref et chemin relatif

    Salut Oui Le chemin relatif se fait par rapport à l'emplacment du dessin appelant sur le disque Un rep1\mon_xref.dwg veux dire que le dessin doit regarder dans le sous répertoire rep1 un ..\rep1\mon xref.dwg veux dire que le dessin doit remonter d'un cran et ensuite dans le répertoire rep1 @+
  11. Salut Ok, à cette adresse
  12. Patrick_35

    vlr-reaction-set

    Merci beaucoup BTO J'avais bien pensé au vlr-commandended de l'editor-reactor mais passant par la fin de la commande "ATTEDIT" et non en regardant la liste modifiée, ce qui est loin d'être idiot et en plus j'utilise :vlr-modified et non le :vlr-subObjModified vu que je n'utilisais pas l'editor-reactor Mais cela me pose une question. Si on modifie un attribut qui appartient à un object-reactor par le biais d'un lisp ou en vba, le réacteur va réagir ? Et tant que j'y suis. J'ai constaté quand utilisant le _undo avec des réacteurs, Autocad réagissait parfois mal. @+ ps : Bonne vacances
  13. Patrick_35

    vlr-reaction-set

    Bonjour BTO et merci de ta réponse Je lie un ensemble d'objet (dans ce cas des attributs) en vlr-reactors-object et que je conserve aussi en vlax-ldata (et pour faire au plus simple, je ne fais dans mes tests, qu'une seul chaîne d'"attributs) Je modifie un attribut avec attedit (donc que du texte en modif), mon vlr-reactor-object réagit et me renvoi à ma routine et ce que je constate, c'est que cette routine est appelée plusieurs fois ??? Si je décortique un peu plus en profondeur le réacteur fait un appel à ma routine avec comme argument l'objet édité, le réacteur (que l’on peut encore décortiquer en vlr-data et vlr-owners). Je vérifie mon vlr-owners avec mon vlax-ldata et je constate que ça correspond parfaitement (sauf que la liste est inversée, mais bon…) Je ne comprends pas quand je modifie dans ma routine le texte d’un attribut faisant partie du vlr-reactor-object , je me retrouve avec une erreur automation : Aucune description.... Je peux l’inhiber avec un vl-catch-all-apply, mais ça ne me satisfait qu’à moitié En espérant être clair @+
  14. Salut Si tu as les express tools d'installé (if (member "acetutil.arx" (arx)) (setq rep (acet-ui-pickdir "Message fenêtre répertoire" "C:\\" "Message Titre")) (setq rep (getstring T "\nRépertoire : ")) ) @+
  15. Patrick_35

    explode...

    Juste un point de détail, c'est le nom des variables qui pourraient être un peut plus clair pour la compréhention du lisp, sinon, rien à redire @+
  16. Ah oui, c'est exact, c'"est l'inverse, j'ai confondu avec extattr @+
  17. Salut Oui, c'est faisable et par plusieurs méthodes La plus simple avec attextr ou une autre plus compliqué mais nettement plus souple avec ce sujet et celui-ci Et si tu fais une recherche dans les forums, tu trouveras ton bonheur ps : Inutile de crier, on n'est pas sourd et on est entre des gens calmes ;) @+ [Edité le 18/5/2006 par Patrick_35]
  18. Non, la sélection va se faire sur tous les blocs dont le nom commence par "List*" Si tu cherches les attributs ayant comme Etiquette "List*", il faut balayer la table des blocs pour retrouver le nom des blocs ou on peut retrouver "List*" et ensuite faire un jeu de sélection dans le dessin de ces blocs que l'on re-balaye pour faire ce que tu désires A te lire, je ne saisi pas tout. Peut tu redonner une explication plus clair de ce que tu souhaites faire exactement :casstet: @+
  19. Patrick_35

    explode...

    Salut Pour parcourir une liste, un (foreach toto b .... ou toto prend un élément de la liste un par un Sinon, comme tu es en vla, un (vla-put-layer objet-vla "MON_CALQUE") permet de changer le calque de ton objet @+
  20. Patrick_35

    Besoin correction SVP

    Ah oui, au fait, la routine que je te donne décompose le bloc ainsi que tous les blocs qui peuvent être imbriqué dedans @+
  21. Patrick_35

    Besoin correction SVP

    Ah oui, c'est un peu plus compliqué (defun InsBlocdecl(pt nom rot / a b c d) (setq a (vla-InsertBlock (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))) (vlax-3d-point pt) nom 1 1 1 rot) b T) (setq b (vlax-safearray->list (vlax-variant-value (vla-explode a)))) (vla-delete a) (while b (setq d nil) (foreach n b (if (eq (vla-get-objectname n) "AcDbBlockReference") (progn (setq c (vlax-safearray->list (vlax-variant-value (vla-explode n))) d (append d c)) (vla-delete n) ) ) ) (setq b d) ) (princ) ) La variable qu'a donné Tramber sert pour décomposer un bloc qui n'a pas une échelle X uniforme avec l'échelle Y @+
  22. Les pyramides me rappelle cette citation de Will Cuppy - La forme même des pyramides d'Egypte montre que déjà les ouvriers avaient tendance à en faire de moins en moins. @+
  23. Patrick_35

    Besoin correction SVP

    Encore mieux, avec un (command "-inserer" (strcat "*" chem) pt "1" "1" Rot) c'est décomposé, ou en vla (vla-explode (vla-insertblock (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))) (vlax-3d-point pt) chem 1 1 1 rot)) @+
  24. J'ai déjà fait un comparatif entre cette méthode et celle d'autodesk (dont le lisp s'appelait julian il me semble) et que je trouvais comme résultat une seconde d'écart. C'est surement le résultat de toutes les opérations avec leurs précisions plus ou moins grandes @+
  25. En un peu plus simple pour la date (setq ma_date (menucmd "M=$(edtime,$(getvar,date),DD/MO/YYYY HH:MM)")) @+
×
×
  • 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é