 Diskuzní fórum, poradna
 Diskuzní fórum, poradna
 ?CAD diskuze, rady, výměna zkušeností
 Veřejné diskuzní fórum k CAD aplikacím - ptejte se na libovolné otázky týkající se oboru CAx, podělte se o vaše znalosti a zkušenosti s programy AutoCAD, Inventor, Revit, Fusion, 3ds Max, Vault a s dalšími CAD/BIM/PDM aplikacemi.
 Zaregistrujte se nebo se přihlašte a zašlete váš příspěvek do odpovídajícího fóra. Viz další informace o CAD Fóru. Nechcete se registrovat? Zeptejte se v naší Facebook poradně.
 Veřejné diskuzní fórum k CAD aplikacím - ptejte se na libovolné otázky týkající se oboru CAx, podělte se o vaše znalosti a zkušenosti s programy AutoCAD, Inventor, Revit, Fusion, 3ds Max, Vault a s dalšími CAD/BIM/PDM aplikacemi.
 Zaregistrujte se nebo se přihlašte a zašlete váš příspěvek do odpovídajícího fóra. Viz další informace o CAD Fóru. Nechcete se registrovat? Zeptejte se v naší Facebook poradně.
 | 
 | 
| Odpovědět   | archiv | 
| Autor | |
| paveku   Nováček   Přihlášen: 08.lis.2008 Lokalita: ČR (HK) Používám: AutoCadLT2021 Stav: Offline Bodů: 9 |  Téma: Tisk pomocí VBA Zasláno: 10.říj.2010 v 21:07 | 
| Dobrý den, potřeboval bych vědět, jak pomocí VBA naprogramovat tisk několika záložek výkresového prostoru. Super by bylo, aby jsem mohl změnou kódu ovládat i pořadí v jakém se to vytiskne. Trochu znám VBA v Excelu, ale tady mě to nejde. Nevím, jak vybrat záložku výkresového prostoru. | |
|  | |
| Vladimír Michl   Profil člena Odeslat soukromou zprávu Najít příspěvky člena Navštívit stránky člena Přidat do seznamu známých Moderátor     ARKANCE Přihlášen: 09.zář.2004 Lokalita: ČR (JČ) Používám: Implementujeme řešení Autodesk Stav: Offline Bodů: 22020 |  Zasláno: 10.říj.2010 v 21:20 | 
| 
   Podívejte se v helpu na metodu Plot.SetLayoutsToPlot
 Jen pozor, podpora VBA (Microsoftem) skončila už před mnoha lety a z AutoCADu bude VBA také v nejbližších verzích odstraněn. | |
|  | |
| paveku   Nováček   Přihlášen: 08.lis.2008 Lokalita: ČR (HK) Používám: AutoCadLT2021 Stav: Offline Bodů: 9 |  Zasláno: 12.říj.2010 v 21:02 | 
| Tak jsem se s tím potýkal 2 dny, ale nemohu na to přijít co dělám blbě. Použil jsem postup : Dim proTisk(1 To 4) ThisDrawing.Plot.StartBatchMode i Na řádku "ThisDrawing.Plot.SetLayoutsToPlot proTisk" se objeví chyba chybná procedůra nebo argument. | |
|  | |
| v.klazar   Diskutér   Přihlášen: 29.lis.2007 Lokalita: ČR (HK) Používám: civil3d 2012 Stav: Offline Bodů: 60 |  Zasláno: 13.říj.2010 v 10:56 | 
| 
   mozna to nechapu dobre, ale nemelo by next i byt na konci?
    | |
|  | |
| paveku   Nováček   Přihlášen: 08.lis.2008 Lokalita: ČR (HK) Používám: AutoCadLT2021 Stav: Offline Bodů: 9 |  Zasláno: 13.říj.2010 v 11:57 | 
| 
   Podle helpu jsem to pochopil tak, že se nejprve naplní pole názvy rozvržení - 
     For i = 1 To 4 proTisk(i) = ThisDrawing. Next i a pak se opakovaně spouští tisk -     For j = 1 To i ThisDrawing.Plot.SetLayoutsToPlot proTisk ThisDrawing.Plot.PlotToDevice Next j | |
|  | |
| Martin Bielina   Zasloužilý člen   Přihlášen: 04.led.2007 Lokalita: ČR (Pha) Používám: AutoCAD True view 2016 Stav: Offline Bodů: 100 |  Zasláno: 13.říj.2010 v 13:35 | 
| 
 Možná to pro vás bude překvapení, ale ale víte vůbec, že pokud se budete ve druhém cyklu For odvolávat na i jako horní hranici, tak se nebude v tomto případě jednat o číslo 4 ale 5? Pokud mají oba cykly proběhnou 4x, pak bych i ten druhý zavedl znovu jako i tedy:    For i = 1 To 4 Ubyde vám tím jedna zbytečná proměnná... a ten zbytek, tu už bude váš boj. Upravil Martin Bielina - 13.říj.2010 v 13:38 | |
