Guten Tag,
ich habe ein Problem, mit dem ich zur Zeit nicht weiterkomme.
Unzwar bekomme ich oft Dateien, wo die einzelnen Seiten als benannte Ansichten im Modelbereich gezeichnet sind.
Nun muss ich diese Seiten in Layouts umwandeln. Also erstelle ich ein Layout mit dem jeweiligen Blattnahmen, dann ein Ansichtsfenster im Layout und zu guter Letzt stelle ich im verschiebaren Modelbereich die zum Blatt passende benannte Ansicht wieder her. Das ist ab 20 Blättern nicht mehr ganz so prickelnd. Darum wollte ich die ganze Sache vollautomatisch mit einem VBA-Makro erschlagen . Hänge jetzt aber an einer Stelle fest, wo mir nix mehr einfällt. Muss aber dazu sagen, ich bin auch kein Profi-VBA-Programmierer.
Eine DWG-Datei, in der Art wie ich sie bearbeiten muss ist im Anhang. Nachstehend habe ich den Quellcode aufgelistet, mit dem ich mich herumplage.
Über kleine Denkanstöße wäre ich sehr dankbar.
Sub Ansichten()
'Deklarationen für benannte Ansichten
Dim ViewList As New Collection
Dim View As AcadView
Dim i As Long 'Zähler
Dim ViewName As String
Dim ViewportObj As AcadViewport
Dim Viewports As AcadViewports
ThisDrawing.ActiveSpace = acModelSpace
Set ViewportObj = ThisDrawing.ActiveViewport
Set Viewports = ThisDrawing.Viewports
'Deklarationen für Layouts
Dim Layout As AcadLayout
Dim Layouts As AcadLayouts
Dim NewLayout As AcadLayout
'Deklarationen für Ansichtsfenster in den Layouts
Dim pviewportObj As AcadPViewport
Dim center(0 To 2) As Double
Dim width As Double
Dim height As Double
'Ansichtsfenster für DIN A4 erstellen
center(0) = 3: center(1) = 3: center(2) = 0
width = 287
height = 200
' Listet alle benannten Ausschnitte dieser Zeichnung auf
For Each View In ThisDrawing.Views
ViewList.Add View
Next
For i = 1 To ViewList.Count
ViewName = ViewList(i).Name
Set NewLayout = ThisDrawing.Layouts.Add(ViewName)
Next
Set Layouts = ThisDrawing.Layouts
For Each Layout In Layouts
If Layout.Name = "Model" Or Layout.Name = "Layout1" Or Layout.Name = "Layout2" Then
GoTo Z1
End If
ThisDrawing.ActiveSpace = acPaperSpace
ThisDrawing.ActiveLayout = Layout
Set pviewportObj = ThisDrawing.PaperSpace.AddPViewport(center, width, height)
pviewportObj.Display True
ThisDrawing.MSpace = True
Set View = ThisDrawing.Views(Layout.Name)
ViewportObj.SetView View
ThisDrawing.ActiveViewport = ViewportObj 'Ab geht's nicht weiter
ThisDrawing.MSpace = False
ThisDrawing.Regen acAllViewports
Z1: Next
End Sub
[Diese Nachricht wurde von Netwurm am 09. Sep. 2009 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP