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. DenisHen

    Mode CLASSIQUE ou RUBAN

    Bonjour @Maximilien. J'avais effectivement trouvé un truc bien pratique, au début, mais après plusieurs essais, il s'est avéré beaucoup moins pratique, mais uniquement en VBA (je ne sais pas si le LISP le fait et je ne connais pas d'autres langages). Changement de poste, de version AutoCAD... Du coup, je n'ai plus le DVB 🤥. Je cherchais surtout à changer le contenu mes listes déroulantes du ruban, et je n'ai jamais réellement trouvé... Mais j'ai lu plusieurs pages qui parlaient de .NET. J'ai peu à peu laissé tomber, mais voici un lien qui pourrait peut-être t'aider : https://forums.augi.com/showthread.php?159453-CP204-2-API-for-CUIx-Files-and-the-Runtime-Ribbon-in-AutoCAD
  2. Coucou @Luna. Un super grand merci pour avoir pris autant de temps pour faire une explication très exhaustive (j'en ai fais un petit PDF que j'ai placé à coté du "Introduction à AutoLISP" de (gile))... Mais je n'arrive pas à m'expliquer l'échec de mon petit code "teste" : En relisant mainte et mainte fois tes explications, je viens de comprendre pourquoi l'échec de ça : ;;; Petit teste de durée et de partage de variable. (defun c:MacroA (/ Var1) (setq Var1 "Avant MacroB") (princ (strcat "\nVar1=" Var1)) (MacroB) (princ "\nRetour dans MacroA") (princ (strcat "\nVar1=" Var1 "\tVar2=" Var2)) (defun MacroB (/ Var2) (princ "\nArrivé dans MacroB") (setq Var2 "Dans MacroB") (princ (strcat "\nVar2=" Var2)) (setq Var1 "Dans MacroB") ) ;_ Fin de defun (princ) ) ;_ Fin de defun Il faut placer les autres (defun au début : ;;; Petit teste de durée et de partage de variable. (defun c:MacroA (/ Var1 Var2) (defun MacroB (/ ) (princ "\nArrivé dans MacroB") (setq Var2 "Dans MacroB") (princ (strcat "\nVar2=" Var2)) (setq Var1 "Dans MacroB") ) ;_ Fin de defun (setq Var1 "Avant MacroB") (princ (strcat "\nVar1=" Var1)) (MacroB) (princ "\nRetour dans MacroA") (princ (strcat "\nVar1=" Var1 "\tVar2=" Var2)) (princ) ) ;_ Fin de defun Je ne sais pas si c'est l'âge qui commence à s'installer, mais j'ai pris un temps fou à voir ce détail ! ! Mais que je trouve évident maintenant. Je pense qu'il ne peut être exécuté un (defun s'il n'a pas été "chargé" au préalable. Je ne vois que ça comme explication... Donc, en ce moment, je m'"amuse" à retoucher ce petit code teste dans tous les sens pour bien m'exercer à ce genre de manipulation de variables, et bien piger le pourquoi du comment... En tous cas, encore un super grand merci pour ta réponse. Tu m'as enlevé une belle bûche du pied ! ! ! Bisous, Denis...
  3. Bonjour, j'ai le même problème...
  4. Bonjour @Fraid, et merci pour ton explication, je n'avais pas vu une "sous-macro" comme une variable...
  5. Salut @(gile), et merci pour ta réponse. Effectivement, j'avais mal tapé dans la console (gros oublis de ma part, mais je la découvre, et de plus en plus). Mais j'ai maintenant : _$ (c:MacroA) Var1=Pouette ; erreur: no function definition: MACROB _$ Mon but est surtout de lancer les "sous-macros", juste pour éviter de répéter une séquence de code "commun" (MacroB) entre les différentes parties d'un code "général" (MacroA). Je pense que c'est un peu comme la gestion des erreurs (mais j'en suis très loin d'être certain), dans mon code "MacroA" (par exemple), je fais souvent appel à la même séquence de code, le même traitement de données, qui peut être regroupée (mutualisé ?) dans un seul "sous-defun"). C'est un peu le "GoSub" de l'ancien temps (comme dans Turbo Basic par exemple), on va traiter une donnée ailleurs, et cet algorithme de traitement peu servir plusieurs fois, dans la même "Macro"... Je ne suis pas certain d'avoir été plus clair...
  6. Bonjour à la communauté. Je tente de comprendre l'intérêt de placer un (defun dans un autre... Je pense que ça a été maintes fois discuté (je n'ai rien trouvé de probant), j'en reviens donc au plus simple, avec un petit teste (je teste de plus en plus mes maigres connaissances)... Car je pense que ça doit être très pratique pour la gestion des variables (il me semble). Les variables déclarées dans le defun principal restent "vivantes" dans les sous-defun, d'après ce que j'ai compris... Jai donc fais un bout de Lisp "<SansNom-0>" que je créer à la volée, juste histoire de comprendre : (defun c:MacroA (/ Var1) (setq Var1 "Pouette") (princ (strcat "\nVar1=" Var1)) (MacroB) (princ (strcat "\nVar1=" Var1)) (princ (strcat "\nVar2=" Var2)) (defun MacroB (/ Var2) (setq Var2 "Prout") ;; Je sais, mais que faire ? ? ? (princ (strcat "\nVar2=" Var2)) (setq Var1 "EtRePouette") ) ;_ Fin de defun ) ;_ Fin de defun C'est juste un petit teste pour comprendre l'étendu des valeurs des variables du truc du machin, voir plus... Mais, ma console me répond : ; 1 feuille chargé à partir de #<editor "Chargement de <SansNom-0>..."> _$ MacroA nil _$ Var1 nil _$ MacroB nil _$ MacroA -> nil Je n'ai pas compris _$ MacroB -> nil Je m'en doutais. Mais pourquoi rien ne fonctionne ?
  7. De rien, c'est un plaisir de rendre service...
  8. Ok, merci, je n'avais pas compris la portée de (setenv et (getenv.
  9. Un grand merci @(gile) pour ces explications. Mais du coup, je me pose une petite question : quelle est la différence avec (setenv et (getenv ?
  10. Bonjour @Fraid. Oui, créer une clef dans le registre AutoCAD est "dangereux", je suis entièrement d'accord. Mais c'était pour l'exemple, pour que tout le monde puisse avoir la même chose (à par la version, comme tu le soulignes). Car si j'avais donné l'exemple de mes clefs "perso", l'exemple aurait peut-être été moins efficace. Je vais aussi faire un petit exemple avec "user", au cas où... Merci pour ta remarque judicieuse...
  11. Je viens de retrouver dans mes archives un site qui m'avait bien aidé : autolisp-exchange
  12. Bonjour à tous. @Luna : effectivement, le DCL n'est pas simple, voir pire, et pour les alignements, l'astuce (si on peut l'appeler ainsi) que j'ai trouvée est de multiplier les row et les column, enfin c'est "ma" méthode, et je ne suis pas certain qu'elle soit la bonne. @(gile) : j'avais déjà regardé ces deux trucs il y a quelques années (installation, testes...), mais la distribution est impossible sans eux (du moins à ce que j'en ai compris aves les "Runtimes"). Et il me semble que l'un a été racheté (par l'autre ?) et que je n'ai jamais réussi à les avoir en français (même en téléchargeant la bonne version), d'après mes souvenir. Je vais regarder à nous tes propositions. En tous cas, un grand merci à vous pour vos réponses. Denis...
  13. Bonjour Fraid. Merci pour ton aide, je n'y avais pas pensé ! ! ! J'y cours...
  14. Bonjour à la communauté Ayant passé pas mal de temps à comprendre et tester les différents accès à la base de registre depuis un LiSP, je vous propose mon petit « pense-bête ». Bien entendu, je vous invite à nous faire part de vos remarques et observations, car je compte un peu là-dessus 😉. La base de registre est structurée comme une « arborescence » (indiquée en une ligne sous le menu de l'éditeur de registre) : Exemple : HKEY_CURRENT_USER\SOFTWARE\Autodesk\AutoCAD\R24.2 "Ordinateur" est volontairement omis. Remarque : il peut être dangereux d'utiliser des clefs de registre de logiciels existants, préférer créer vos propres clefs. Il me semble que l’accès à toutes les clefs est limité, seules les racines HKEY_USERS et HKEY_LOCAL_MACHINE sont accessibles. Liste des « répertoires » (contenant des clefs) d’un chemin. _$ (append (vl-registry-descendents "HKEY_CURRENT_USER\\SOFTWARE\\Autodesk\\AutoCAD\\R24.2")) ("ACAD-6101:40C") Liste des « clefs » (contenants une valeur) d’un chemin. _$ (append (vl-registry-descendents "HKEY_CURRENT_USER\\SOFTWARE\\Autodesk\\AutoCAD\\R24.2" "")) ("LastLaunchedLanguage" "LastLaunchedProduct" "CurVer") Lecture d’une valeur de clef. _$ (vl-registry-read "HKEY_CURRENT_USER\\SOFTWARE\\Autodesk\\AutoCAD\\R24.2" "CurVer") "ACAD-6101:40C" Création et/ou écriture d’une valeur de clef. (vl-registry-write "HKEY_CURRENT_USER\\SOFTWARE\\Autodesk\\AutoCAD\\R24.2" "CadXP" "DenisH") La valeur « DenisH » a été attribuée à la clef « CadXP », si la clef n’existe pas, elle sera créée. Suppression d’une clef. _$ (vl-registry-delete "HKEY_CURRENT_USER\\SOFTWARE\\Autodesk\\AutoCAD\\R24.2" "CadXP") T La réponse est « T » si elle a bien été supprimée ou nil si elle n’a pas été trouvée. Ce petit pense-bête n'est qu'une proposition, et bien entendu, une explication succincte, à nous de l'alimenter... Je m'en ferais un PDF que je partagerais volontiers. Bien à toi la communauté. Denis...
  15. Bonjour fredbross, effectivement, mais cet excellent site de didier est en cours, pour plusieurs raisons dont chacune est suffisante seule, et que nous pouvons tous aider, car je pense qu'il est friand de nos éventuelles remarques. Ce site est excellent pour le Lisp à bien des égards (avec ses petits exercices par exemple), à l'image du non moins excellent "Introduction à AutoLISP" de (gile), mais il est en cours pour le DCL et le VBA. J'y vais très souvent, il est d'une aide précieuse, mais rares sont les sites qui parlent de "l'organisation" des éléments de la fenêtre (les row et les column par exemple). En tous cas, mille mercis à ces deux protagonistes (que nous saluons au passage) du développement Lisp...
  16. Salut à la communauté. Voici mes dernières observations, entre le DCL et le VBA (mais je ne parle que des fenêtres) J'ai passé à peine plus d'un quart d'heure à faire cette fenêtre en VBA : Et j'ai passé presque une journée à faire ça en DCL : Il est très claire que la deuxième fenêtre est très "moche" (sans comparaison ! !), sans jolies petites images contre un visuel beaucoup plus agréable et compréhensible. J'avoue que je comprend aisément les développeurs qui choisissent le VBA (voir le DOT.NET) pour faire des trucs sous AutoCAD... Mais je persiste avec le DCL (mais plus pour longtemps), car il n'y a rien de mieux pour le LiSP, et sa distribution... J'aimerais tellement qu'un cador se fends de nous faire un tuto (Introduction au DCL ? ?). Bien à toi la communauté. Denis...
  17. Rectifications sur les conseils de (gile), j'ai un logiciel de surveillance (MalWareBytes), qui annule les conseils de @(gile), en gros... Je fais tout ce qui est conseillé, mais rien est fait, et ce logiciel ne me dit pas qu'il a bloqué mes actions, car le problème vient bien de lui... Donc, j'ai mis MalWareBytes en "repos" et j'ai recommencé les conseils de Maître (gile)... Et effectivement, ça fonctionne. Mais j'avais un blocage sournois... Encore une fois de plus, je dois remercier le Grand (Gile)... Que cela serve à d'autre (comme à moi), les anti-tout....(...virus, ...malware...) peuvent agir sans même vous en faire part... Heureusement que CadXP existe ! ! ! Bien à toi la communauté. Denis...
  18. Salutations (gile), c'est bien ce que j'ai fais, et ce que je suis amené à faire souvent, il y a comme une petite habitude... Mais cette fois ci, ça ne fonctionne pas...
  19. Bonjour à la communauté. Je suis en train de faire un petit DCL, et j'ai tenté de faire un petit aperçu (Menu Outils->Outils d'interface->Aperçu DCL dans l'éditeur). Mais rien ne se passe... J'ai tenté le truc avec des DCL qui fonctionnent parfaitement dans AutoCAD, tout fonctionne dans AutoCAD, les DCL sont bien affichés, mais dans l'aperçu de l'IDE, rien, pas de message, pas de réponse, pas d'affichage... J'ai déjà eu des problèmes avec les droits d'accès (que CadXP avait résolu), mais là, rien... Une idée ?
  20. C'est curieux, car par défaut, c'est le choix "NORD 300g" qui est sélectionné. Et si je clique sur "Autre", dans la zone de saisie, c'est bien écrit "300g"... C'est peut-être fichier d'Alien Theory, ou un vieil X-Files... 😄
  21. Bonjour à vous, et merci pour votre aide. @lecrabe : l'affichage dans les propriétés est : "0" mais mes unités sont réglées à 2 décimales. @Eric : effectivement, en remettant la direction à "EST 0.00g" mon angle de rotation n'est plus de 0... Mais je ne pige toujours pas pourquoi, en changeant l'origine de la direction des Y, j'ai des décimales qui se promènent... Autre indice qui pourrait avoir son importance, dans la commande "DDINSERT", je dois systématiquement changer l'angle par défaut : 99.95...gr. En tous cas, un grand merci à vous deux. Bien à toi la communauté. Denis...
  22. Bonjour à la communauté. J'ai un bloc qui, dans les propriétés, a une rotation ortho (0 gr). mais quand je fais un "liste" de ce bloc, j' me retrouve avec : "Angle de rotation: 199.90g". Et ce n'est pas la première fois que je vois ça, mais là, c'est un de mes fichiers (ci-joint). Quelqu'un aurait-il une explication ? Bien à toi la communauté... Denis... Pb_Angle.zip
  23. Salut. Attention, les calques (et autres, comme les blocs, types de ligne...) contenant des caractères dits "interdits", comme les "#" "$" "*" "ù" "§" "&" ..., peuvent montrer des problèmes avec certains LiSP (et pas seulement)... Bien à toi la Communauté...
  24. Salut. A priori, ce Lisp ne fait pas que dessiner une polyligne, il insert aussi le bloc "NM-Gabarit-Topographie", et dans le calque "P-LINEAIRE". Si ce calque n'existe pas, je pense que ça provoque une erreur. Peut-être que le répertoire contenant le bloc "NM-Gabarit-Topographie" n'est pas référencé dans le nouvel AutoCAD (=>[Options], onglet [Fichiers] puis [Chemin de recherche de fichiers...] Ajouter le chemin qui contient le bloc). Je pense aussi qu'il faudrait placer après le "SetVAr" (ligne 5 ou 7) : (command "-calque" "e" "P-LINEAIRE" "") Juste histoire de créer et/ou de rendre actif le calque "P-LINEAIRE". Mais je pense surtout au chemin qui va chercher le bloc "NM-Gabarit-Topographie". Bien à la communauté. Denis H.
  25. Salut à la communauté. Rassure-toi Paulvdt, je fais encore la même erreur, et c'est souvent que Maître (gile), ou d'autres membres calés, m'aide ou me corrige. L'échange entre Lisp et DCL n'est pas très aisée, voir très ardu. La rigueur est de mise, et ça n'est pas mon fort... Comme à tous les novices, même les vieux novices. 😄
×
×
  • 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é