SpecialOne54 Posté(e) le 22 mai 2023 Posté(e) le 22 mai 2023 Bonjour à tous, ma requête me semble simple mais je n'ai trouvé aucune information à ce sujet. J'aimerai un code vba qui imprimerait l'onglet présentation en format pdf qui ouvrirait le pdf directement. Si quelqu'un saurait comment faire je suis preneur ! Merci pour votre aide !
Steven Posté(e) le 22 mai 2023 Posté(e) le 22 mai 2023 Bonjour @SpecialOne54, Il n'y a pas besoin de code VBA pour çà. Dans les option de l'imprimante PDF, allez dans les options de celle-ci. Puis cochez Afficher le résultat dans le visualiseur. Steven________________________________________ Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD. Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD. En rêve; AutoCAD sous Linux.
SpecialOne54 Posté(e) le 22 mai 2023 Auteur Posté(e) le 22 mai 2023 Je sais qu'il n'y a pas besoin de vba pour cela mais j'aimerai le faire à partir de VBA. J'ai déjà un code qui permet de sauvegarder le fichier autocad et d'imprimer en pdf la vision du dessin. Cependant j'aimerai pouvoir faire de même mais avec l'onglet présentation pour ne pas à avoir zoomer manuellement sur la zone qu'on veut.
Curlygoth Posté(e) le 22 mai 2023 Posté(e) le 22 mai 2023 Juste ouvrir le fcihier pdf ? si tu as le chemin du pdf : tu peux ajouter ça : Set MonApplication = CreateObject("Shell.Application") MonApplication.Open (MonFichier) Mon site Web (en cours de construction) : Site DA-CODE de @didier
SpecialOne54 Posté(e) le 22 mai 2023 Auteur Posté(e) le 22 mai 2023 Le pdf n'est pas encore créé. J'aimerai un code qui permet d'imprimer l'onglet présentation en format pdf et dans la foulée de l'impression ouvrir le fichier pour qu'il apparaisse.
Curlygoth Posté(e) le 22 mai 2023 Posté(e) le 22 mai 2023 a ok xD result = ThisDrawing.Plot.PlotToFile(plotFileName) result renvoie true si ok et false s'il y a une erreur plotFileName est le chemin complet du pdf c:\...\fichier.pdf si tu veux plus d'infos,hésite pas 😉 Mon site Web (en cours de construction) : Site DA-CODE de @didier
SpecialOne54 Posté(e) le 22 mai 2023 Auteur Posté(e) le 22 mai 2023 Merci pour ta réponse ! Je suis assez débutant sur vba Autocad alors est ce que tu pourrais m'expliquer le fonctionnement de ton code ? Cela permet de créer le pdf à partir de l'onglet présentation ?
Steven Posté(e) le 22 mai 2023 Posté(e) le 22 mai 2023 Il y a 3 heures, SpecialOne54 a dit : Je sais qu'il n'y a pas besoin de vba pour cela mais j'aimerai le faire à partir de VBA. J'ai déjà un code qui permet de sauvegarder le fichier autocad et d'imprimer en pdf la vision du dessin. Cependant j'aimerai pouvoir faire de même mais avec l'onglet présentation pour ne pas à avoir zoomer manuellement sur la zone qu'on veut. Pourrais-tu expliquer l'avantage qu'il y aurait d'imprimer en PDF à l'aide d'un code VBA. J'avoue ne pas comprendre la finalité de ta demande. Si j'ai bien compris, mais peut-être que je me trompe, tu souhaiterais imprimer une présentation sans avoir besoin d'aller dedans. Soit. Tu souhaiterais avoir la même vue que tu aurais dans ton espace objet. Mais comment feras-tu pour mettre ton dessin à une échelle particulière ? Comment feras-tu pour gérer les calques dans la fenêtre de présentation, au cas échéant ? Comment ferais-tu pour indiquer l'échelle d'impression du dessin sur ton cartouche ? Quelques explications seraient le bienvenue pour comprendre exactement ta demande. Steven________________________________________ Pour le taf; Windows (et ses emmerdes) sinon pas d'AutoCAD. Pour le perso Linux Mint et pas de problèmes. Mais pas d'AutoCAD. En rêve; AutoCAD sous Linux.
SpecialOne54 Posté(e) le 22 mai 2023 Auteur Posté(e) le 22 mai 2023 Alors je vais tâcher de te répondre de façon compréhensible. L'idée est de rendre l'impression très rapide et accessible même à un débutant. Dans mon projet, je réalise le pointage de l'avancement des travaux directement grâce à des macros sur mon plan autocad. Une fois ce pointage réalisé, j'aimerai que le simple clic sur un bouton permette de sauvegarder le fichier autocad et également d'imprimer la présentation. La présentation serait quand à elle figée manuellement en amont sur la vue qu'on désire. L'appui sur un bouton l'imprimerait seulement en pdf et afficherait ce pdf sur l'écran directement. Pour l'instant, j'ai fait une macro qui, en appuyant sur un bouton, sauvegarde le fichier autocad sous un certain nom et imprime en pdf sous format A3 paysage l'onglet objet à partir de la vue que j'avais de l'objet au moment ou j'ai appuyé sur le bouton. Pour le pdf je n'aurai pas besoin de cartouche ou que l'échelle soit rappelée car il servirait seulement à l'aspect visuel et à figer l'avancement des travaux à une certaine date qui sera stipulée dans le nom du fichier. En espérant avoir répondu à tes interrogations. Si non je t'écoute pour d'autres questions. Merci beaucoup !
Curlygoth Posté(e) le 22 mai 2023 Posté(e) le 22 mai 2023 Tu peux connecter tes attributs a tes macro grâce aux objets. Si ton cartouche est un bloc qui des attributs très facile de les renseigner Regarde dans mes réalisations tu comprendras ;-) Mon site Web (en cours de construction) : Site DA-CODE de @didier
Curlygoth Posté(e) le 22 mai 2023 Posté(e) le 22 mai 2023 Il y a 1 heure, Steven a dit : Pourrais-tu expliquer l'avantage qu'il y aurait d'imprimer en PDF à l'aide d'un code VBA. J'avoue ne pas comprendre la finalité de ta demande. Si j'ai bien compris, mais peut-être que je me trompe, tu souhaiterais imprimer une présentation sans avoir besoin d'aller dedans. Soit. Tu souhaiterais avoir la même vue que tu aurais dans ton espace objet. Mais comment feras-tu pour mettre ton dessin à une échelle particulière ? Comment feras-tu pour gérer les calques dans la fenêtre de présentation, au cas échéant ? Comment ferais-tu pour indiquer l'échelle d'impression du dessin sur ton cartouche ? Quelques explications seraient le bienvenue pour comprendre exactement ta demande. Grâce aux variables, array, tableau et classes Comme en lisp en faite 🙂 Ca fait dix ans que fait ça et ça marche pour moi et mes clients 😉 Par contre c'est plus simple si ton cartouche est un bloc 😉 Mon site Web (en cours de construction) : Site DA-CODE de @didier
SpecialOne54 Posté(e) le 23 mai 2023 Auteur Posté(e) le 23 mai 2023 J'ai du mal à comprendre où on en est la ducoup 😅 J'ai expliqué mon but final plus haut si jamais. Merci pour votre aide précieuse !
Curlygoth Posté(e) le 23 mai 2023 Posté(e) le 23 mai 2023 Il y a 23 heures, SpecialOne54 a dit : Bonjour à tous, ma requête me semble simple mais je n'ai trouvé aucune information à ce sujet. J'aimerai un code vba qui imprimerait l'onglet présentation en format pdf qui ouvrirait le pdf directement. Si quelqu'un saurait comment faire je suis preneur ! Merci pour votre aide ! répondu par : Il y a 20 heures, Curlygoth a dit : a ok xD result = ThisDrawing.Plot.PlotToFile(plotFileName) result renvoie true si ok et false s'il y a une erreur plotFileName est le chemin complet du pdf c:\...\fichier.pdf si tu veux plus d'infos, hésite pas 😉 Mon site Web (en cours de construction) : Site DA-CODE de @didier
SpecialOne54 Posté(e) le 23 mai 2023 Auteur Posté(e) le 23 mai 2023 Il y a 21 heures, Curlygoth a dit : a ok xD result = ThisDrawing.Plot.PlotToFile(plotFileName) result renvoie true si ok et false s'il y a une erreur plotFileName est le chemin complet du pdf c:\...\fichier.pdf si tu veux plus d'infos,hésite pas 😉 Sub testimp() ' This example sends a plot of the current drawing ' to a file. 'ThisDrawing.ActiveLayout.ConfigName = "DWF6 ePlot.pc3" ' Define the output file name. ' Use "" to use the drawing name as the file name. Dim plotFileName As String plotFileName = "MyPlot" Dim result As Boolean result = ThisDrawing.Plot.PlotToFile(plotFileName) End Sub A partir de l'aide VBA j'ai récupéré leur code exemple et cela imprime le pdf mais à partir de ma vue sur l'onglet dessin. J'aimerai que cela imprime en pdf mon onglet présentation. De plus j'aimerai que le fichier s'ouvre lorsque le traçage est terminé
Curlygoth Posté(e) le 23 mai 2023 Posté(e) le 23 mai 2023 il y a 36 minutes, SpecialOne54 a dit : plotFileName est le chemin complet du pdf c:\...\fichier.pdf si tu veux plus d'infos,hésite pas 😉 remplace "myPlot" par ton chemin de publication ou par une variable Par exemple avec thisdrawing.path & "\" & "monpdf.pdf" tu va générer un pdf de ta présentation dans le dessin de ton dessin et il s'ouvrira si ton option par défault est d'ouvrir dans le visualiser pdf si tu ne veux pas modifier toute tes présentations : Set MonApplication = CreateObject("Shell.Application") MonApplication.Open (MonFichier) Mon site Web (en cours de construction) : Site DA-CODE de @didier
SpecialOne54 Posté(e) le 23 mai 2023 Auteur Posté(e) le 23 mai 2023 Il y a 2 heures, Curlygoth a dit : remplace "myPlot" par ton chemin de publication ou par une variable Par exemple avec thisdrawing.path & "\" & "monpdf.pdf" tu va générer un pdf de ta présentation dans le dessin de ton dessin et il s'ouvrira si ton option par défault est d'ouvrir dans le visualiser pdf si tu ne veux pas modifier toute tes présentations : Set MonApplication = CreateObject("Shell.Application") MonApplication.Open (MonFichier) Quand je lance la macro et que je suis dans l'onglet "objet" cela imprime toujours ma vue et non pas la vue définie dans mon onglet présentation. De plus le fichier pdf ne s'affiche pas lorsque la macro est terminée. Set MonApplication = CreateObject("Shell.Application") MonApplication.Open (MonFichier) Dim plotFileName As String y = CStr(Year(Now)) m = Right("0" + CStr(Month(Now)), 2) D = Right("0" + CStr(Day(Now)), 2) mydate = y + "-" + m + "-" + D chantier = InputBox(Msg, "Quel étage de quel chantier ?") plotFileName = ThisDrawing.Path & "\" & "Pointage " & chantier & " " & mydate Dim result As Boolean result = ThisDrawing.Plot.PlotToFile(plotFileName) Voici mon code. Je suis désolé de prendre de ton temps je suis certain que c'est pourtant simple et c'est juste que j'y comprends rien... Merci !!
Curlygoth Posté(e) le 23 mai 2023 Posté(e) le 23 mai 2023 Effectivement ! le shell il faut le mettre à la fin ! le code s’exécute de haut en bas donc tu ouvre ton fichier une fois qu'il est créer ! et d'ailleurs je pensais tu générait et que c'est s'ouvrais pas donc je suis a peu pres sur que tu n'aurais pas besoin du shell pour cette partie y = CStr(Year(Now)) m = Right("0" + CStr(Month(Now)), 2) D = Right("0" + CStr(Day(Now)), 2) mydate = y + "-" + m + "-" + D en une ligne : mydate = format(date,"yyyy-mm-dd") et pour imprimer la présentataion il faut qu'elle soit active ! (et donc en haut de ton code) thisDrawing.ActiveLayout = ThisDrawing.Layouts(lay.Name) Oui c'est simple mais il faut de la logique ! 1°) déclarer les variable dont tu auras besoin et tout demander à l'utilisateur 2°) préparer le max d'érreur que peuvent générer un utilisateur 3°) faire "tourner le code" : Si tu débute et pas d'ailleurs créer plein de petite fonction avec des nom explicites dans des modules nommer ! tu verras se sera plus simple surtout quand tu auras un code plus de 100.000 lignes Mon site Web (en cours de construction) : Site DA-CODE de @didier
SpecialOne54 Posté(e) le 23 mai 2023 Auteur Posté(e) le 23 mai 2023 Avec tes modifications cela n'effectue pas le tracé à cause d'erreurs. Pourtant la macro s'effectue normalement
SpecialOne54 Posté(e) le 23 mai 2023 Auteur Posté(e) le 23 mai 2023 ThisDrawing.ActiveLayout = ThisDrawing.Layouts(A3) C'est cette ligne qui provoque l'erreur et l'annulation du travail de traçage
Curlygoth Posté(e) le 24 mai 2023 Posté(e) le 24 mai 2023 oui car c'est "A3" A3 c'est le nom d'une variable et je pense qu'elle est vide 😉 ThisDrawing.ActiveLayout = ThisDrawing.Layouts("A3") Mon site Web (en cours de construction) : Site DA-CODE de @didier
SpecialOne54 Posté(e) le 30 mai 2023 Auteur Posté(e) le 30 mai 2023 Le 24/05/2023 à 18:05, Curlygoth a dit : oui car c'est "A3" A3 c'est le nom d'une variable et je pense qu'elle est vide 😉 ThisDrawing.ActiveLayout = ThisDrawing.Layouts("A3") Sub TestImp() Set MonApplication = CreateObject("Shell.Application") Dim plotFileName As String ThisDrawing.ActiveLayout = ThisDrawing.layouts("A3") mydate = Format(Date, "yyyy-mm-dd") chantier = InputBox(Msg, "Quel étage de quel chantier ?") plotFileName = ThisDrawing.Path & "\" & "Pointage " & chantier & " " & mydate Dim result As Boolean result = ThisDrawing.Plot.PlotToFile(plotFileName) MonApplication.Open (MonFichier) End Sub Voici le code et malheureusement l'impression ne se réalise toujours et une erreur intervient lors du traçage
Curlygoth Posté(e) le 30 mai 2023 Posté(e) le 30 mai 2023 plotFileName = ThisDrawing.Path & "\" & "Pointage " & chantier & " " & mydate plotFileName = ThisDrawing.Path & "\" & "Pointage " & chantier & " " & mydate & ".pdf" ta présentation a un plot ? la partie shell tu peux l'enlever pour info tu décalera tes variable juste sous la sub tu devrais mettre en fonction la partie impression Mon site Web (en cours de construction) : Site DA-CODE de @didier
SpecialOne54 Posté(e) le 30 mai 2023 Auteur Posté(e) le 30 mai 2023 il y a une heure, Curlygoth a dit : plotFileName = ThisDrawing.Path & "\" & "Pointage " & chantier & " " & mydate plotFileName = ThisDrawing.Path & "\" & "Pointage " & chantier & " " & mydate & ".pdf" ta présentation a un plot ? la partie shell tu peux l'enlever pour info tu décalera tes variable juste sous la sub tu devrais mettre en fonction la partie impression Comment le savoir si elle a un plot ? Pourquoi pas oui il faudrait que je me renseigne la dessus
Curlygoth Posté(e) le 30 mai 2023 Posté(e) le 30 mai 2023 un plotteur : une imprimante Mon site Web (en cours de construction) : Site DA-CODE de @didier
SpecialOne54 Posté(e) le 30 mai 2023 Auteur Posté(e) le 30 mai 2023 Je ne comprends pas, je n'ai pas besoin d'imprimante puisque je veux la présentation en format pdf
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