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

    *Paper_Space(n)

    Salut La plus simple en lisp (member "A4-Gaines" (layoutlist)) Retourne nil s'il n'existe pas En vlisp (vl-catch-all-error-p (vl-catch-all-apply 'vla-item (list (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object))) "A4-Gaines"))) Retourne T s'il n'existe pas. @+
  2. Salut Regarde la variable SDI @+
  3. Salut (gile) Sujet très interressant, mais je souhaiterai apporter une petite précision. On peut très bien utiliser (vlax-get (vlax-get-or-create-object "Excel.Application") 'Workbooks) à la place d'un vlax-get-property. Cela dépend du nombre d'arguments nécessaires. Idem en ce qui concerne vlax-invoke. Un exemple pour afficher un message via une boite de dialogue (defun MsgBox (Titre Bouttons Message / Reponse WshShell) (acad-push-dbmod) (setq WshShell (vlax-create-object "WScript.Shell")) (setq Reponse (vlax-invoke WshShell 'Popup Message 0 Titre (itoa Bouttons))) (vlax-release-object WshShell) (acad-pop-dbmod) Reponse ) @+
  4. C'est déjà le cas en Bretagne, depuis ce matin. Et comme je suis venue bosser en HD, c'est que du bonheur ce soir :D Mais de rien @+
  5. Ce n'est pas le plus compliqué ;) Il faudrait construire une base (liste) pour ensuite comparer si les points ont changés. Tu peux utiliser les datas des réacteurs par exemple. C'est le deuxième argument dans le réacteur, après la liste (valeur nil) et le troisième dans la routine appelé par le réacteur (variable data). Tu as plusieurs fonctions sympa qui accompagne les réacteurs vlr-owners et ses deux copains pour gérer la liste d'objets à intégrer au réacteur vlr-data et son ami pour gérer les datas du réacteur Pas besoin, avec le filtre de sélection du calque Ben oui, car si tu utilise Pedit ou des lisps de (gile), tu fais comment ? C'est un très long WE, ce que j'appelle des vacances ;) C'est l'occasion ou jamais ;) ps : Je viens de voir que (gile) viens de répondre. Pas mal l'idée d'utiliser la modification pour voir si un objet a été effacé. @+
  6. Salut Tramber (avec le r ^^) L'avantage d'utiliser vlr-object-reactor et aussi de voir s'il a été effacé (comme demandé lenoil) et si un lisp n'est pas intervenu, ce que l'on ne voit pas en utilisant vlr-editor-reactor ou vlr-command-reactor pour les grips Par exemple (defun patrick:alerte_objet_effacer (obj rea data) (princ "\nL'objet ") (princ obj) (princ " a été effacé.") (princ) ) (and (ssget "x" (list (cons 8 "Mon_Calque_à_Contrôler"))) (progn (vlax-for ent (setq sel (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object)))) (setq lst (cons ent lst)) ) (vla-delete sel) (setq patrick_reacteur_effacer (vlr-object-reactor lst nil (list (cons :vlr-erased (function patrick:alerte_objet_effacer))))) ) ) Pour effacer le réacteur (vlr-remove patrick_reacteur_effacer) ps : Je suis comme toi, cela fait un moment que je n'ai pas fait de réacteurs
  7. D'autant plus qu'on ne se limite plus à Autocad et que l'on peut se faire plaisir avec les APIs, mais bon, je suis un peu comme Patrick, l'envie est là, le temps non. @+
  8. Salut Je ne pense pas que vlr-acdb-reactor soit le plus approprié, car si tu effaces un objet, il est ensuite impossible de connaître ses propriétés (objet effacé) Le plus simple a mon sens est d'utiliser vlr-object-reactor. @+
  9. J'aimerai bien, mais il faut être célibataire pour ça :(rires forts): @+
  10. Salut (gile) J'ai parcouru vite fait le tuto. Que dire sinon bravo, c'est clair et quel boulot de rédaction. @+
  11. Patrick_35

    Routine Cartouche

    C'est dans l'aide pour les fonctions vl-*, vlr-*, vlax-* Pour les fonctions vla-*, c'est dans l'aide vba, et pour retrouver les fonctions, avec l'explorateur (F2) dans l'éditeur vba (comme expliqué dans les liens cités) @+
  12. Patrick_35

    Edition d'attributs

    Pour un, je suis d'accord, mais je pensais que tu voulais propager une valeur ? Non, tu as la possibilité de choisir les blocs auxquels tu veux propager ta valeur. @+
  13. Patrick_35

    Edition d'attributs

    Salut Et avec MAT ? @+
  14. C'est bien ce que je disais, en son temp ;) Je viens de vérifier et cela fonctionne avec Excel 2003 max. Il faudrait que je reprenne le lisp, mais le temps me manque :( @+
  15. Ah oui, tu as raison, je n'y avais pas songé Mais cela me parait tellement logique par rapport à la demande de ne traiter que les blocs. Cela va venir. C'est juste une logique à comprendre. A la limite, le lisp est plus complexe à saisir que le visual. Intégrer les mapcar, apply, les codes dxf et j'en passe n'est pas une chose aisé pour un débutant. Je te rejoins complètement B) @+
  16. Salut Pas besoin de tester si la fonction existe, elle a toujours été présente Et une précision (mapcar 'vla-get-TextString (vlax-invoke obj 'GetAttributes)) Fonctionne aussi avec des blocs sans attributs avec comme résultat nil (logique) @+
  17. Patrick_35

    Routine Cartouche

    Salut J'avais indiqué ici ou là une marche à suivre avec l'aide @+
  18. Salut (defun c:atxt(/ ent js n new) (and (setq n 0 js (ssget "x" (list (cons 0 "ATTDEF"))) ) (while (setq ent (ssname js n)) (setq ent (entget ent) new (append (list (cons 0 "TEXT") (cons 1 (cdr (assoc 2 ent))) (cons 73 (cdr (assoc 74 ent))) ) (vl-remove-if '(lambda(x)(member (car x) '(-1 0 1 2 3 5 70 73 74 100 280 330))) ent) ) ) (entmake new) (entdel (cdr (assoc -1 ent))) (and (not (assoc 62 ent)) (assoc 62 (setq ent (entget (entlast)))) (setq ent (subst (cons 62 256) (assoc 62 ent) ent)) (entmod ent) ) (setq n (1+ n)) ) ) (princ (strcat "\nConvertion de " (itoa n) " attribut(s) en texte(s).")) (princ) ) @+
  19. Salut J'avais fait quelque chose en son temps. @+
  20. Salut La mienne qui ressemble beaucoup à celle de bryce (defun lsubst (new old lst) (mapcar '(lambda(a / B) (if (and (setq b (vl-position a old)) (< b (length new)) ) (nth b new) a ) ) lst ) ) Et une autre sans la fonction vl-position (defun lsubst (new old lst) (mapcar '(lambda(a / B) (if (and (member a old) (< (setq b (- (length old) (length (member a old)))) (length new)) ) (nth b new) a ) ) lst ) ) @+
  21. Salut C'est certain, très belle mécanique et animation. Mais qu'en est-il de cette fameuse abrogation des 100 ch ? @+
  22. Patrick_35

    Routine Cartouche

    Tu peux numéroter tes onglets avec RON par exemple et indiquer dans le cartouche avec un champ avec la variable CTAB ps : Toutes mes amitiés lili :D Et bonnes fêtes à tous @+
  23. Patrick_35

    Routine Cartouche

    Salut Tu peux utiliser les champs avec les variables d'autocad comme CTAB ps : ton lien est invisible ;) @+
  24. Salut Quelque chose dans ce style ? (defun c:alt(/ blo doc ent sui) (vl-load-com) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (while (setq ent (entsel "\nChoisissez le point nodal : ")) (and (setq ent (entget (car ent))) (eq (cdr (assoc 0 ent)) "POINT") (while (and (not sui) (setq blo (entsel "\nChoisissez le bloc associé : "))) (and (setq blo (vlax-ename->vla-object (car blo))) (eq (vla-get-objectname blo) "AcDbBlockReference") (progn (setq sui nil) (foreach att (vlax-invoke blo 'getattributes) (and (eq (strcase (vla-get-tagstring att)) "ALTITUDE") (progn (vla-put-textstring att (cadddr (assoc 10 ent))) (setq sui T) ) ) ) (or sui (princ "\nBloc sans l'étiquette \"ALTITUDE\"")) ) ) ) ) ) (vla-endundomark doc) (princ) ) @+ ps : le temps d'écrire le lisp et la réponse de Didier arrive ;)
  25. Salut Tu souhaites connaitre l'ObjectId de la fenêtre pour être en cohérence avec ce message ? (vla-get-objectid (vlax-ename->vla-object ValVP)) ps : je pense comprendre que tu souhaites ressortir toutes les valeurs forcées dans chaque fenêtre (calque gelé, couleur autre, etc...) ? @+
×
×
  • 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é