|  | |
| paveku   Nováček   Přihlášen: 08.lis.2008 Lokalita: ČR (HK) Používám: AutoCadLT2021 Stav: Offline Bodů: 9 |  Zasláno: 13.říj.2010 v 17:45 | 
| Jo jasně, dík za upozornění, ale stále to nefunguje jak má ! ! ! Pomůže někdo ? | |
|  | |
| pavelstyl   Zasloužilý člen   Přihlášen: 06.říj.2004 Lokalita: Czech Republic Používám: AutoCAD Mech 2025, SolidEdgeE 2025 Stav: Offline Bodů: 229 |  Zasláno: 14.říj.2010 v 05:48 | 
| 
 To se mi moc nezdá ... jste si tím jistý? Pavel Štyl | |
|  | |
| Martin Bielina   Zasloužilý člen   Přihlášen: 04.led.2007 Lokalita: ČR (Pha) Používám: AutoCAD True view 2016 Stav: Offline Bodů: 100 |  Zasláno: 14.říj.2010 v 13:42 | 
| 
   [/QUOTE] To se mi moc nezdá ... jste si tím jistý? Pavel Štyl [/QUOTE] 
 Ano, u VBA jsem si tím jistý. Next i na konci cyklu vždy přičte k i hodnotu kroku, a to i v případě, kdy se jedná o "poslední kolo" cyklu. Není přece nic jednoduššího, než si to vyzkoušet na jednoduchém případu kdy v cyklu For budete mít jen výpis hodnoty i a pak po skončení cyklu ještě jednou provedete výpis hodnoty i. Obzvlášť nebezpečný je případ, kdy se i deklaruje jako např. typ INTEGER a jeho horní mez je počtem cyklů právě (přesně) dosažena, protože po skončení cyklu dojde k "poslednímu přičtení" a tím i k přetečení proměnné. A omlouvám se, že původní dotaz na řešení problému se i mojí vinou poněkud zvrnul v nežádoucí diskuzi jak co funfuje. VBA je mrtev, v Autocadu bych se už s jeho existencí vůbec nezabýval. Je jen otázkou času, kdy zmizí zcela. | |
|  | |
| paveku   Nováček   Přihlášen: 08.lis.2008 Lokalita: ČR (HK) Používám: AutoCadLT2021 Stav: Offline Bodů: 9 |  Zasláno: 15.říj.2010 v 06:42 | 
| jj, všechno chápu, znám trochu VBA z Excelu ,a nic jiného. Potřebuji jen vyřeštit problém toho tisku, protože to chci spouštět z excelu. POMŮŽE NĚKDO ? ? ? =============== | |
|  | |
| VopluDa   Diskutér     Přihlášen: 16.srp.2006 Lokalita: ČR (Pha) Používám: AutoCad jaky maji kde nainstalovany Stav: Offline Bodů: 32 |  Zasláno: 15.říj.2010 v 11:04 | 
| 
   a co tohle:
 Sub SetLayoutsToPlot() Dim oPlot As AcadPlot Dim AddedLayouts() As String Dim LayoutList As Variant Dim oLayout As AcadLayout Dim ArraySize As Integer, BatchCount As Integer Dim retVal As String Dim MyValue For Each oLayout In ThisDrawing.Layouts ArraySize = ArraySize + 1 ReDim Preserve AddedLayouts(1 To ArraySize) MyValue = InputBox("Vytisknout A/N?", oLayout.Name, "A") If MyValue = "A" Or MyValue = "a" Then AddedLayouts(ArraySize) = oLayout.Name Next     LayoutList = AddedLayouts Set oPlot = ThisDrawing.Plot oPlot.SetLayoutsToPlot LayoutList oPlot.PlotToDevice End Sub je to silne surovy bez ladu a skladu s minimem casu tomu a jen pro inspiraci    | |
|  | |
| paveku   Nováček   Přihlášen: 08.lis.2008 Lokalita: ČR (HK) Používám: AutoCadLT2021 Stav: Offline Bodů: 9 |  Zasláno: 15.říj.2010 v 16:29 | 
| Super, díky moc, již to funguje. Teď jdu hledat, kde jsem dělal chybu | |
|  | |
| paveku   Nováček   Přihlášen: 08.lis.2008 Lokalita: ČR (HK) Používám: AutoCadLT2021 Stav: Offline Bodů: 9 |  Zasláno: 10.lis.2010 v 18:24 | 
| 
   Ještě se vracím k tomuto tematu. Vše funguje jak má, ale otravuje mě blikání při přepínání mezi jednotlivými záložkami. Lze to potlačit, něco jako tisk na pozadí. Něco jako v excelu "ScreenUpdating = False" ?
    | |
