Hallo Alfred,
das ist der Anfang der Klasse:
'Contains the AutoCAD Type Library
Imports Autodesk.AutoCAD.Interop
'Contains the AutoCAD/ObjectDBX Type Library
Imports Autodesk.AutoCAD.Interop.Common
Public Class Schemakopf
Public ReadOnly Property ThisDrawing() As _
AcadDocument
Get
Return Autodesk.AutoCAD. _
ApplicationServices.Application. _
DocumentManager.MdiActiveDocument. _
AcadDocument
End Get
End Property
Public Shared myForm As Schemenkopfwindow = Nothing
Public Shared myFormDruck As Druckdatum = Nothing
Public Structure SK
Public Datum As String
Public Bearbeiter As String
Public Druckdatum As String
Public projekt1 As String
Public projekt2 As String
Public Blatt As String
Public Blätter As String
Public Projektnummer As String
Public planinhalt1 As String
Public Planinhalt2 As String
Public ISPNummer As String
Public Datumsart As String
End Structure
Public Structure Schemensatz
Public Name As String
Public Anzahl As Integer
End Structure
Dim Namen() As Object
' Bis hier neu
Dim AusDatei As SK
Dim AusDwg As SK
Dim InDwg As SK
Dim InDatei As SK
Dim Name As String
Dim Datum As String
Dim Blattdatei As String
Dim Pronum As String
Dim Flag As Boolean
Dim Attrib As Object
<Autodesk.AutoCAD.Runtime.CommandMethod("SL")> _
Public Sub Schemenlayout()
Dim PCdatum As Date
myForm = New Schemenkopfwindow
Flag = True
Name = ThisDrawing.FullName
On Error Resume Next
Name = Left(Name, Len(Name) - 7) & "Kopf.hwd"
If Err.Number <> 0 Then
MsgBox("Die Datei muß erst an die richtige Stelle gespeichert werden!")
GoTo Ende
End If
PCdatum = Today
Datum = Format(PCdatum, "dd/MM/yy")
Blattdatei = ThisDrawing.Name
Blattdatei = Mid(Blattdatei, Len(Blattdatei) - 5, 2)
Pronum = ThisDrawing.Path
Pronum = Mid(Pronum, 11, 5) & Left(ThisDrawing.Name, 3)
lesenausdateivorfensterchen()
einlesenausdwg()
If Flag = False Then GoTo Ende
einlesendwgfensterchen()
InDatei.Datumsart = "A"
myForm.Show()
ThisDrawing.Regen(Common.AcRegenType.acAllViewports)
Ende:
End Sub
Public Sub lesenausdateivorfensterchen()
Dim f As System.IO.StreamReader
Dim zeile As String
If Dir(Name) <> "" Then
f = My.Computer.FileSystem.OpenTextFileReader(Name)
zeile = f.ReadLine
zeile = f.ReadLine
If zeile = "ISP" Then
AusDatei.ISPNummer = f.ReadLine
zeile = f.ReadLine
zeile = f.ReadLine
Else : AusDatei.ISPNummer = "Alt"
End If
AusDatei.Planinhalt2 = f.ReadLine
zeile = f.ReadLine
zeile = f.ReadLine
AusDatei.planinhalt1 = f.ReadLine
zeile = f.ReadLine
zeile = f.ReadLine
AusDatei.Projektnummer = f.ReadLine
zeile = f.ReadLine
zeile = f.ReadLine
AusDatei.Blatt = f.ReadLine
zeile = f.ReadLine
zeile = f.ReadLine
AusDatei.Blätter = f.ReadLine
zeile = f.ReadLine
zeile = f.ReadLine
AusDatei.projekt2 = f.ReadLine
zeile = f.ReadLine
zeile = f.ReadLine
AusDatei.projekt1 = f.ReadLine
AusDatei.Datumsart = f.ReadLine
zeile = f.ReadLine
AusDatei.Druckdatum = f.ReadLine
zeile = f.ReadLine
zeile = f.ReadLine
AusDatei.Bearbeiter = f.ReadLine
zeile = f.ReadLine
zeile = f.ReadLine
AusDatei.Datum = f.ReadLine
f.Close()
End If
End Sub
Public Sub einlesenausdwg()
Dim Kopf As AcadBlockReference
Dim Entini As AcadEntity
For Each Entini In ThisDrawing.ActiveLayout.Block
If Entini.ObjectName = "AcDbBlockReference" Then
Kopf = Entini
If Kopf.Name = "A3" Then GoTo Kopfgefunden
End If
Next Entini
MsgBox("Sorry kein A3-Block vorhanden")
GoTo Ende
Kopfgefunden:
Attrib = Kopf.GetAttributes
With AusDwg
.Datum = Attrib(0).textString
.Bearbeiter = Attrib(1).textString
.Druckdatum = Attrib(2).textString
.projekt1 = Attrib(3).textString
.projekt2 = Attrib(4).textString
.planinhalt1 = Attrib(5).textString
.Planinhalt2 = Attrib(6).textString
.Blatt = Attrib(7).textString
.Blätter = Attrib(8).textString
.Projektnummer = Attrib(9).textString
If UBound(Attrib) > 9 Then
.ISPNummer = Attrib(10).textString
Else : .ISPNummer = "Alt"
End If
End With
Ende:
End Sub
Public Sub einlesendwgfensterchen()
With myForm
If Dir(Name) = "" Then
.BlätterButton.Enabled = False
.Dateibutton.Enabled = False
End If
.Erstelldatumtext.Text = AusDwg.Datum
.Bearbeitertext.Text = AusDwg.Bearbeiter
.Druckdatumtext.Text = Datum
.DruckdatumÄndertext.Text = "Aktuell"
If AusDatei.Datumsart = "F" Then
.Druckdatumtext.Text = AusDatei.Druckdatum
.DruckdatumÄndertext.Text = "Aus Datei"
End If
If AusDatei.Datumsart = "A" Then
.Druckdatumtext.Text = Datum
.DruckdatumÄndertext.Text = "Aktuell"
End If
If AusDatei.Datumsart = "V" Then
.Druckdatumtext.Text = AusDwg.Druckdatum
.DruckdatumÄndertext.Text = "Unverändert"
End If
.Projekt1text.Text = AusDwg.projekt1
.Projekt2Text.Text = AusDwg.projekt2
.Blatttext.Text = AusDwg.Blatt
.BlätterText.Text = AusDwg.Blätter
.ProjektnummerText.Text = AusDwg.Projektnummer
.Planinhalt1Text.Text = AusDwg.planinhalt1
.Planinhalt2Text.Text = AusDwg.Planinhalt2
If UBound(Attrib) > 9 Then
.ISPNummerText.Text = AusDwg.ISPNummer
Else : .ISPNummerButton.Enabled = False
.ISPNummerText.BackColor = SystemColors.InactiveCaption
.Label11.ForeColor = SystemColors.InactiveCaptionText
.ISPNummerButton.Enabled = False
End If
End With
End Sub
Und das ist der Anfang der Form:
Public Class Schemenkopfwindow
Dim MySchemakopf As Schemakopf = New Schemakopf
Private Sub Schriftkopfbutton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Schriftkopfbutton.Click
MySchemakopf.einlesendwgfensterchen()
End Sub
Private Sub Dateibutton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Dateibutton.Click
MySchemakopf.einlesendateifensterchen()
End Sub
Private Sub ErstelldatumButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ErstelldatumButton.Click
MySchemakopf.erstellakt()
End Sub
Private Sub Bearbeiterbutton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Bearbeiterbutton.Click
MySchemakopf.ich()
End Sub
Private Sub Druckdatumbutton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Druckdatumbutton.Click
MySchemakopf.druä()
MySchemakopf.druändern()
End Sub
Private Sub Projekt1Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Projekt1Button.Click
Me.Projekt1text.Text = ""
Me.Projekt1text.Focus()
End Sub
Das ist Alles von VBA übernommen.
Schau's Dir mal an.
Danke, Theo
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP