DenisHen Posté(e) le 10 février 2023 Posté(e) le 10 février 2023 Bonjour à la communauté. Je suis dans mes DCL, car je tente de faire du "tout Lisp" pour ne plus utiliser Lisp ET VBA en même temps, pour une seule macro. Je cherche donc à faire des fenêtre DCL qui ressembles le plus possible à celles du VBA. J'essai donc de faire des boutons avec des images, mais sur le Net comme chez AutoDesk, l'aide est très très succincte ! J'ai donc deux question : - quelle sont les syntaxes (Lisp et DCL) pour placer une image dans un bouton ? - quel est le format de l'image (BMP, GIF, PNG, ICO) ? Si quelqu'un a un site, un conseil... Je suis preneur. Bien à toi la communauté. Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Olivier Eckmann Posté(e) le 10 février 2023 Posté(e) le 10 février 2023 Bonjour, ici : https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/dcl-button-images/td-p/9863170 il y a une discussion intéressante, mais c'est un "subterfuge" compliqué pour simuler quelque chose non prévue, donc c'est compliqué à mettre en œuvre. Soit l'interface permet juste d'obtenir des infos, et quand tu cliques OK, ça fait le boulot. Dans ce cas tu fais le dialogue dans le langage que tu souhaites (VBA) puis tu lances la commande lisp avec tous les paramètres issus du dialogue. Soit tu dois interagir avec AutoCAD pendant ton dialogue, et là, soit tu fais tout en VBA soit tu passes à quelque chose de plus robuste DotNet (C# de préférence, éventuellement VB.Net si tu es allergique aux points virgules🙂 ) et tu fais tout avec 1 seul langage. Faire du DCL pour avoir de joli interface, ça ne fonctionne pas ou bien au prix d'effort "quasi insurmontable" Olivier
Fraid Posté(e) le 10 février 2023 Posté(e) le 10 février 2023 Bonjour, J'ai cela, de Terry Miller. Pas sur que cela puisse t'aider Olivier à raison, c'est une torture le DCL ; c:MyImageButton ; These images were created using GetVectors.lsp on AutoLISP Exchange ; (URL: http://web2.airmail.net/terrycad) ;------------------------------------------------------------------------------- (defun c:MyImageButton (/ Dcl_Id% Show_Image:) (princ "\nMyImageButton")(princ) ; Show_Image: ---------------------------------------------------------------- (defun Show_Image: (/ Ang CenPt Dist~ PickPt X# Y#) (start_image "Image1")(setq X# (dimx_tile "Image1")) (setq Y# (dimy_tile "Image1"))(end_image) (setq CenPt (list (/ X# 2)(/ Y# 2)) PickPt (list $x $y) Ang (angle CenPt PickPt) Dist~ (distance CenPt PickPt) );setq (cond ((< Dist~ (/ Y# 4))(Front_View));*Included ((< Ang (* pi 0.25))(Right_View));*Included ((< Ang (* pi 0.75))(Bottom_View));*Included ((< Ang (* pi 1.25))(Left_View));*Included ((< Ang (* pi 1.75))(Top_View));*Included (t (Right_View)) );cond );defun Show_Image: ;----------------------------------------------------------------------------- ; Load Dialog (setq Dcl_Id% (load_dialog "MyDialogs.dcl")) (new_dialog "MyImageButton" Dcl_Id%) ; Set Dialog Initial Settings (set_tile "Title" " My Image Button") (set_tile "Text1" "Pick arrows to change views.") (Front_View);*Included ; Dialog Actions (action_tile "Image1" "(Show_Image:)") (start_dialog) ; Unload Dialog (unload_dialog Dcl_Id%) (princ) );defun c:MyImageButton https://github.com/Fraiddd
Luna Posté(e) le 10 février 2023 Posté(e) le 10 février 2023 Coucou, Je ne pourrais malheureusement pas t'aider sur ce sujet précis car je n'ai jamais eu le temps d'étudier la gestion des images dans les DCL. Cependant, d'un point de vue purement logique, je dirais que ce n'est pas "placer une image dans un bouton" mais plutôt "faire d'une image un bouton". Le type de tile est différent selon le sens 🙂 Pour m'aider dans mes pérégrinations DCL, j'utilise ce site et ses exemples : https://autolisp-exchange.com/Tutorials/MyDialogs.htm Même si le design fait un peu viellot, c'est pas mal pour apprendre les notions ;] Bisous, Luna
Flobott Posté(e) le 10 février 2023 Posté(e) le 10 février 2023 Salut Denis, Pour les image boutons le DCL est de ce type : Pour ma part je génère le DCL dans mon lisp, mais le principe en fichier DCL externe est le même. Pour ce qui est du lisp, je vectorise mes images pour cela tu peut utilisé des lisp existant comme : "GetVectors" ou "Pixel Extractor" (une petite recherche sur CADxp) Je ne me souviens pas le quel j'avais utiliser pour celui là mais l'un des deux cité. Tu lance ton image de cette façons: Et tu peux récupérer l'action de la tuile de cette façon : Bonne découverte a toi 🙂 AutoCad c'est comme mon cerveau, je ne l'utilise qu'à 10% Oo
DenisHen Posté(e) le 10 février 2023 Auteur Posté(e) le 10 février 2023 Bonjour à vous, et un grand merci pour votre aide. Effectivement, j'ai trouvé beaucoup de réponse sur AutoLISP Exchange, mais pas ça 😪. @Olivier Eckmann : Merci pour ce lien. @Fraid : J'ai découvert ce site hier, très intéressant. @Luna: j'avais déjà fais ce choix, mais j'attendais de savoir s'il y avait une solution plus "propre" 😉, @Flobott: merci pour ces codes, j'ai déjà GetVectors et SetVectors, je vais regarder Pixel Extractor maintenant. Donc, cela va être un fardeau (en plus du DCL) pour insérer une image type "Windows" (BMP, ICO, GIF, PNG...) dans un bouton. Je pensais la chose plus "simple". Si j'ai bien compris, seule une image SLD ferais l'affaire, si non, utiliser une image comme bouton. Après quelques recherches sur la toile, le peu de site qui propose la conversion d'une image vers le SLD ne fonctionne pas. Encore merci à toi la communauté. Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Flobott Posté(e) le 10 février 2023 Posté(e) le 10 février 2023 Alors je me souviens d'un poste de LEEMAC avec l'utilisation des Bitmaps en image, un lisp"DisplayBitmap.lspet bitmapgenerator.lspetImageTiles.dcl Je n'ai pas eu le temps de creuser a l'époque pour crée des bibliothèque d'image. Si tu te dirige dans cette solution, un retour serais agréable. textwrap.dcl textwrap.lsp Edit : j'ai retrouvé le liens suivant : http://www.theswamp.org/index.php?topic=41938.msg470521#msg470521 AutoCad c'est comme mon cerveau, je ne l'utilise qu'à 10% Oo
DenisHen Posté(e) le 10 février 2023 Auteur Posté(e) le 10 février 2023 Je tente un truc, mais je ne sais pas où j'ai mal fais : Extrait de mon Lisp : (set_tile "ImgGetFiled" (findfile "Ok.gif")) Extrait de mon DCL : : image { action = "GetFile"; key = "ImgGetFile"; width = 5.42; height = 2.51; fixed_width = true; fixed_height = true; aspect_ratio=1.0; } En lieu et place de l'image, j'ai le début du FindFile en texte. Je pense que je vais devoir oublier les jolis boutons à la faveur de boutons textes... Snif... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
DenisHen Posté(e) le 10 février 2023 Auteur Posté(e) le 10 février 2023 Mille mercis @Flobott, c'est vrai que le résultat est sympas. Ca me convient très bien... Je m'en vais regarder ça de très près ! ! ! 1 Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
DenisHen Posté(e) le 10 février 2023 Auteur Posté(e) le 10 février 2023 J'ai trouvé des macros pour convertir des BMP en SLD, je les ai testé (y compris celle de notre regretté Patrick_35) mais aucune ne fonctionne. Mais je viens de remarquer que dans toutes les macros avec des DCL que j'ai, aucune contient des images pour des boutons. Tampis, j'utiliserais des boutons "simples", avec uniquement du texte... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
DenisHen Posté(e) le 10 février 2023 Auteur Posté(e) le 10 février 2023 Ce qui est dommage, avec le DCL, c'est qu'on ne maitrise pas "finement" la disposition des élément dans la fenêtre. Ici, le edit_box n'est pas à la même hauteur que le button. Je n'arrive pas à faire une sorte de "mise en page", comme les caractères gras ou italique... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Flobott Posté(e) le 10 février 2023 Posté(e) le 10 février 2023 Citation Mais je viens de remarquer que dans toutes les macros avec des DCL que j'ai, aucune contient des images pour des boutons. C'est aussi mon cas, je ne voulais pas avoir de fichier en plus de mon lisp alors les image en vectoriel me conviennent bien. Petit exemple que j'avais fait en exercice a l'époque si cela peu t'aider : EDCL7 .lsp Citation Je n'arrive pas à faire une sorte de "mise en page", comme les caractères gras ou italique... Il ne faut pas être trop exigent avec les DCL, c'est une interface basique 😉 AutoCad c'est comme mon cerveau, je ne l'utilise qu'à 10% Oo
Flobott Posté(e) le 10 février 2023 Posté(e) le 10 février 2023 J'avais aussi ce lisp pour les image en vectoriel: VECTORIZE.lsp AutoCad c'est comme mon cerveau, je ne l'utilise qu'à 10% Oo
DenisHen Posté(e) le 10 février 2023 Auteur Posté(e) le 10 février 2023 Un super grand merci à toi @Flobott. Je ne comprends pas pourquoi, les DCL des autres sont bien "paginées" et pas les miennes 😢. Mais c'est vrai que c'est "basique". Deux petites choses : - ton EDCL7.lsp a des images magnifiques, mais elles prennent du temps à s'afficher et, quand je parcours le LSP (1.7Mo) dans l'IDE, AutoCAD plante systématiquement ! ! ! - ton Vectorize.lsp est carrément magique, mais cela signifie que la vectorisation se fait depuis les entités d'un DWG et non depuis un fichier PNG, GIF... Encore merci, je vais voir tout ça. Mais je pense finir sans images. Encore merci. Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Flobott Posté(e) le 10 février 2023 Posté(e) le 10 février 2023 Citation ton EDCL7.lsp a des images magnifiques, mais elles prennent du temps à s'afficher et, quand je parcours le LSP (1.7Mo) dans l'IDE, AutoCAD plante systématiquement ! ! ! Je n'ai pas de plantage sur mes machines, c'est un exemple que j'ai utilisé comme base pour mon menu d'un gros lisp perso, je viens de tester dans l'IDE que je n'utilise que rarement mais il ne plante pas sur ma machine. L'image met quelque dixième de second pour se placer correctement mais cela ne me dérange pas du moment que l'image est compréhensible. Citation - ton Vectorize.lsp est carrément magique, mais cela signifie que la vectorisation se fait depuis les entités d'un DWG et non depuis un fichier PNG, GIF... Encore merci, je vais voir tout ça. Oui je convertis mes images en vecteur et les retravaille au propre sur un dwg et je l'ai convertie en vecteur pour le lisp.Logo_Outils.dwg En faisant des images plus simples, je pense que le chargement serait plus instantané à tester 🙂 AutoCad c'est comme mon cerveau, je ne l'utilise qu'à 10% Oo
DenisHen Posté(e) le 10 février 2023 Auteur Posté(e) le 10 février 2023 Wouaouw ! ! ! Je comprends maintenant pourquoi il y a un petit temps de chargement des images vectorisées dans le DCL... Très jolies pictogrammes d'ailleurs. Je verrais plus tard pour convertir mes PNG en DWG. Encore merci à toi. Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Flobott Posté(e) le 24 mars 2023 Posté(e) le 24 mars 2023 Le 10/02/2023 à 11:23, DenisHen a dit : Ce qui est dommage, avec le DCL, c'est qu'on ne maitrise pas "finement" la disposition des élément dans la fenêtre. Ici, le edit_box n'est pas à la même hauteur que le button. Je n'arrive pas à faire une sorte de "mise en page", comme les caractères gras ou italique... J'ai trouvé une solution pour aligner les edit_box et les boutons il suffit de rajouter : vertical_margin=none; dans l'edit_box voire le lien suivant : https://www.cadtutor.net/forum/topic/70013-vertical-alignment-dcl/ AutoCad c'est comme mon cerveau, je ne l'utilise qu'à 10% Oo
DenisHen Posté(e) le 31 mars 2023 Auteur Posté(e) le 31 mars 2023 Salut @Flobott et merci pour ton aide. Effectivement, il n'y a presque pas d'aide en ligne là-dessus. Mais il me semble que "vertical_margin" ne fonctionne pas partout. Comme dans ce genre de cas, par exemple : : radio_row { : text {label = "Style d'ouvrant :";vertical_margin = none;alignment = left;} : radio_button {label = "Fenêtre";key = "OuvFen";width = 13;} : radio_button {label = "Porte";key = "OuvPor";width = 13;} } Merci encore. Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Flobott Posté(e) le 7 avril 2023 Posté(e) le 7 avril 2023 Salut @DenisHen pas de soucis pour le partage. Pour le texte et les radios, tu peux faire l'inverse pour les alignées sur leur base, tu mets le "vertical_margin = none;" sur les boutons radios; pour avoir un résultat plus propre ^^ J'avais dû aligner des images avec des boutons radio : 1 AutoCad c'est comme mon cerveau, je ne l'utilise qu'à 10% Oo
DenisHen Posté(e) le 7 avril 2023 Auteur Posté(e) le 7 avril 2023 Salut @Flobott et merci pour ton aide. Ce que je n'arrive pas à faire, c'est aligner un text avec un edit_box : Voici mon code : Et la fenêtre : Comme tu peux le constater. J'ai essayé beaucoup de combinaisons, mais rien y fait. Et je veux éviter un label avec les row, qui serait plus simple, mais le cadre prend trop de place, car ici, c'est un petit test, ma fenêtre d'origine est beaucoup plus grande. J'ai l'impression que ça ne fonctionne pas avec tout. Encore merci à toi. Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
SF.Designer Posté(e) le 7 avril 2023 Posté(e) le 7 avril 2023 Si ca peut aider, voici une fenêtre qui m'a bien pris la tête a aligner. Il faut vraiment tous mettre dans des colonnes et des lignes, des colonnes dans les lignes, des lignes dans les colonnes (piouf), puis jouer sur les marges et alignements ! Print.dcl
DenisHen Posté(e) le 7 avril 2023 Auteur Posté(e) le 7 avril 2023 Merci pour ton aide @SF.Designer. Lignes, colonnes., lignes dans colonne et colonnes dans ligne, c'est ce que je pense avoir fais. Mais je vais revoir ma copie, histoire de dire que j'aurais bien fouillé le bidule. Encore merci. Denis... Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
Flobott Posté(e) le 7 avril 2023 Posté(e) le 7 avril 2023 Citation Ce que je n'arrive pas à faire, c'est aligner un text avec un edit_box : @DenisHen Pour aligner le texte à un edit_box il faut mettre ton texte dans une colonne, mettre ton édit box dans une autre colonne et mettre les deux colonnes dans une ligne. c'est ce que j'ai dans ma boîte de dialogue "données câble" : AutoCad c'est comme mon cerveau, je ne l'utilise qu'à 10% Oo
didier Posté(e) le 7 avril 2023 Posté(e) le 7 avril 2023 Bonjour @Flobott J'ai fait ce que tu préconises, c'est à dire trois colonnes dans une ligne pour l'exemple fourni par @DenisHen Force est de constater que l'alignement n'est pas au rendez-vous, qu'ai-je loupé ? Amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
DenisHen Posté(e) le 7 avril 2023 Auteur Posté(e) le 7 avril 2023 Salut @didier, je viens à l'instant de faire la triste et même observation. J'ai tenté le coup avec des vertical_alignment que j'ai "inventé". Car je ne l'ai trouvé nul part, c'est en tapant au pif qu'il s'est colorisé en bleu dans l'IDE, coup de bol... Le code : La fenêtre : Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
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