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. Sans vouloir te vexer, je m'en doutais et je l'ai écrit de manière à ce que tu puisses l'utiliser sans difficulté. @+
  2. Salut Essaye de cette manière ;;;--------------------------------------------------------------- ;;; ;;; Accéder a un fichier dessin ;;; ;;;--------------------------------------------------------------- (defun Ouvrir_dessin_dbx(dwg / dbx) (if (< (atoi (substr (getvar "ACADVER") 1 2)) 16) (setq dbx (vlax-create-object "ObjectDBX.AxDbDocument")) (setq dbx (vlax-create-object (strcat "ObjectDBX.AxDbDocument." (substr (getvar "ACADVER") 1 2)))) ) (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-open (list dbx dwg))) nil dbx ) ) (setq dbx (Ouvrir_dessin_dbx "C:\\Test\\Mon_Dessin.dwg")) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (setq new (vla-CopyObjects Dbx (vlax-safearray-fill (vlax-make-safearray vlax-vbObject '(0 . 0)) (list (vla-item (vla-get-layouts dbx) "Mon_Onglet")) ) (vla-get-layouts doc) ) ) (vla-put-activelayout doc (car (vlax-safearray->list (vlax-variant-value new)))) (vlax-release-object dbx) @+ ps : Ne pas oublier de remplacer "C:\\Test\\Mon_Dessin.dwg" et "Mon_Onglet" dans le lisp
  3. Salut Avec le lisp PRE, tu devrais trouver ton bonheur. A partir d'un cartouche, j'extrais les coordonnées (boundingbox) et je créé la fenêtre en EP. Tu peux extrapoler pour ta polyligne. @+
  4. Patrick_35

    Nouveau Site Perso

    Bonjour Utiliser les réacteurs est relativement simple. Le plus compliqué est d'éviter les effets de bords. Il faut bien avoir l'utilité d'utiliser ce type de fonction, car cela prend des ressources et bien souvent, une simple fonction qui traite l'ensemble du dessin suffit amplement. Tu as ce message qui utilise la synthèse vocale de l'ordinateur qui dit ce que tu fais. @+
  5. Patrick_35

    Nouveau Site Perso

    +1 avec (gile) Le plus simple est d'expliquer la logique, comment on retrouve ses petits. Et l'aide en ligne sur les API est le moyen le plus simple. Reste à le traduire en lisp, ce qui n'est pas toujours le plus facile. Mais avec de la persévérance et Cadxp :D @+
  6. Patrick_35

    Nouveau Site Perso

    Salut Didier Bon courage avec les fonctions vl. L'avantage du vlax-get-or-create-object par rapport au vlax-create-object, c'est que si l'application est déjà lancée, tu te connectes à elle, sinon, tu la lances. Si tu fais deux (vlax-create-object "Excel.Application"), regardes dans le gestionnaire des tâches et tu trouveras deux Excel. Autre chose. Les fonctions vla... et vlax... sont très proches. Je vais prendre un exemple très simple. Une ligne par exemple. (setq obj (vlax-ename->vla-object (car (entsel)))) --> #<VLA-OBJECT IAcadLine 000001d44ba35878 Un (vlax-dump-object obj T) retourne Pour les propriétés : Un vla-get... récupère des valeurs Un vla-put... change des valeurs Par exemple, pour connaitre le calque de l'objet (vla-get-layer obj) --> "0" Pour changer le calque de l'objet, à condition que celui-ci existe (vla-put-layer obj "Nouveau") Il est aussi possible d'utiliser les vlax-get et vlax-put (vlax-get obj 'layer) --> "0" (vlax-put obj 'layer "Nouveau") A ce stade, quel différence entre vla-get et vlax-get, ou vla-put et vlax-put ? Prenons par exemple la propriété StartPoint (vla-get-StartPoint obj) --> #<variant 8197 ...> (vlax-get obj 'StartPoint) --> (2974.0 1294.85 0.0) Et c'est le même principe avec les méthodes Par exemple pour copier la ligne (setq new (vla-copy obj)) et (setq new (vlax-invoke obj 'copy)) Et pour déplacer la copie (vla-move new (vlax-3d-point '(0.0 0.0 0.0)) (vlax-3d-point '(100.0 100.0 0.0))) (vlax-invoke new 'move '(0.0 0.0 0.0) '(100.0 100.0 0.0)) A chacun son style. Tu noteras au passage qu'on mémorise dans une variable la copie. Une chose encore. On a (vlax-get-property...) versus (vlax-get...) et (vlax-invoke...) versus (vlax-invoke-method...) C'est dû aux nombre d'arguments qui passent bien dans un premier cas, et pas toujours dans l'autre. C'est surtout quand tu travailles avec des applications tierces. ps : la logique et les fonctions vla avec le vba sont très, très proches. @+
  7. Patrick_35

    LISP pour Xref

    Tu peux m'envoyer un exemple ? Pour le resto, c'est quand tu veux :D @+
  8. Patrick_35

    LISP pour Xref

    Le passage à la v1.12 est juste l'indiquation du nombre de chemins modifiés. Justement, j'attendais ton retour, mais il n'y a pas de raisons que cela ne marche pas. Tout fonctionne chez moi. @+
  9. Patrick_35

    LISP pour Xref

    Le voici @+
  10. +1 J'ai fait une chose très simple. J'ai sauvegardé les variables du 1er dessin que j'ai importé dans le second et le résultat est le même. La sauvegarde est réalisé avec la commande _.sysvdlg des express. ps : par ce biais, on peut faire facilement un comparatif de variables avec Excel car les fichiers (.svf) sont des fichiers texte. @+
  11. Patrick_35

    LISP pour Xref

    Salut @lecrabe Je rebondis sur ce sujet car il me semble t'avoir fait quelque chose (sans réponse de ta part) qui pourrait être utile ici. @+
  12. Si, tu peux avec les codes dxf, mais il faut calculer. Code dxf 10 : Centre de la fenêtre Code dxf 40 : Largeur de la fenêtre Code dxf 41 : Hauteur de la fenêtre L'avantage du BoundingBox est qu'il fonctionne pour tout type d'objet. Pour ton entmake, il manque (entmake '((0 . "ENDBLK"))) pour lui indiquer que tu as fini ton bloc, car tu peux lui ajouter des lignes pas exemple. @+
  13. Salut Pour connaitre les coordonnées d'une fenêtre rectangulaire. (setq fenetre (vlax-ename->vla-object (car (entsel)))) (vla-getboundingbox fenetre 'basgauche 'hautdroit) (setq basgauche (vlax-safearray->list basgauche)) (setq hautdroit (vlax-safearray->list hautdroit)) @+
  14. Du point de vue des ressources, il est inutile de créer un bloc unique pour un bureau unique, sauf si tu utilises les extractions de données. Créer un bloc est très facile avec la commande bloc. IXL n'est pas prévu pour ton besoin. @+
  15. Salut Non, le lisp ne créé pas le bloc, mais insère celui-ci dans le dessin depuis les infos données sur la feuille Excel. Le bloc doit donc être existant dans le dessin. @+
  16. Salut Pas à ma connaissance. Les vlax-ldata sont d'une grande facilité d'utilisation et sont en réalité la mise en oeuvre d'un dictionnaire, comme l'indique (gile) dans ce message. On y arrive plus facilement par cette méthode. @+
  17. Bonjour J'aurai la même réponse que (gile) Tout dépend comment tu veux exploiter tes données. Elles peuvent être utilisées : - Par plusieurs ordinateurs --> Fichier texte. - Par plusieurs utilisateurs sur le même ordinateur --> Dans les registres. - Par profil sur Autocad --> Avec getenv / setenv - Par dessin --> Avec les vlax-ldata - Par objet graphique --> Avec les xdatas @+
  18. Salut J'ajouterai que l'on peut aussi de servir des fonctions setenv et getenv. (valeurs que l'on retrouve dans HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\RXX.X\ACAD-XXXX:XXX\FixedProfile\General) @+
  19. Patrick_35

    stop

    Bonjour On va créer un club des 66, et pourquoi pas, faire un road trip sur cette route légendaire en pétaradant :D La retraite, on a le temps d'y penser, sans compter que le départ légal recul sans cesse. Qui vivra verra. Mais une chose, profitez de l'instant présent. Le travail, c'est bien, mais ce n'est pas une fin en soi. @+
  20. Salut Oui, ou une évolution du code (voir de maitrise du lisp) qui fait que certaines fonctions deviennent superflues. @+
  21. Patrick_35

    Lisp et VBA

    Oui, mais on peut très vite être limité dans son interface. Pour ceux qui aiment les casse-têtes chinois, rien ne vaux les API. C'est aussi ce qui font leurs charmes et leurs puissances. C'est en forgeant que l'on devient forgeron. Toi et moi, on a commencé tout seul dans notre coin, sans Internet, avec seulement les exemples fournit par Autodesk. Ce n'est plus le cas maintenant et l'on peut s'appuyer sur les forums, des sites comme le tien pour avancer dans son projet, même si on ne comprend pas tout (dans une certaine limite). @+
  22. Patrick_35

    Lisp et VBA

    Salut Pour moi, la seule limite est l'imagination. Tu n'imagines pas ce que l'on peut faire avec les activex. Pour le fun, un exemple qui fait parler Autocad ;) (setq sapi (vlax-create-object "Sapi.SpVoice")) (vlax-invoke sapi "Speak" "Autocad qui parle" 0) (vlax-release-object sapi) D'après ton lisp, il est certain que l'on peut optimiser des choses, mais le plus important est qu'il fonctionne. Ensuite, on te propose plusieurs solutions et tu as tout ce qu'il faut pour avancer dans ton projet. A toi de choisir. @+
  23. Patrick_35

    Lisp et VBA

    Salut J'aurais une seule question. Quel est ton niveau en lisp ? Je pourrais te guider, mais pas te faire le lisp. Pour répondre, regarde ce sujet. @+
  24. Salut Tu as aussi vl-position @+
  25. Salut Oui, c'est tout à fait possible. Tu as cet exemple qui le démontre. C'est pour une ligne, mais le principe reste le même pour une fenêtre. @+
×
×
  • 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é