jcv Posté(e) le 11 avril 2012 Posté(e) le 11 avril 2012 Le "Developper Help" de l'AutoLisp situé dans ZWCAD contient la syntaxe d'un certain nombre de fonctions Lisp (notamment fonctions arithmétiques, logiques, fonctions d'entrée/sortie, etc). Ces fonctions sont décrites à la rubrique "AutoLisp Function Reference". Mais les fonctions permettant la création et la manipulation de solides 3D (modification, unions, intersections, etc) ne s'y trouvent pas : je veux parler des fonctions "box", "sphere", "substract", "solidedit", "union" par exemple. ZW-France, distributeur de ZXCAD, que je viens de consulter me renvoie sur le présent forum pour y trouver la réponse.Aussi je lance cet appel à la communauté CADXP: Quelqu'un disposerait-il de la syntaxe de ces fonctions Lisp de création/manipulation des solides 3D ?Merci d'avance pour vos réponses...
bryce Posté(e) le 11 avril 2012 Posté(e) le 11 avril 2012 Bonjour, Mais les fonctions permettant la création et la manipulation de solides 3D (modification, unions, intersections, etc) ne s'y trouvent pas : je veux parler des fonctions "box", "sphere", "substract", "solidedit", "union" par exemple. Ce ne sont pas des fonctions Lisp, mais des commandes AutoCAD (qui existent aussi dans ZWCAD).On peut les utiliser dans un Lisp avec (command). Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
Tramber Posté(e) le 11 avril 2012 Posté(e) le 11 avril 2012 Salut jcv, salut Bryce !Soyons honnêtes, il y a des fonctions plus avancées (plutôt que de passer par du COMMAND) et c'est toi-même, Bryce, qui nous avait d'ailleurs mis au clair la traduction des fonctions Vlisp qui permettent de traiter ces commandes en "dur".ex :vla-addBoxvla-addSphere...etc Je crois qu'il faut passer par la syntaxe invokeComment créer une boite par exemple ? dans la syntaxe ZW ? Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
bryce Posté(e) le 11 avril 2012 Posté(e) le 11 avril 2012 Les fonctions dont tu parles figurent dans la référence VBA, que ce soit dans l'aide d'AutoCAD ou dans celle de ZWCAD.jcv, lui, parle de (je cite) fonctions décrites à la rubrique "AutoLisp Function Reference", et qui manqueraient dans l'aide de ZWCAD.Du coup je ne sais pas trop sur quoi porte sa question finalement... :unsure: Je pense que le sujet auquel tu fais référence est celui-ci, qui aborde les différences entre les Visual Lisp des deux logiciels:http://cadxp.com/index.php?/topic/30849-lisp-et-visual-lisp-les-differences-entre-autocad-et-zwcad/ Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
Tramber Posté(e) le 11 avril 2012 Posté(e) le 11 avril 2012 Eh oui ! A la relecture, pas de différence dans l'écriture ? On peut écrire ?(vla-addsphere block (vlax-3d-point (list x y)) rayon) (vla-AddExtrudedSolid block region hauteur angledepouille) (vla-Boolean region acSubtraction region2) etc... ou il faut passer à(vlax-invoke block 'addsphere ... ...)? Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
bryce Posté(e) le 12 avril 2012 Posté(e) le 12 avril 2012 On peut écrire ?(vla-addsphere block (vlax-3d-point (list x y)) rayon) (vla-AddExtrudedSolid block region hauteur angledepouille) (vla-Boolean region acSubtraction region2) etc... Oui :) Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
ZWCAD-France Posté(e) le 13 avril 2012 Posté(e) le 13 avril 2012 Bonjour je confirme que pour accéder aux objets 3D avec ZWCAD, on passera par les commandes VLISP. Voici un petit exemple de code pour créer une box : (defun c:addboxsample()(vl-load-com)(setq myapp(vlax-get-acad-object))(setq myactivedoc(vla-get-activedocument myapp))(setq myspace (vla-get-modelspace myactivedoc))(setq mybox(vla-addbox myspace (vlax-3d-point '(0 0 0)) 10 10 10))(command "regen")) (defun c:myunion()(setq ss1 (entsel "Please select the first solid: "))(princ "\n")(setq ss2 (entsel "Please select the second solid: "))(command "union" (car ss1) (car ss2) "")(command "regen")) Je suis un peu fainéant : j'ai laissé les messages en anglais :P ZW France est le distributeur de ZWCAD, ZW3D et ARCHLine en France, Belgique francophone, Suisse francophone, et Afrique francophone. www.zwfrance.fr
ZWCAD-France Posté(e) le 13 avril 2012 Posté(e) le 13 avril 2012 Au fait, je change de sujet, mais une nouvelle version de ZWCAD pointe le bout de son nez ....Vraiment beaucoup de nouveautés, y compris les APIs totalement remaniées LISP, VLISP, réutilisation directe du code c++ d'un ARX pour le compiler en ZRX Histoire d'alimenter un peu le buzz, voici une petite copie écran :http://www.zw-3d.fr/fichiers/ecran-zwcad+.jpg ZW France est le distributeur de ZWCAD, ZW3D et ARCHLine en France, Belgique francophone, Suisse francophone, et Afrique francophone. www.zwfrance.fr
jcv Posté(e) le 16 avril 2012 Auteur Posté(e) le 16 avril 2012 Bonjour, Ce ne sont pas des fonctions Lisp, mais des commandes AutoCAD (qui existent aussi dans ZWCAD).On peut les utiliser dans un Lisp avec (command). bonjour bryce,Je débute dans l'usage de Lisp.J'ai bien compris que "box", "sphere", "union", etc étaient des commandes de ZWCAD. Ces commandes sont d'ailleurs relayées par des icônes dans différentes barres d'outils ou menus.J'ai bien compris également qu'on peut les utiliser dans un programme Lisp avec la fonction (command "box" ....), (command "union" ....), etc.Ce que je cherche, vainement pour l'instant, c'est la syntaxe à employer pour passer les paramètres à ces fonctions sans se tromper (type des paramètres, nombre de paramètres, terminaison de la ligne avec "" ou pas, etc, etc, etc).Pour la fonction (command "line" pt1 pt2 ""), j'ai trouvé la syntaxe PAR HASARD dans le Developper-Help à la page AutoLisp-Function-Reference / C Functions / command.Y a-t-il un endroit dans le Help de ZWCAD, le Help du Lisp (ou le Help de VBA, ou ...) où je peux trouver ces syntaxes afin de m'éviter de tatonner ?Merci de ta réponse.
jcv Posté(e) le 16 avril 2012 Auteur Posté(e) le 16 avril 2012 Bonjour je confirme que pour accéder aux objets 3D avec ZWCAD, on passera par les commandes VLISP. Voici un petit exemple de code pour créer une box : (defun c:addboxsample()(vl-load-com)(setq myapp(vlax-get-acad-object))(setq myactivedoc(vla-get-activedocument myapp))(setq myspace (vla-get-modelspace myactivedoc))(setq mybox(vla-addbox myspace (vlax-3d-point '(0 0 0)) 10 10 10))(command "regen")) (defun c:myunion()(setq ss1 (entsel "Please select the first solid: "))(princ "\n")(setq ss2 (entsel "Please select the second solid: "))(command "union" (car ss1) (car ss2) "")(command "regen")) Je suis un peu fainéant : j'ai laissé les messages en anglais :P bonjour,Je réagis à ce message, car, à nouveau je me demande où se trouve la syntaxe des fonctions commençant par vla-.....En effet, dans le Developper Help de ZWCAD, je trouve trace de nombreuses fonctions vl-, vlax-, vlr- mais pas trace d'aucune fonction vla-, notamment par exemple la fonction (vla-addbox ... telle qu'utilisée ci-dessusmerci de m'éclairer.
-Olivier- Posté(e) le 16 avril 2012 Posté(e) le 16 avril 2012 Bonjour,Je suis sous autocad et j'ai exactement le même problème. Je suis débutant en lisp mais j'aimerais pouvoir progresser sur les fonction vl- sans en être réduit au (command).Merci pour votre aide.
bryce Posté(e) le 16 avril 2012 Posté(e) le 16 avril 2012 Bonjour, Il faut regarder dans la référence VBA dans l'aide, pour trouver les infos sur les méthodes et leurs paramètres, puis rajouter vla- devant pour les utiliser en Lisp.Par exemple, la méthode Addbox devient vla-Addbox en Lisp. Pour la syntaxe avec (command), il suffit de reproduire l'utilisation en ligne de commande dans AutoCAD:http://cadxp.com/index.php?/topic/20170-elements-de-syntaxe-autolisp/page__view__findpost__p__108128 Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
-Olivier- Posté(e) le 16 avril 2012 Posté(e) le 16 avril 2012 Il faut regarder dans la référence VBA dans l'aide, pour trouver les infos sur les méthodes et leurs paramètres, puis rajouter vla- devant pour les utiliser en Lisp.Par exemple, la méthode Addbox devient vla-Addbox en Lisp. Merci beaucoup Bryce :D Je vais tester ça ce weekend...
bryce Posté(e) le 16 avril 2012 Posté(e) le 16 avril 2012 (defun c:myunion()(setq ss1 (entsel "Please select the first solid: "))(princ "\n")(setq ss2 (entsel "Please select the second solid: "))(command "union" (car ss1) (car ss2) "")(command "regen")) C'est bizarre qu'il faille utiliser (command) dans ce cas...Le code suivant fonctionne dans AutoCAD mais renvoie une erreur dans ZWCAD:(defun c:myunion() (vl-load-com) (setq ss1 (vlax-ename->vla-object (car (entsel "\nPlease select the first solid: ")))) (setq ss2 (vlax-ename->vla-object (car (entsel "\nPlease select the second solid: ")))) (vla-Boolean ss1 acUnion ss2) (command "regen") ) Pourtant ceci fonctionne dans ZWCAD:(defun c:myunion() (vl-load-com) (setq ss1 (vla-addsphere ms '(0 0 0) 5)) (setq ss2 (vla-addsphere ms '(4 0 0) 5)) (vla-Boolean ss1 acUnion ss2) (command "regen") ) Ça ressemble à un bug, il faudrait en parler aux Chinois... ;) Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
(gile) Posté(e) le 16 avril 2012 Posté(e) le 16 avril 2012 jvc et -olivier- Bienvenue dans l'aventure du LISP et de la programmation.Avant de vous attaquer aux "fonctions vla", il est, à mon avis, important de bien se familiariser avec le langage.Commencer avec (command ...) est une bonne chose parce que ça permet d'avoir rapidement (et facilement) des résultats tout en abordant progressivement les fondamentaux : les fonctions de manipulation des listes (car, cdr, cons, append, assoc...).Puis on pourra rendre ses "scripts" plus "intelligents" avec des conditions (if, cond), les opérateurs logiques (and, or, not) les itérateurs (while, repeat, foreach) et les invites utilisateur (fonctions get*).Et petit à petit on cherchera à éviter l'utilisation de command pour lui préférer les manipulations d'entités par les liste DXF (enget, entmod...). C'est seulement à ce moment là que les "fonctions vla" pourront présenter un intérêt. Elles sont parfois plus pratiques (mais pas toujours), parfois incontournables (mais l'inverse est aussi vrai). Commencez par vous fixer des buts simples (c'est important d'arriver à faire ses routines tout seul). N'hésitez pas à faire des tests dans l'éditeur Visual LISP ou en ligne de commande (c'est en faisant des erreurs et en les réparant qu'on apprend le plus). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
ZWCAD-France Posté(e) le 21 avril 2012 Posté(e) le 21 avril 2012 Brice, désolé du retard à l'allumage pour la réponse sur le code : nos amis de ZWSOFT nous avaient communiqué la réponse depuis mardi, mais c'est moi qui ait trainé ... D'une part le code (vla-Boolean ss1 acUnion ss2) ne peut pas passer sur ZWCAD car on doit utiliser ZcUnion (avec un Z : on aime bien remplacer les A par des Z chez ZWCAD ! ;) Pour l'union des sphères dans l'exemple indiqué plus haut, on peut aussi utiliser :defun c:myunion() (vl-load-com) (setq ms (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))) (setq ss1 (vla-addsphere ms (vlax-3D-point '(0 0 0)) 5)) (setq ss2 (vla-addsphere ms (vlax-3D-point '(4 0 0)) 5)) (vla-Boolean ss1 zcUnion ss2) (command "regen") ) Autrement, pour la sélection de 2 solides et leur union, avec Zcunion, le code ci-dessous est ok : (defun c:myunion() (vl-load-com) (setq ss1 (vlax-ename->vla-object (car (entsel "\nSélectionnez le premier solide: ")))) (setq ss2 (vlax-ename->vla-object (car (entsel "\nSélectionnez le second solide: ")))) (vla-Boolean ss1 zcUnion ss2) (command "regen") ) Cependant je confirme le problème sur le code suivant (y compris avec zcUnion) (defun c:myunion() (vl-load-com) (setq ss1 (vlax-ename->vla-object (car (entsel "\nPlease select the first solid: ")))) (setq ss2 (vlax-ename->vla-object (car (entsel "\nPlease select the second solid: ")))) (vla-Boolean ss1 zcUnion ss2) (command "regen") ) La bonne nouvelle, c'est que le problème a été résolu ... mais dans la version ZWCAD+ qui sera disponible dans quelques semaines. ZW France est le distributeur de ZWCAD, ZW3D et ARCHLine en France, Belgique francophone, Suisse francophone, et Afrique francophone. www.zwfrance.fr
Tramber Posté(e) le 23 avril 2012 Posté(e) le 23 avril 2012 Pas beaucoup présent en ce moment, je réagis car ce sujet prend un tour intéressant.Je salue ZWCAD-France pour passer par-là ;) acunion acSubtraction, par exemple, renvoient respectivement 0 et 2.Ainsi donc, si on veut écrire des programmes universel, il faudra avoir le réflexe d'écrire l'entier ou un cond : (cond(acunion)(zcunion)(0)) ou (cond(acunion)(0)) ...etc. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
bryce Posté(e) le 23 avril 2012 Posté(e) le 23 avril 2012 Bonjour, Bonne nouvelle en effet, est-il possible de beta-tester cette nouvelle version ? :unsure: Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
jcv Posté(e) le 23 avril 2012 Auteur Posté(e) le 23 avril 2012 Brice, désolé du retard à l'allumage pour la réponse sur le code : nos amis de ZWSOFT nous avaient communiqué la réponse depuis mardi, mais c'est moi qui ait trainé ... D'une part le code (vla-Boolean ss1 acUnion ss2) ne peut pas passer sur ZWCAD car on doit utiliser ZcUnion (avec un Z : on aime bien remplacer les A par des Z chez ZWCAD ! ;) Pour l'union des sphères dans l'exemple indiqué plus haut, on peut aussi utiliser :defun c:myunion() (vl-load-com) (setq ms (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))) (setq ss1 (vla-addsphere ms (vlax-3D-point '(0 0 0)) 5)) (setq ss2 (vla-addsphere ms (vlax-3D-point '(4 0 0)) 5)) (vla-Boolean ss1 zcUnion ss2) (command "regen") )Merci de ces précisions venant de diverses origines.1/C'est un peu moi qui a déclenché ces échanges car je TATONNE beaucoup, de petit exemple Lisp en petit exemple Lisp pour trouver la syntaxe à utiliser pour manipuler en Lisp des solides ou des surfaces 3D, que ce soit d'ailleurs en essayant de reproduire par programme:- la syntaxe des commandes de ZWCAD, si je veux utiliser (command "union" ...),(command "box" ....)etc,- ou les méthodes du VisualBasic si je veux utiliser (vla-addbox ms (...)), (vla-addsphere ...), etcJ'ai bien compris que je n'aurais nulle part, directement sous les yeux, la syntaxe Lisp des fonctions de manipulation des solides et surfaces 3D. Est-ce que je me trompe ?2/Au sujet de mes tatonnements, je crois que (vlax-get-acad-object) ne fonctionne pas en ZWCAD comme indiqué dans l'exemple ci-dessus, mais qu'il faut utiliser (vlax-get-zwcad-object). Là, il faut remplacer a par zw ... 3/Au risque de paraître naïf, je pose également une question sur la tournure des fonctions Lisp en VisualLisp : quelle est la raison pour laquelle, dans tous les exemples donnés, elles sont toujours formulées comme suit:(setq myapp (vla-get-.....)), ou bien (setq mybox (val-addbox ms ...)) ou bien (setq mysph (vla-addsphere..., etcEst-ce parce qu'ainsi on récupère systématiquement le nom de l'objet ou de l'entité, pour pouvoir le manipuler ensuite ? (alors qu'avec la fonction (command ...) on doit seulement ensuite, récupérer le nom de l'entité avec (entlast) ?)4/Gile semble louer les mérites de l'éditeur visualLisp ... que je n'ai pas trouvé dans ZWCAD...( ou alors je n'ai pas encore regardé partout, depuis que j'ai acheté ZWCAD il y a deux mois?). Est-ce une des différences majeures existant entre Autocad et ZWCAD? Est-ce prévu un tel éditeur dans la version 2012, 2013 de ZWCAD ?
bryce Posté(e) le 23 avril 2012 Posté(e) le 23 avril 2012 Bonsoir, 1) En effet, il faut extrapoler la syntaxe Lisp à partir de ce qui est indiqué dans l'aide VBA. 2) Les deux fonctionnent, à ma connaissance. 3) C'est bien cela (même si on ne récupère pas le nom de l'objet, mais l'objet lui-même). 4) Pas d'éditeur VLisp dans ZWCAD à ce jour, mais Notepad++ fait très bien l'affaire.Ça oblige à réfléchir un peu plus lors du débogage, c'est tout... :P Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
(gile) Posté(e) le 24 avril 2012 Posté(e) le 24 avril 2012 4) Pas d'éditeur VLisp dans ZWCAD à ce jour, mais Notepad++ fait très bien l'affaire.Ça oblige à réfléchir un peu plus lors du débogage, c'est tout... :P Quand je "vante les mérites de l'éditeur Visual LISP" c'est justement pour sa console et ses fonctions de débogage qui manquent aux éditeurs de texte, fussent-ils performants comme Notepad++ (que j'utilise aussi). Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
ZWCAD-France Posté(e) le 25 avril 2012 Posté(e) le 25 avril 2012 Bonjour, jcv : en effet, il n'y a pas encore d'éditeur Visual Lisp dans ZWCAD, désolé. Mais c'est dans les projets, par contre, c'est sûr, il n'est pas dans la version de juillet. Brice : La béta ZWCAD+ viens juste de nous être envoyée en français voici 2 jours et nous la testons. Elle est très stable (normal ce n'est pas une version Intellicad), et nous ne disposons que de quelques numéros de licences pour des grands comptes et quelques développeurs sur les grosses appli Autocad à convertir (chut!). Par contre, nous souhaiterions savoir si certains développeurs ici présents sur CADXP souhaiteraient collaborer avec nous pour mettre a disposition des utilisateurs ZWCAD une bibliothèque de LISP/VLISPS "approuvés" et gratuits qui serait tétéchargeable depuis notre site ? Bien entendu, nous respecterons les noms des éditeurs, les copyrights etc .. et nous ajouterons un lien direct vers les auteurs qui le souhaitent. Nous envisageons également la mise en place d'une "bourse de transfert" afin d'aider financierement les développeurs pour le passage d'applicatifs d'AutoCad vers ZWCAD (la DAO de A....à Z!) Qu'en pensez vous ? ZW France est le distributeur de ZWCAD, ZW3D et ARCHLine en France, Belgique francophone, Suisse francophone, et Afrique francophone. www.zwfrance.fr
Tramber Posté(e) le 25 avril 2012 Posté(e) le 25 avril 2012 Hmmm, Cela mériterait un nouveau sujet, parole de modérateur ;) Au vu de ce que nous disons (absence de déboggeur et adaptation nécessaire et pas toujours facile apriori du vocabulaire) les "transfers" peuvent vite devenir sportifs B) Je n'aurais qu'un mot : c'est déjà formidable que vous soyez là, en France, à parler avec nous. J'avais déjà pensé à monter une base de programmes à télécharger qui tienne en compte la compatiblité ZWCAD (voire en pur Autolisp pour les versions Mac,...) L'idée est bonne (puisque vous me la piquez :(rires forts): ) mais j'ai abandonné faute de temps et moyens immédiats.L'idée est bonne..... Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant