-
Compteur de contenus
6 374 -
Inscription
-
Dernière visite
-
Jours gagnés
30
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par Patrick_35
-
Petit problème avec Steal (de Lee Mac)
Patrick_35 a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Sans vouloir te vexer, je m'en doutais et je l'ai écrit de manière à ce que tu puisses l'utiliser sans difficulté. @+ -
Petit problème avec Steal (de Lee Mac)
Patrick_35 a répondu à un(e) sujet de DenisHen dans Débuter en LISP
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 -
Transformation d'une polyligne en bloc.
Patrick_35 a répondu à un(e) sujet de DenisHen dans Débuter en LISP
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. @+ -
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. @+
-
+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 @+
-
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. @+
-
Tu peux m'envoyer un exemple ? Pour le resto, c'est quand tu veux :D @+
-
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. @+
-
+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. @+
-
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. @+
-
Insérer un bloc par rapport à une fenêtre en EP
Patrick_35 a répondu à un(e) sujet de Aleck_Ultimate dans Débuter en LISP
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. @+ -
Insérer un bloc par rapport à une fenêtre en EP
Patrick_35 a répondu à un(e) sujet de Aleck_Ultimate dans Débuter en LISP
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)) @+ -
Excel vers AutoCAD : Bloc + Attributs
Patrick_35 a répondu à un(e) sujet de lecrabe dans Suggestions de développements
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. @+ -
Excel vers AutoCAD : Bloc + Attributs
Patrick_35 a répondu à un(e) sujet de lecrabe dans Suggestions de développements
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. @+ -
Lecture/Écriture d'un fichier INI
Patrick_35 a répondu à un(e) sujet de DenisHen dans Débuter en LISP
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. @+ -
Lecture/Écriture d'un fichier INI
Patrick_35 a répondu à un(e) sujet de DenisHen dans Débuter en LISP
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 @+ -
Lecture/Écriture d'un fichier INI
Patrick_35 a répondu à un(e) sujet de DenisHen dans Débuter en LISP
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) @+ -
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. @+
-
Commande très curieuse dans une suite de lisp...
Patrick_35 a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Salut Oui, ou une évolution du code (voir de maitrise du lisp) qui fait que certaines fonctions deviennent superflues. @+ -
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). @+
-
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. @+
-
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. @+
-
Y-a-t'il un équivalent de wcmatch pour les Listes ?
Patrick_35 a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Salut Tu as aussi vl-position @+ -
[Résolu] Peut-on attacher des Xdata à une fenêtre ?
Patrick_35 a répondu à un(e) sujet de DenisHen dans Débuter en LISP
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. @+
