Aller au contenu

Flobott

Membres
  • Compteur de contenus

    63
  • Inscription

  • Dernière visite

  • Jours gagnés

    2

Tout ce qui a été posté par Flobott

  1. Un petit retour après mes tests sur la commande hyperlien. J'ai testé la commande : "-hyperlink" pour comprendre un peu mieux son fonctionnement en LISP. Et j'ai eu quelques surprises, constatant qu'en utilisant la boîte de dialogue hyperlien je n'avais pas les mêmes résultats quand lisp Oo J'ai finalement réussi à créer des hyperliens fonctionnels en dwg et PDF grâce au lisp : (defun C:HYPDF ( / jeusel lien empl descr) (setq jeusel (ssget)) (setq lien "C:\\Users\\xxxxx\\xxxxx\\xxxxx\\PDF\\TestPDF.pdf") (setq empl "") (setq descr "PDF") (command "-hyperlink" "_I" "_O" jeusel "" lien empl descr) ;Commande hyperlien : ; -hyperlink -> Option 1 : "_I" pour Insérer sinon ("_S" pour Suppimer). ; -hyperlink -> Si "_I" -> "O" pour Objet (sinon "_Z" pour Zone). ; -hyperlink -> Si "_I" et "O" -> selection de l'objet et "entrer" pour valider. ; -hyperlink -> lien pour "Entrez un hyperlien <dessin courant> en défaut. ; -hyperlink -> empl pour "Entrez un emplacement nommé <aucun> en défaut. ; -hyperlink -> descr pour "Entrez une description <aucune> en défaut. (princ) ) ; Création d'un hyperlien avec la boite de dialogue -> onglet fichier/page web existant -> bouton Fichier : les hyperlien vers d'autre fichier .dwg .pdf .gif Fonctionne dans le DWG où est l'hyperlien mais dans un PDF, l'hyperlien est affiché par le PDF mais ne se lance pas ! onglet fichier/page web existant -> bouton Fichier -> bouton cible : les hyperlien vers d'autre fichier .dwg .pdf .gif Fonctionne dans le DWG où est l'hyperlien mais pas dans un PDF, l'hyperlien n'est plus présent dans le PDF ! (testé avec cible Objet, présentation et Vue) Création d'un hyperlien avec la boite de dialogue -> Onglet texte "fichier/page web existant en copiant" en copiant : C:\\xxx\\xxxx\\xxx\\Teste pdf liaison\\4780113089000.dwg (lien comme dans un lisp), l'hyperlien fonctionne dans le DWG et le PDF ! Voilà mes constats, si d'autres sont intéressés par ces différences n'hésitaient pas à rapporter d'autres différences constatées. En conclusion, je cherche toujours à lier mes pdf en lien hypertexte ou autre méthode.
  2. Merci Olivier, je n'ai pas de présentation pour mes Tracé par lot, je n'utilise que les espaces objet mais le principe devrait être le même. Pourtant après un test, je n’obtiens aucun résultat avec les vues de dessin en pdf mais dans les dwg cela fonctionne et m'ouvre le dwg dans l'espace objet. Je vous montre la manipulation effectué par vidéo : https://icecreamapps.com/v/bqqtmam Moi non plus, il semblerait que je n'ai pas la bonne pratique.
  3. Bonjour, J'aimerais moderniser mes plans. (un peu comme sur un logiciel de CAO créer des liaisons hypertexte de feuille en feuille dans un PDF Multi-feuille) Dans cette optique, je me suis rendu compte que l'on pouvait utiliser les hyperliens pour lier des objets "texte" a des dwg. Je fais un "Ctrl" + "Clic" sur l'objet texte "10" qui a en hyperlien le chemin du folio 10 et AutoCAD m'ouvre le Folio 10.dwg. N'existe-t-il pas une solution pour pouvoir lier les numéros de page de mon sommaire à celui des folios de mon plan lors d'une publication par lot en PDF ? Peut-on lier un objet texte à un signet ou une bannière de nom de fichier ? Forcé de constater que mes recherches en solitaire ne mon pas fait avancer. Si vous avez une piste de recherche, des idées à proposer, si vous pensez que cela est réalisable.
  4. Bonjour, Merci pour l'explication d'exécution cela fonction parfaitement pour les fichier DCL. Question subsidiaire, peut ton utiliser "outils d'interface" avec un DCL intégré au lisp ? Je ne pense pas que Visuel Lisp réussis a détecté un DCL dans un lisp mais peut-être que !
  5. 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. 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 🙂
  6. J'avais aussi ce lisp pour les image en vectoriel: VECTORIZE.lsp
  7. 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 Il ne faut pas être trop exigent avec les DCL, c'est une interface basique 😉
  8. 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
  9. 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 🙂
  10. Merci pour l'exemple, je n'y manquerai pas en poussant et en regroupant mon code. J'ai séparé l'écriture de l'ouverture pour mieux comprendre les deux, j'ai dans l'idée d'ajouter une interface DCL à un de mes lisps ou j'aurais plusieurs écritures. Dans un premier temps, maintenant que je visualise mieux comment cela fonctionne, je vais déjà tester les différents types de bouton. Et ensuite essayé de mélanger les boutons, les textes ... j'ai même cru voir des interfaces graphiques en DCL ^^ C'est la découverte pour moi cette partie en DCL et cela me fait découvrir de nouvelle chose en lisp. En tenant compte de vos remarques, j'arrive à cela. Merci pour le coup de pouce 😉
  11. Nos postes se sont croisé ^^ merci pour ta réponse Luna J'ai pour habitude d'utiliser des commande C:XXX -> (C:XXX), ce n'est peut être pas très classique mais je n'ai jamais vue la différence d'un appel de fonction XXX -> (xxx) Peut-tu m'en donner un exemple, je t'avoue ne pas bien saisir cette partie ?
  12. Merci Gile, j'avais déjà utilisé cette méthode qui ma permis de résoudre certains autre soucis, mais depuis cette partie cela ne me cible plus rien. Sans sucés sur cette partie là (Visual lisp m'affiche un message lors du Ctr-F9) , avec cette méthodes j'obtiens ceci : voir image. Merci Olivier, Remplacement de (setq DCL1_ID (load_dialog tmpEDCL1.dcl)) Par (setq DCL1_ID (load_dialog NonFichierEDCL1)) et je réinitialise les variables / NonFichierEDCL1 FichierEDCL1 dans la fonction principale et non dans la partie écriture du DCL. Et j'obtiens cela : (defun C:EcritureEDCL1 (/ ) (setq NonFichierEDCL1 (vl-filename-mktemp "tmpEDCL1.dcl") ;filename -> non de fichier. FichierEDCL1 (open NonFichierEDCL1 "W") ;(open "fichier" mode) -> ouvrir le fichier / "r" (read) pour lecture / "w" (write) pour écriture / "a" (append) pour complément. ) (write-line ;Écriture d'une ligne de texte à l'écran texte ou dans un fichier externe. (strcat ;Concaténation de plusieurs chaînes de caractères (STRING). "EDCL1 : dialog { " ;Lance la boite de dialogue DCL du nom de EDCL1. "label = \"TEST EDCL1\"; " ;Dédinition du titre de la boite de dialogue. "spacer; " ;Creation d'un espace avant le texte. ": text { " ;Affiche un texte. "label = \"Toto est dans la place !\"; " ;Définition du texte. "alignment = centered; " ;Qui est aligne au centre. "} " ;Fin du texte. "spacer; " ;Creation d'un espace apres le texte. "ok_only; " ;Creation du bouton OK (Seul). "}//EDCL1 " ;Fin du DCL. );fin strcat FichierEDCL1 ;Ouverture du fichier. ); fin write-line (setq FichierEDCL1 (close FichierEDCL1)) ;(close [descripfichier]) -> fermer le fichier. );fin defun EcritureEDCL1 (defun C:EDCL1 (/ DCL1_ID NonFichierEDCL1 FichierEDCL1) (vl-load-com) (if FichierEDCL1(close FichierEDCL1)) ;Si fichier ouvert -> fermer le fichier. (if NonFichierEDCL1(vl-file-delete NonFichierEDCL1)) ;Si fichier temporaire existant -> le supprimer. (C:EcritureEDCL1) ;Appel le lisp d'ecriture DCL et le lance en ecriture. (setq DCL1_ID (load_dialog NonFichierEDCL1)) ;Appel de la boîte de dialogue DCL temporaire. (if (not (new_dialog "EDCL1" DCL1_ID)) ;Si pas d'initialisation de la boîte de dialogue. (exit) ;Alors on sort. ) (start_dialog) ;Lance l'affichage de la boite de dialogue DCL. (unload_dialog DCL1_ID) ;Décharge le fichier de la boite de dialogue DCL. (vl-file-delete tmpEDCL1) ;Supprime le fichier temporaire DCL. (princ) ;Affiche une ligne vide pour la finition. );fin de defun c:EDCL1 Et cela fonctionne 🙂 Merci pour l'aide a la réflexion.
  13. Bonjour à toutes et tous. Je me lance dans la découverte des DCL. Et ayant réussi mon premier test avec deux fichiers distincts .lsp et .dcl. J'arrive à avoir une boîte de dialogue avec mon message et mon petit bouton OK DCL1 : dialog { label = "TEST EDCL1"; spacer; : text { label = "Toto est dans la place !"; alignment = centered; } spacer; ok_only; }//Premier (defun C:DCL1 (/ Dcl_Id) (setq Dcl_Id (load_dialog "DCL1.dcl")) (new_dialog "DCL1" Dcl_Id) (start_dialog) (unload_dialog Dcl_Id) (princ) );fin de defun C:DCL1 Étape suivant, on doit pouvoir imbriquer les deux et je suis arrivé à cela avec une erreur que je n'arrive pas à résoudre. erreur: type d'argument incorrect: stringp nil (defun C:EcritureEDCL1 (/ NonFichierEDCL1 FichierEDCL1) (setq NonFichierEDCL1 (vl-filename-mktemp "tmpEDCL1.dcl") ;filename -> non de fichier. FichierEDCL1 (open NonFichierEDCL1 "W") ;(open "fichier" mode) -> ouvrir le fichier / "r" (read) pour lecture / "w" (write) pour écriture / "a" (append) pour complément. ) (write-line ;Écriture d'une ligne de texte à l'écran texte ou dans un fichier externe. (strcat ;Concaténation de plusieurs chaînes de caractères (STRING). "EDCL1 : dialog { " ;Lance la boite de dialogue DCL du nom de EDCL1. "label = \"TEST EDCL1\"; " ;Dédinition du titre de la boite de dialogue. "spacer; " ;Creation d'un espace avant le texte. ": text { " ;Affiche un texte. "label = \"Toto est dans la place !\"; " ;Définition du texte. "alignment = centered; " ;Qui est aligne au centre. "} " ;Fin du texte. "spacer; " ;Creation d'un espace apres le texte. "ok_only; " ;Creation du bouton OK (Seul). "}//EDCL1 " ;Fin du DCL. );fin strcat FichierEDCL1 ;Ouverture du fichier. ); fin write-line (setq FichierEDCL1 (close FichierEDCL1)) ;(close [descripfichier]) -> fermer le fichier. );fin defun EcritureEDCL1 (defun C:EDCL1 (/ DCL1_ID) (vl-load-com) (if FichierEDCL1(close FichierEDCL1)) ;Si fichier ouvert -> fermer le fichier. (if NonFichierEDCL1(vl-file-delete NonFichierEDCL1)) ;Si fichier temporaire existant -> le supprimer. (C:EcritureEDCL1) ;Appel le lisp d'ecriture DCL et le lance en ecriture. (setq DCL1_ID (load_dialog tmpEDCL1.dcl)) ;Appel de la boîte de dialogue DCL temporaire. (if (not (new_dialog "EDCL1" DCL1_ID)) ;Si pas d'initialisation de la boîte de dialogue. (exit) ;Alors on sort. ) (start_dialog) ;Lance l'affichage de la boite de dialogue DCL. (unload_dialog DCL1_ID) ;Décharge le fichier de la boite de dialogue DCL. (vl-file-delete tmpEDCL1) ;Supprime le fichier temporaire DCL. (princ) ;Affiche une ligne vide pour la finition. );fin de defun c:EDCL1 Je pense que c'est dans la partie d'écriture du DCL que cela ne va pas. Je n'arrive pas a comprendre ou mon code échoue. En vous remerciant d'avance pour votre lecture et futures réponses.
  14. Merci Gile, les références ActiveX dans l'aide vont bien m'aider et le liens pour le sujet de la syntaxe "VLISP" est bien faite. 🙂
  15. Ah ouais, d'un coup c'est beaucoup plus clair sur le principe. Je comprends mieux, essayer de comprendre de l'abrégé pour en apprendre la langue n'est pas le plus adéquat 😅 Merci Luna, cela m'explique déjà où reprendre mes bases, et comment comprendre les VLISP ^^ Edit : Quand j'aurais un peut de temps, je referais se code en développé pour bien comprendre les méthodes utilisé.
  16. C'est exactement ce que je voulais faire bonuscad 😄 Merci beaucoup ^^ Maintenant, il faut que je comprenne ce bout de VLISP : ((member (vla-get-ObjectName (setq nw_txt (vlax-ename->vla-object (car nw_txt)))) '("AcDbAttribute" "AcDbMText" "AcDbText")) (vla-put-textstring nw_txt Si je déchiffre ton ajout de code : (while (setq nw_txt (nentsel "\nSéléctionnez un texte ou un attribut cible: ")) ;Tant qu'une entité texte ou attribut est selectionné. (cond ;Début de la condition. ((member (vla-get-ObjectName (setq nw_txt (vlax-ename->vla-object (car nw_txt)))) '("AcDbAttribute" "AcDbMText" "AcDbText")) ;Je récupère l'entée utilisateur tronqué à partir de "l'ename" dans la liste -> "member (vla-get-ObjectName" ;pour la valeur "nw_txt" -> "setq nw_txt" ;Je transforme l'ename en object VLA -> "vlax-ename->vla-object" ;et recupère la premiere partie de celle-ci. -> "car nw_txt" ;pour les attributs, textes et Multi-textes -> "AcDbAttribute" "AcDbMText" "AcDbText" (vla-put-textstring nw_txt ;Renvoie le contenu textuel de nw_txt ;----------------------------------------------------------------------------------- (strcat ;Concaténation de plusieurs chaînes de caractères "%<\\AcObjProp Object(%<\\_ObjId " (vla-GetObjectIdString (vla-get-Utility doc) txt :vlax-false) ;je recupère le texte ">%).TextString \\f \"%tc1\">%" ) ;----------------------------------------------------------------------------------- ) (vla-regen Doc acactiveviewport) ; regen du document pour la mise a jours des champs ) ) ;Fin de la condition. ) Le VLISP est quand même bien particulier, j'ai vraiment du mal à le manipuler contrairement au LISP classique mais à force je finirais bien par réussir à en faire comme du LISP. Ou puis-je trouver des descriptions des VLA propriété comme "vla-put-textstring" pour mieux approfondir le sujet ? J'aimerais bien apprendre à les manipuler. Encore merci 😉
  17. Merci pour ta réponse Vincent mais ce n'est pas ce que je cherche à faire en faite. Je souhaite en faisant un clic sur un premier texte ou attribut éditer le/les prochain(s) texte(s) en champs -> Objet -> Objet -> index du premier texte. Et je ne comprends pas comment éditer un texte en LISP, avec : "_textedit" ; je pensais pouvoir mais malgré plusieurs testes, je n'arrive pas à automatiser une édition de texte et je me demandais si cela était faisable en VLISP. Le LISP au-dessus n'est fonctionnel que pour la première partie avant " (commande "_textedit" ... " car je récupère bien la valeur du texte dans la première partie du LISP.
  18. Bonjour, n'étant pas habitué au VLISP je viens demander un peu d'aide. (Manuellement je mets en champs objet -> index un texte dans une autre zone de texte grâce au champ et je copie celui-ci autant de fois que j'en ai besoin dans mon folio. Je fais cela lorsque je sais que je vais devoir refaire X fois le folio avec la première valeur texte à modifier dans le folio d'après) Mais c'est plutôt rébarbatif à faire tout le temps à la main et je voulais automatiser cette manipulation. J'ai donc voulu me faire un lisp pour réaliser cette manipulation mais je bloque sur la partie où je sélection ma zone de texte à éditer pour en crée mon champ d'objet -> index en VLISP ou LISP, si possible... 1er question : Peut-on éditer un texte en VLISP ? 2e question : comment fait-on pour crée un champ dans un texte en VLISP ? ou puis-je réaliser les créations de champ en lisp classique ou je serais plus a l'aise ? (j'ai bien compris que je devais reprendre l'expression de mon champ et la concaténer avec l'ename en VLA-object mais il me manque quelque chose.) J'ai donc commencé ce bout de code, j'ai trouvais comment le fait en créant un texte avec vla-AddText mais pas en éditant le texte. (defun c:toto (/ doc txt) (vl-load-com) ;charge le support ActiveX complet (setq doc (vla-get-Activedocument (vlax-get-acad-object))) ;; Accès au dessin courant d'AutoCAD. ;; ;"vla-get-Activedocument" : Accéder au document actif / "vlax-get-acad-object" : Accéder à "l'objet" AutoCAD (if (and (setq txt (car (nentsel "\nSéléctionnez un texte ou un attribut: "))) ;Le "setq" crée la valeur "txt" qui recuperera le nom d'entité du texte selectionné en premant la premiere liste "ename" avec "car" (member (vla-get-ObjectName (setq txt (vlax-ename->vla-object txt))) ;"member" renvoie la liste tromqué a partir de vla-get-ObjectName ;"vlax-ename->vla-object txt" : Conversion d'une entité (ename) en VLA-OBJECT pour le texte. '("AcDbAttribute" "AcDbMText" "AcDbText") ;dans les sous classe attributs, multi-texte et texte ) ) (command "_textedit" ;----------------------------------------------------------------------------------- (strcat ;Concaténation de plusieurs chaînes de caractères "%<\\AcObjProp Object(%<\\_ObjId " (vla-GetObjectIdString (vla-get-Utility doc) txt :vlax-false) ">%).TextString \\f \"%tc1\">%" ) ;----------------------------------------------------------------------------------- ) ) (princ) )
  19. Flobott

    Question champs

    Oui je me disais aussi lecrabe, j'ai cherché un peu du coté des expressions Diesel car j'utilise beaucoup les champs pour récupérer mes numéros de folios en substituant le début des noms de mes Dwg et leur appliqué +1 ou -1 pour les renvois, mais je n'ai pas trouvé la possibilité de cibler un attribut... s'est plutôt fait pour récupérer une information liée au dwg que l'espace objet j'ai l'impression.
  20. Salut la communauté, Une question pour les amateurs de champs : J'ai un bloc avec deux attributs le premier sous la forme "X1.2" et l'autre "3". Le deuxième attribut aura toujours la valeur n+1 du dernier chiffre de mon premier attribut exemple: 1er -> "X5.7" alors le 2e -> "8" Je cherchais un moyen via les champs de définir le 2e attribut en fonction du premier et comme le premier n'est pas simplement un chiffre mais un groupe de caractères je bloque. Je suis partie sur un champ "Formule" dans lequel j'ai fait un champ "Objet" et récupéré la propriété de mon premier attribut et je souhaite lui appliquer +1 sur le dernier chiffre du groupe de caractères de mon attribut, si quelqu'un à une idée ? Merci d'avance.
  21. Oui tout à fait rebcao, c'est similaire à ce que l'on a développé dans notre entreprise pour la réalisation de nos plans électriques ^^ Il n'y a que sur ce forum où je peux parler avec des personnes qui ont ce type de notion ! Je ne suis pas convaincue qu'il y est beaucoup d'entreprise qui pratique cette méthode et je pense que c'est principalement pour cela que je suis resté dans mon entreprise actuelle, d'expérience la plus par des BE élec que j'ai pratiqués ou visités font de l'AutoCAD à la dure et certains non même pas de notion de dynamique ou de blocs... sinon les BE sont en CAO ce n'est que du SEE Electrical en majorité et les mecs n'utilise AutoCAD que lorsque les plans sont en dwg. Désolé Aleck c'était très générique, je voulais rester simple dans mon point de vue cela doit largement être faisable avec une schématique unifilaire.
  22. Bonjour, Je suis Tech BE en électricité dans une société d'automatisme industriel et nous travaillons principalement dans l'agroalimentaire. Je réalise mes plans électriques principalement sur AutoCAD (Nous sommes en version "Electrical" mais que nous n'utilisons qu'en version AutoCAD... xD ) Pour répondre à t'as remarque: "je trouve parfois la méthode un peu archaïque, 1 .dwg = 1 folio et tout dans l'espace objet même le cartouche." Cela dépend de comment vous réalisé vos plans, si vous faite tous à "l'os" oui cela est archaïque, tu pourrais très bien avoir un cartouche dans une présentation mais est-ce utile ^^ Pour ma part, nous avons deux types de bibliothèque pour la réalisation de nos schémas, une pour réaliser à l'os (pour modification et petit projet/ajout) et une pour une génération via LISP en interface Excel/base de donnée sur le serveur (pour réalisation de nouveau plan). En gros, on imbrique nos blocs dont mon cartouche qui est remplie en Excel et tous nos bloc vienne se placer dans l'espace objet. De plus nous n'utilisons qu'un folio par équipement ce qui favorise la réalisation avec des folios "type" d'instrumentation avantage rapidité,lisibilité, or inconvénient les plans sont plus gros. Mes distributions sont préfètes en fonction d'armoire ou de coffret type. (on a généralisé notre méthode pour réussir à faire dans des configuration type 90% de nos demande) Mes folios puissance moteur sont propre à chaque moteur mais générique, un départ direct sans disjonction, un variateur Danfoss, un démarreur schneider ect ect Tout cela pour te dire qu'en fonction de comment tu utilises AutoCAD, tu peux être en DAO, mais presque travaillé comme en CAO et pratiquant aussi SEE Electrical, je préfère AutoCAD pour la modularité, car même si tu arrives au bout d'AutoCAD avec le LISP tu peux pousser plus loin.
  23. Flobott

    Fermeture de dessins

    Parfaitement parfait ^^ J'avais teste closeall mais sans "_" cela ne fonctionné pas. Merci beaucoup Steven.
  24. Flobott

    Fermeture de dessins

    Merci beaucoup Steven :), j'avoue que je n'aurais pas eu l'idée d'aller cliqué sur l'onglet d'un de mes dessins. Il existe une commande liée à se fermer tout ?
  25. Bonjours J'aimerais savoir comment je peut fermer plusieurs dessin sans fermer AutoCAD, car j'ai pour habitude de sauvegarder mes dessins via "SAVEALL" et je ferme alors tous mes dessin manuellement, y'a t'il une façons de fermer tous mes dessin ouvert en une fois ? Merci d'avance.
×
×
  • 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é