|  | |
| VopluDa   Diskutér     Přihlášen: 16.srp.2006 Lokalita: ČR (Pha) Používám: AutoCad jaky maji kde nainstalovany Stav: Offline Bodů: 32 |  Zasláno: 11.lis.2010 v 08:40 | 
| 
   zkousel sem to a neblika mi to, zalozky se mi pri vyberu neprepinaji. si ale myslim, ze to je nastavenim nejaky promenny Cadu, na kterou si moje potvora hlava mapa duta prave nechce vzpomenout
 este sem si s  tim pak malinko hral, spis jen kosmeticky: Sub SetLayoutsToPlot() Dim oPlot As AcadPlot Dim AddedLayouts() As String Dim LayoutList As Variant Dim oLayout As AcadLayout Dim ArraySize As Integer, BatchCount As Integer Dim MyValue Dim Style, Title Style = vbYesNoCancel + vbQuestion + vbDefaultButton2 Title = "A co dál?" For Each oLayout In ThisDrawing.Layouts ArraySize = ArraySize + 1 ReDim Preserve AddedLayouts(1 To ArraySize) MyValue = MsgBox(" Vytisknout " & oLayout.Name & " ?", Style, Title) If MyValue = vbYes Then AddedLayouts(ArraySize) = oLayout.Name ElseIf MyValue = vbCancel Then GoTo Line1 End If Next LayoutList = AddedLayouts Set oPlot = ThisDrawing.Plot oPlot.SetLayoutsToPlot LayoutList oPlot.PlotToDevice Line1:     ThisDrawing.ActiveSpace = acModelSpace End Sub | |
|  | |
| paveku   Nováček   Přihlášen: 08.lis.2008 Lokalita: ČR (HK) Používám: AutoCadLT2021 Stav: Offline Bodů: 9 |  Zasláno: 23.lis.2010 v 17:10 | 
| Nevíte někdo, jak odstranit to blikání a přepínání záložek při tisku? Už mě to docela začíná otravovat. Jinak to maká perfektně. | |
|  | |
| VopluDa   Diskutér     Přihlášen: 16.srp.2006 Lokalita: ČR (Pha) Používám: AutoCad jaky maji kde nainstalovany Stav: Offline Bodů: 32 |  Zasláno: 24.lis.2010 v 13:52 | 
| prubni tohle: Private Declare Function LockWindowUpdate Lib "user32" (ByVal hWndLock As Long) As Long Sub SetLayoutsToPlot() Dim oPlot As AcadPlot Dim AddedLayouts() As String Dim LayoutList As Variant Dim oLayout As AcadLayout Dim ArraySize As Integer, BatchCount As Integer Dim MyValue Dim Style, Title Style = vbYesNoCancel + vbQuestion + vbDefaultButton2 Title = "A co dál?" For Each oLayout In ThisDrawing.Layouts ArraySize = ArraySize + 1 ReDim Preserve AddedLayouts(1 To ArraySize) MyValue = MsgBox(" Vytisknout " & oLayout.Name & " ?", Style, Title) If MyValue = vbYes Then AddedLayouts(ArraySize) = oLayout.Name ElseIf MyValue = vbCancel Then GoTo Line1 End If Next LockWindowUpdate (ThisDrawing.hWnd) LayoutList = AddedLayouts Set oPlot = ThisDrawing.Plot oPlot.SetLayoutsToPlot LayoutList oPlot.PlotToDevice LockWindowUpdate (0) Line1:     ThisDrawing.ActiveSpace = acModelSpace End Sub ale na rychlosti to neprida jako u excelu "ScreenUpdating = False"     | |
|  | |
| paveku   Nováček   Přihlášen: 08.lis.2008 Lokalita: ČR (HK) Používám: AutoCadLT2021 Stav: Offline Bodů: 9 |  Zasláno: 24.lis.2010 v 17:55 | 
| 
   Výborné, pomohlo to na přeskakování listů. Teď už jen problikává okno "Postup vykreslování". Šlo by i to potlačit?
    | |
|  | |
| VopluDa   Diskutér     Přihlášen: 16.srp.2006 Lokalita: ČR (Pha) Používám: AutoCad jaky maji kde nainstalovany Stav: Offline Bodů: 32 |  Zasláno: 25.lis.2010 v 10:09 | 
| 
   sorry, budu uprimnej. jak potlacit prepinani zalozek, to zajimalo i mne. mam jeste par veci v vba, ktery jeste nemam predelany do lispu a tak sem to pouzil tam. ale jak uz tady bylo receno, vba je mrtvy. neni tedy prinos venovat cas a energii vyvoji cehokoliv noveho v vba, natoz ladit neco k dokonalosti.
    | |
|  | |
Pro technickou podporu CAD
kontaktujte Helpdesk
| Odpovědět   | |
| Přejít na fórum | Oprávnění fóra   Nemůžete vytvářet nová témata v tomto fóru Nemůžete odpovídat na témata v tomto fóru Nemůžete vymazávat vaše příspěvky v tomto fóru Nemůžete upravovat vaše příspěvky v tomto fóru Nemůžete vytvářet ankety v tomto fóru Nemůžete hlasovat v anketách v tomto fóru | 
Stránka byla vygenerována za 0,418 sekund.


 AUTOCAD
 AUTOCAD INVENTOR
 INVENTOR REVIT
 REVIT CIVIL 3D
 CIVIL 3D FUSION
 FUSION 
 
  
 
 
  
  
  
  
  Tisk pomocí VBA
Tisk pomocí VBA Možnosti tématu
 Možnosti tématu paveku napsal(a):
 paveku napsal(a):


 
  





 
