Aller au contenu

Impression automatique


Messages recommandés

Posté(e)

Dans l'espace Papier j'ai X mises en pages format 420 / 297.

La première commence à 0,0, la deuxieme 420,0, la troisième 297,0, ....

 

Eb bref sous forme de tableau 2 colonnes X lignes

 

Comment en VBA effectuer les impressions en automatique

 

fenetre 0,0 420,297

 

fenetre 420,0 840,297

 

fenetre 0,297 420,594

 

fenetre 420,297 840,594

 

..... :casstet:

Posté(e)

Pourquoi ne fait tu pas plusieurs présentations? :casstet:

L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai.
"Il vaut mieux mobiliser son intelligence sur des conneries, que sa connerie sur des choses intelligentes" - Devise Shadok.
"ceux qui ne se souviennent pas du passé sont condamnés à le revivre" George Santayana

Ma bibliothèque de blocs électrique :symbole elec.dwg

Posté(e)

Les mises en page sont déjà faites dans l'espave papier via un autre pgm

 

En fait je cherche comment avec la commande plot la possibilité de donner un mini max (une fenêtre)

Posté(e)

hé geolys,

 

Dans la classe : _AcadPlotConfiguration

On retrouve la méthode : GetWindowToPlot(LowerLeft, UpperRight)

 

Et voici un exemple modifié, pris dans le Help :

Sub Example_GetWindowToPlot_()

   Dim point1(0 To 1) As Double
   Dim point2(0 To 1) As Double
   
  point1(0) = 0
  point1(1) = 0

  point2(0) = 420
  point2(1) = 297

   ' Dans le layout courant
   ThisDrawing.ActiveLayout.SetWindowToPlot point1, point2
   
   ' Capter l'information de la fenêtre
   ThisDrawing.ActiveLayout.GetWindowToPlot point1, point2

End Sub  

 

 

l'ACADien ! http://img124.exs.cx/img124/7999/start.gif

Posté(e)

Merci, j'ai adapté la programmation pour répondre à mes besoins

 

Ca marche très bien sous Autocad 2004, mais avec Autocad 2005 j'ai une erreur

 

La méthode "DISPLAYPLOTPREVIEW" de l'objet "IacadPlot" a échoué

 

Private Sub FM_imprime_Click()

Dim pt1(1) As Double, pt2(1) As Double

form_imprime.Hide

ThisDrawing.Activate

For nbl = 1 To fm_nbl

For nbc = 1 To fm_nbc

pt1(0) = Val(fm_x1) + (Val(fm_x2) * nbc) - Val(fm_x2): pt1(1) = Val(fm_y1) + (Val(fm_y2) * nbl) - Val(fm_y2)

pt2(0) = Val(fm_x2) * nbc: pt2(1) = Val(fm_y2) * nbl

If fm_imp2 = True Then: pt1(0) = pt1(0) + fm_m: pt1(1) = pt1(1) + fm_m: pt2(0) = pt2(0) - fm_m: pt2(1) = pt2(1) - fm_m

ThisDrawing.ActiveLayout.SetWindowToPlot pt1, pt2

ThisDrawing.ActiveLayout.GetWindowToPlot pt1, pt2

ThisDrawing.ActiveLayout.PlotType = acWindow

If frm_cen = True Then ThisDrawing.ActiveLayout.CenterPlot = True Else ThisDrawing.ActiveLayout.CenterPlot = False

If fm_imp3 = True Then ThisDrawing.Plot.DisplayPlotPreview acFullPreview Else ThisDrawing.Plot.PlotToDevice

Next nbc

Next nbl

End Sub

 

 

 

Posté(e)

Salut ,

 

moi aussi j'ai un problème pour faire une impression automatique de mes plans je m’explique :

 

J’ai des pièces à donner à la fabrication donc je fait plusieurs fiches pour chaque pièce,

Et là je me retrouve avec une centaine de fiches format « A4 » ou « A3 »

posés l’une a coter de l’autre et dans une même feuille de présentation

j'ai fait un petit script et ça marche mais je me suis trouver avec plein coordonées pour la selection de chaque fiche ...

 

j'aimerai avoir un programme vba qui peut me selectionner fiche par fiche et l'imprimer au format A4 ou A3 (au choix ).

 

en fait je débute en vba sous autocad .... alors ...???

 

Merci pour votre aide !! :)

 

Posté(e)

Bonsoir,

 

Merci, j'ai adapté la programmation pour répondre à mes besoins

 

Ca marche très bien sous Autocad 2004, mais avec Autocad 2005 j'ai une erreur

 

La méthode "DISPLAYPLOTPREVIEW" de l'objet "IacadPlot" a échoué

 

Sous Autocad 2006, il y a une modification pour l'impression (voir si c'est pareil pour 2005), il faut passer la variable "BACKGROUNDPLOT" à 0 en VBA. Si elle est a 1, on obtient ce message d'erreur.

 

--- ThisDrawing.SetVariable "BACKGROUNDPLOT", 0

 

 

ben, sinon, le tracage se mets en arriere-plan, et tant que l'impression n'est pas faite, cela bloque la fonction impression, mais VBA ne le voit pas et continu de faire tourner la routine pour imprimer le cartouche suivant.

 

Pour ma part, je suis parti sur une programmation vba en 2 partie :

 

- 1 fichier Excel qui liste les differents blocs "Cartouche" avec les coordonnées, le type de cartouche (Portrait, paysage). Comme les clients exige leur PDG, je doit jongler entre plein de cartouches différents.

 

- en VBA, il scanne dans l'espace selectionné, les blocs cartouches, fait un calcul rapide des points pour la fenetre d'impression. Il regarde l'echelle du cartouche, et regle la mise a l'echelle à l'impression. Ensuite il lance l'impression.

 

Pour l'instant, cette routine me suffit, bien que je vais la perfectionner (il me faut trouver le moyen de selectionner en VBA l'imprimante et le format de papier suivant les cartouches).

 

Comme à la maison, j'ai une vieille version que celle que je developpe au boulôt, je la mettrais en ligne la semaine prochaine.

 

voila,

 

Posté(e)

Il suffit d'enregistrer tes A3 sous forme de vue (P0,P1,P2) et puis de faire un petit programme te demandant quelles sont les vues que tu veux imprimer.

(Pour limiter le nombre d'onglets car j'ai régulièrement des cahiers A3- de plus de 50 pages, je considére pour moi qu'un onglet contient 8 feuillets a3, + facile à gérer et une vision améliorer de la continuité de ma pagination.)

  • 2 mois après...
Posté(e)

:) :) :)

Sous Autocad 2006, il y a une modification pour l'impression (voir si c'est pareil pour 2005), il faut passer la variable "BACKGROUNDPLOT" à 0 en VBA. Si elle est a 1, on obtient ce message d'erreur.

 

--- ThisDrawing.SetVariable "BACKGROUNDPLOT", 0

 

 

UN GRAND MERCI, ça marche !!!

 

A ce jour, l'ensemble des employés devaient passer sur mon poste (seul à garder une licence 2004). Avec ta solution j'ai pu l'installer sur l'ensemble des postes

 

Encore merci, il suffit bine souvent de peu :casstet: :casstet: :casstet:

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é