Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Probleme pour printer avec une macro dans autocad

3 réponses
Avatar
Mona_Lisa
Bonjour, j'ai fait une macro qui choisi dans une liste de tout les dessins
ouvert et les mets actif tour à tour .
Pour cette parti tout fonctionne parfaitement.

Là ou ça bloque un peu, c'et lorsque je choisis le format de papier pour mon
imprimante.
Je ne suis pas capable d'écrire le format directement à cause des guillemets
exemple: "C-Arch (18"X24")" il me donne une erreur à cause 18"X24" . En
créant une variable STRING Papier1 il ne me donne plus de message d'erreur.
Mais lorsque j'imprime quelque fois il me donne le bon format de papier et
d'autre fois on dirait qu'il me donne le dernier format papier utilisé pour
ce dessin.

J'ai trouvé aussi qu'il ne m'active pas "acExtents". Si le dessin à été
enregistrer avec un PlotType différent il ne le change pas?

Si vous avez des suggestions je suis preneur.

Merci




Dim Print1 As String 'Variable identifiant le nom de
l'imprimante
Dim Paper1 As String 'Variable identifiant le nom du format de
papier
Dim DWGName As String
Dim activeStatus As String
Dim Drawing As AcadDocument

Print1 = Xerox 6030 Wide Format.pc3 ' The name of my plotter
Paper1 = C-Arch (18"X24") ' The name of the paper size

DWGName = grdPrint.Text
Set Drawing = ThisDrawing.Application.Documents.Item(DWGName)
'Make DWGName active drawing
Drawing.Activate
ThisDrawing.ActiveLayout.ConfigName = Print1
ThisDrawing.ActiveLayout.StyleSheet = "monochrome.ctb"
ThisDrawing.ActiveLayout.CanonicalMediaName = Paper1
ThisDrawing.ActiveLayout.StandardScale = acScaleToFit
ThisDrawing.ActiveLayout.CenterPlot = True
ThisDrawing.ActiveLayout.PlotType = acExtents
ThisDrawing.ActiveLayout.RefreshPlotDeviceInfo
ThisDrawing.SetVariable "BACKGROUNDPLOT", 0 ' I think it
is for made the work in background ?
ThisDrawing.Plot.PlotToDevice Print1
ThisDrawing.SetVariable "BACKGROUNDPLOT", 2
ThisDrawing.ActiveLayout.RefreshPlotDeviceInfo

3 réponses

Avatar
Jean-marc
Mona_Lisa wrote:
Bonjour, j'ai fait une macro qui choisi dans une liste de tout les
dessins ouvert et les mets actif tour à tour .
Pour cette parti tout fonctionne parfaitement.

Là ou ça bloque un peu, c'et lorsque je choisis le format de papier
pour mon imprimante.
Je ne suis pas capable d'écrire le format directement à cause des
guillemets exemple: "C-Arch (18"X24")" il me donne une erreur à cause
18"X24" . En créant une variable STRING Papier1 il ne me donne plus
de message d'erreur. Mais lorsque j'imprime quelque fois il me donne
le bon format de papier et d'autre fois on dirait qu'il me donne le
dernier format papier utilisé pour ce dessin.

J'ai trouvé aussi qu'il ne m'active pas "acExtents". Si le dessin à
été enregistrer avec un PlotType différent il ne le change pas?

Si vous avez des suggestions je suis preneur.

Merci




Dim Print1 As String 'Variable identifiant le nom de
l'imprimante
Dim Paper1 As String 'Variable identifiant le nom du
format de papier
Dim DWGName As String
Dim activeStatus As String
Dim Drawing As AcadDocument

Print1 = Xerox 6030 Wide Format.pc3 ' The name of my plotter
Paper1 = C-Arch (18"X24") ' The name of the paper
size
DWGName = grdPrint.Text
Set Drawing > ThisDrawing.Application.Documents.Item(DWGName) 'Make DWGName active
drawing Drawing.Activate
ThisDrawing.ActiveLayout.ConfigName = Print1
ThisDrawing.ActiveLayout.StyleSheet = "monochrome.ctb"
ThisDrawing.ActiveLayout.CanonicalMediaName = Paper1
ThisDrawing.ActiveLayout.StandardScale = acScaleToFit
ThisDrawing.ActiveLayout.CenterPlot = True
ThisDrawing.ActiveLayout.PlotType = acExtents
ThisDrawing.ActiveLayout.RefreshPlotDeviceInfo
ThisDrawing.SetVariable "BACKGROUNDPLOT", 0 ' I
think it is for made the work in background ?
ThisDrawing.Plot.PlotToDevice Print1
ThisDrawing.SetVariable "BACKGROUNDPLOT", 2
ThisDrawing.ActiveLayout.RefreshPlotDeviceInfo



--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
Jean-marc
Mona_Lisa wrote:
Bonjour, j'ai fait une macro qui choisi dans une liste de tout les
dessins ouvert et les mets actif tour à tour .
Pour cette parti tout fonctionne parfaitement.

Là ou ça bloque un peu, c'et lorsque je choisis le format de papier
pour mon imprimante.
Je ne suis pas capable d'écrire le format directement à cause des
guillemets exemple: "C-Arch (18"X24")" il me donne une erreur à cause
18"X24" .



Dim Print1 As String
Dim Paper1 As String



Print1 = Xerox 6030 Wide Format.pc3 ' The name of my plotter
Paper1 = C-Arch (18"X24")



Hello,

pour le problème des guillemets, ceci est traité dans un article
de notre FAQ:
http://faq.vb.free.fr/index.php?question7" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://faq.vb.free.fr/index.php?question7

PS: le serveur de la FAQ semble avoir de petits soucis, ça ne devrait
pas durer.

Mais je résume:
Pour insérer des guillemets dans une chaîne de caractères il suffit de les
doubler.
D'autre part, pour une affectation de chaine de caractères, les guillemets
sont
obligatoires.

Par exemple voici comment tu devrait déclarer tes variables:

Pour print1, c'est facile :

Print1 = "Xerox 6030 Wide Format.pc3"

Pour Paper1, qui contient des guillemets, il faut déclarer comme ceci :

Paper1 = "C-Arch (18""X24"")"


Et voila :-)

Cordialement;

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;
Avatar
Mona_Lisa
Super
Gros Merci


"Jean-marc" a écrit dans le message de
news:4826192e$0$2952$
Mona_Lisa wrote:
Bonjour, j'ai fait une macro qui choisi dans une liste de tout les
dessins ouvert et les mets actif tour à tour .
Pour cette parti tout fonctionne parfaitement.

Là ou ça bloque un peu, c'et lorsque je choisis le format de papier
pour mon imprimante.
Je ne suis pas capable d'écrire le format directement à cause des
guillemets exemple: "C-Arch (18"X24")" il me donne une erreur à cause
18"X24" .



Dim Print1 As String
Dim Paper1 As String



Print1 = Xerox 6030 Wide Format.pc3 ' The name of my plotter
Paper1 = C-Arch (18"X24")



Hello,

pour le problème des guillemets, ceci est traité dans un article
de notre FAQ:
http://faq.vb.free.fr/index.php?question7" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://faq.vb.free.fr/index.php?question7

PS: le serveur de la FAQ semble avoir de petits soucis, ça ne devrait
pas durer.

Mais je résume:
Pour insérer des guillemets dans une chaîne de caractères il suffit de les
doubler.
D'autre part, pour une affectation de chaine de caractères, les guillemets
sont
obligatoires.

Par exemple voici comment tu devrait déclarer tes variables:

Pour print1, c'est facile :

Print1 = "Xerox 6030 Wide Format.pc3"

Pour Paper1, qui contient des guillemets, il faut déclarer comme ceci :

Paper1 = "C-Arch (18""X24"")"


Et voila :-)

Cordialement;

--
Jean-marc Noury (jean_marc_n2)
Microsoft MVP - Visual Basic
FAQ VB: http://faq.vb.free.fr/
mailto: remove '_no_spam_' ;