Aller au contenu

DenisHen

Membres
  • Compteur de contenus

    4 029
  • Inscription

  • Dernière visite

  • Jours gagnés

    21

Tout ce qui a été posté par DenisHen

  1. Bonjour à la communauté. Je sais que je vais en facher certains, mais pour les besoins d'un lisp que je viens de terminer, j'ai tenté aujourd'hui de faire un DCL qui va avec. J'en avais déjà fais plusieurs il y a quelques années, et j'en avais gardé un très maivais souvenir... J'ai donc commencé mon DCL vers 12h30, à 17h00, je n'avais fais que ça (et sans le code qui va avec) : Après deux aspirines, je me suis demandé si par le VBA, ce ne serait pas plus "rapide" ? J'ai donc ouvert l'éditeur VBA, et : Avec le code VBA qui va bien, en même pas une heure... Sachant que mon code VBA fait une centaine de lignes et qu'il ne sert juste qu'à stocker et attribuer des ldata (ces échanges sont très rapides avec nos PC actuels) ex : ThisDrawing.SendCommand "(setvar" & """HPNAME""" & """POROTHERM""" & """)" & vbCr Ou encore : ThisDrawing.SetVariable "users1", "" ThisDrawing.SendCommand "(setvar " & """users1""" & " (vlax-ldata-get " & """DenisH""" & " " & """RepTabloAxe""" & "))" & vbCr RepTabloAxeVal = ThisDrawing.GetVariable("users1") Je sais, ce n'est pas académique, mais ça fait le job... J'ai aussi testé OpenDCL et ObjectDCL, mais ils ne fonctionnent pas chez moi (problème d'installation, de langue, de compatibilité ? ?). Et je ne sais toujours pas s'il faut les installer sur les autres machines. L'IDE d'AutoLISP ne progresse pas beaucoup depuis très longtemps, mais on a tous pris nos petites habitudes, par contre, avec les DCL, Pffffff... Quelqu'un aurait une solution pour m'aider à tout faire des DCL simplement ? Bien à toi la communauté. Denis...
  2. Salut @Patricegeo. Je suis exactement dans le même cas que toi. Aurais-tu plus d'information sur ton fichier batch ?
  3. Salut à toi Ô Décapode... Oui, et pour ce prix là, c'est la version Pro...
  4. Bonjour à la communauté. Effectivement, la bonne nouvelle a été courte. Pour ma part, j'utilise toujours VLIDE, j'avais essayé VS Code, mais je n'ai pas trop aimé sa manipulation et son "intégration" à AutoCAD, et j'ai trop d'habitudes de mon VLIDE. La bonne nouvelle aurait été une évolution de l'IDE, comme celui de BricsCAD par exemple, qui est réellement bien foutu. Je m'y suis intéressé lorsqu'on voulait changer AutoCAD par un "clone", beaucoup moins couteux que les produits AutoDe$k... J'allais essayer ZWCad, mais la direction a changé d'avis avant. Denis.
  5. Salut. Et ce code fonctionne ? ;; ********************************************************************************** ;;; Sauve et Quitte tous les dessins ouverts (d'après CAD Studio - www.cadforum.cz) ;;; ********************************************************************************* (defun C:SaveQuitAll (/ dwg) (vl-load-com) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (vlax-for dwg (vla-get-Documents (vlax-get-acad-object)) (if (= (vla-get-active dwg) :vlax-false) (vla-close dwg :vlax-false) ) ;_ Fin de if ) ;_ Fin de vlax-for (command "._qsave") (command "._close") (vla-endundomark doc) (princ) ) ;_ Fin de defun ;; ************************************************************************* ;;; Quitte tous les dessins ouverts (d'après CAD Studio - www.cadforum.cz) ;;; ************************************************************************ (defun C:QuitAll (/ dwg) (vl-load-com) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (vlax-for dwg (vla-get-Documents (vlax-get-acad-object)) (if (= (vla-get-active dwg) :vlax-false) (vla-close dwg :vlax-false) ) ;_ Fin de if ) ;_ Fin de vlax-for (command "_-purge" "TO" "" "n" "_zoom" "et" "_qsave" "_close" "_y") (vla-endundomark doc) (princ) ) ;_ Fin de defun
  6. DenisHen

    Explore-DXF

    Bonjour à la communauté. Je cherchais la solution que propose @Luna, et je suis tombé dans un très vieux lisp dans mes archives : (defun c:dxf_lst () (initget "Entité Sous-entité") (mapcar 'print (entget (car (if (= (getkword "\n[Entité/Sous-entité]< E >: ") "Sous-entité") ;_ Fin de = (nentsel) (entsel) ) ;_ Fin:if ) ;_ Fin:car ) ;_ Fin:entget ) ;_ Fin:mapcar (textscr) (princ) ) ;_ Fin de defun Denis...
  7. Bonjour @(gile) et merci pour ton conseil. Je ne pense jamais à tester le code dans la console, mais tu as raison, elle est notre amie.
  8. Merci @Luna pour ton aide. Effectivement, je ne redonne toujours la valeur initiale des variables que je change pour les besoins de mes routines... Mais il y a des certaines variables qui sont et doivent restées communes à tous les utilisateurs (sur un même poste ou sur les autres du réseau. Merci encore, tu m'ouvres une porte sur d'autres perspectives... Bisous. Denis.
  9. Bonjour @Luna et un grand merci pour cette leçon et ton aide... J'ai appris plein de truc... Et le (not break) et le (null choix) (setq break T)), je trouve ça super élégant... Mais je pense qu'il y a une parenthèse en trop avant le (null. En tous cas, un super grand merci...
  10. Coucou @Luna. Je pense, peut-être à tord, que certaines variables sont enregistrées dans le profil utilisateur d'AutoCAD. Et le fait de pouvoir stocker des variables avec une valeur commune à tous les utilisateurs serait intéressant, je pense. Mais c'était une question juste pour savoir si c'était possible, car actuellement, j'utilise un LiSP qui réaffecte certaines variables. En tous cas, merci pour ta réponse. Denis.
  11. Merci @didierpour ta réponse. Parfait, ça va me faciliter la vie cette astuce. Denis.
  12. Bonjour @didier. La dernière condition transforme la variable Choix en liste pour sortir du (while. Je sais que ça ne doit pas être très académique, mais je l'ai écris comme ça, car je comprends ce code. Denis
  13. Cela signifie qu'on peut avoir un (initget de ce type ? (initget "1 2 3") (setq Choix (getkword "\nChoix de l'option [1-Ajouter/2-Modifier/3-Supprimer] : "))
  14. Je pensais à des variables "connues" d'AutoCAD, comme OSNAP, ou OSMODE...
  15. Bonjour @(gile) et merci pour ton aide. Le retour à la touche [ENTRER] est nil. Je pense avoir trouvé, mais je ne trouve pas le (setq Choix "Valeur") très élégant : (defun c:DH_TestInitGet ( / Choix) (setq Choix "Valeur") (while (/= Choix nil) (initget "Saisie Épaisseur Type Niveau") (setq Choix (getkword "\nChoix de l'option [Saisie/Épaisseur/Type/Niveau] : ")) (cond ((= Choix "Saisie") (princ "\nChoix : Saisie")) ((= Choix "Épaisseur") (princ "\nChoix : Épaisseur")) ((= Choix "Type") (princ "\nChoix : Type")) ((= Choix "Niveau") (princ "\nChoix : Niveau")) ) ;_ Fin de cond ) ;_ Fin de while (princ) ) Je ne sais pas si j'ai la bonne solution, mais je pense avoir trouvé une parade, mais pas plus élégante pour cela : (defun c:DH_TestInitGet ( / Choix) (while (/= (type Choix) 'LIST) (initget "Saisie Épaisseur Type Niveau") (setq Choix (getkword "\nChoix de l'option [Saisie/Épaisseur/Type/Niveau] : ")) (cond ((= Choix "Saisie") (princ "\nChoix : Saisie")) ((= Choix "Épaisseur") (princ "\nChoix : Épaisseur")) ((= Choix "Type") (princ "\nChoix : Type")) ((= Choix "Niveau") (princ "\nChoix : Niveau")) (T (setq Choix '("Sortie"))) ) ;_ Fin de cond ) ;_ Fin de while (princ) ) ;_ Fin de defun Encore merci pour ton aide. Denis.
  16. Salut @(gile) et merci de me répondre. Je n'arrive pas à savoir quelle est la réponse si je fais [ENTRER] Mais je viens de voir (dans ton merveilleux "Introduction a AutoLISP") une sorte de "Else" (T...), devrais-je fouiller par là ? Encore merci pour ton aide.
  17. Donc, je viens de penser à un trus, on peut stocker de vrais variables ? Qui éviterait d'avoir un gabarit "pollué" pas des calques ou des blocs...
  18. Bonjour à la communauté. J'ai un (initget avec plusieurs choix. Mais quand j'en choisi un, le prompteur ne revient pas au choix : (defun c:DH_TestInitGet () (initget 1 "Saisie Épaisseur Type Niveau") (setq Choix (getkword "\nChoix de l'option [Saisie/Épaisseur/Type/Niveau] : ")) (cond ((= Choix "Saisie") (princ "\nChoix : Saisie")) ((= Choix "Épaisseur") (princ "\nChoix : Épaisseur")) ((= Choix "Type") (princ "\nChoix : Type")) ((= Choix "Niveau") (princ "\nChoix : Niveau")) ) ;_ Fin de cond ) ;_ Fin de defun J'ai trouvé un début de solution que j'ai trouvé sur "Google est mon ami" avec un (while : (defun c:DH_TestInitGet () (while (/= (type Choix) 'LIST) (initget 1 "Saisie Épaisseur Type Niveau") (setq Choix (getkword "\nChoix de l'option [Saisie/Épaisseur/Type/Niveau] : ")) (cond ((= Choix "Saisie") (princ "\nChoix : Saisie")) ((= Choix "Épaisseur") (princ "\nChoix : Épaisseur")) ((= Choix "Type") (princ "\nChoix : Type")) ((= Choix "Niveau") (princ "\nChoix : Niveau")) ) ;_ Fin de cond ) ;_ Fin de while ) ;_ Fin de defun Mais avec ce code, je n'arrive pas à sortir du (while. Il y a bien la solution d'ajouter une option "Sortie", mais est-il possible de sortir de la bouble par un [ENTRER] ? J'ai trouvé d'autres codes, mais que je ne comprends pas. Bien à toi la communauté. Denis.
  19. Merci à vous deux pour votre aide. J'avais mal lu l'aide de (tblsearch et pas compris (tblnext. Tout fonctionne parfaitement maintenant. Encore merci à vous deux.
  20. Salut @(gile)et merci pour ton aide. En fait, je cherche juste s'il y a au moins un calque contenant ce nom. Pour les caractères spéciaux dans les noms de calques tcomme pour le reste), je leur ai déjà dis.
  21. Bonjour à la communauté. Je cherche avec un (tblsearch le nom des calque pour le comparer à une variable. Mais mes collègues ne travaillent pas tous de la même façon. Certain crééent leurs calques en majuscule uniquement, d'autres non. Exemple, un créera le calque "PATATI.....BETON ARME (HACHURE)...", un autre "Patata...Béton armé (SymboleHachure)...".... Donc, je cherche "*BÉTON*" ou "*BETON*", mais je n'arrive pas à mettre le (tblserch en majuscule (ou en minuscule), pour être certain de trouver. Comment faire... Une liste peut-être ?
  22. Je viens de relire le sujet. Donc, setenv se stock dans la base de registre ? Curieux... C'est donc accessible entre plusieurs cessions AutoCAD, même après redémarrage de Windows ?
  23. Coucou @Luna. Merci pour ces précisions, j'en prend bien note... Mais effectivement, mes valeurs ne sont stockées que pour un et un seul dessin. Mais je garde (setenv) et (getenv) en tête, au cas où... Encore merci à toi. Bisous. Denis...
  24. Bonjour à la communauté. J'ai fini par trouvé une vieille réponse de @(gile)dans un sujet de 2008 (ici), si ça intéresse quelqu'un : (vl-cmdf "_.pedit" (entlast) "_join" jspoly "" "")
  25. Bonjour à la communauté. Voilà, je dessine plusieurs polylignes que je mets dans un jeu de séléction que j'initialise au début avec : (setq jspoly (ssadd)) Ensuite, j'ajoute les polylignes dans jspoly après leur création : (setq jspoly (ssadd (entlast) jspoly)) Et je fini par joindre le tout pour créer une polyligne afin de la hachurer ensuite, cette polyligne (issue de la commande "joindre") devrait être fermée (physiquement) : (command "joindre" jspoly "") Mais rien ne se joint, je n'arrive donc pas à hachurer cette polyligne. J'ai essayé un truc dans ce genre mais sans résultat :(command-s "_.pedit" "_multiple" jspoly "" "_join" "" "") (command-s "_.pedit" "_multiple" jspoly "" "_join" "" "") Si quelqu'un a une idée, un conseil, je suis preneur. Bien à toi, la communauté.
×
×
  • 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é