Hallo zusammen,
zur Zeit Beschäftige ich mich mit der Umstellung auf SWX 2010 SP 2.1.
Dabei werden div. selbst erstellt Tool getestet und habe nun einen Fehler gefunden an dem ich nicht weiter komme.
Wie im Thema schon erwähnt will ich beim Austausch des Blattformats per API auf mehreren Blättern, in der auch diese Blöcke enthalten sind, das umbenennen der Blöcke verhindern.
Hier ein Beispiel:
Es existiert in der Zeichnung mit mehreren Blättern und dem alten Blattformat ein Block "Schriftfeld".
In dem neuen Blattformat existiert ebenfalls der Block "Schriftfeld".
Wenn ich nun in der Zeichnung das Blattformat austauschen lasse wird der Block "Schriftfeld" zu "Schriftfeld_1" umbenannt. Wie kann ich das verhindern.
Wenn ich das Blattformat manuell austausche kommt eine Abfrage ob die Blöcke umbenannt werden sollen, dort kann ich dann auf Nein klicken und alles bleibt wie es war.
Kann mit jemand einen Hinweis geben an welcher stelle noch was dazu muß?
Hier noch die API:
Private Sub Blattformat_tauschen()
Dim View As Object
Dim InfoCount As Long
Dim InfoNames As Variant
Dim ModName As String
Dim Zeichnung As String
Dim k As Long
Dim errors As Long
Dim Länge As String
Dim dummy
Dim res As Long
Dim SheetFormat As String
Dim LayerMgr As Object
Dim Layer As Object
Set swApp = CreateObject("SldWorks.Application")
swApp.Visible = True
Set Model = swApp.ActiveDoc
Set LayerMgr = Model.GetLayerManager
If Not Model Is Nothing Then
InfoCount = Model.GetCustomInfoCount2("") ' wieviele Benutzerdef. Eigenschaften im akt. Teil?
InfoNames = Model.GetCustomInfoNames2("") ' Alle Namen der Benutzerdef. Eigenschaften in ein Variant einlesen
For k = 0 To InfoCount - 1 ' Schleife durch alle Benutzerdef. Eigenschaften
InfoNames(k) = "Blattformat" 'Or Left(InfoNames(K), 4) = "MARA" Then
dummy = Model.AddCustomInfo("Blattformat", "Text", "")
Next k
End If
If (Model.GetType() = swDocDRAWING) Then
res = LayerMgr.DeleteLayer("Default_1")
res = LayerMgr.DeleteLayer("Default_2")
res = LayerMgr.DeleteLayer("Default_3")
Else
End If
SheetFormat = Model.CustomInfo("Blattformat")
If (Model.GetType() = swDocDRAWING) Then
If Not SheetFormat = LoadResString(2000) Then
Mldg = LoadResString(128) + (Chr(10)) + LoadResString(129)
Stil = vbYesNo + vbQuestion + vbDefaultButton2
Titel = LoadResString(131)
Antwort = MsgBox(Mldg, Stil, Titel)
If Antwort = vbYes Then
Reload_sheetformat
Model.CustomInfo("Blattformat") = LoadResString(2000)
MsgBox LoadResString(141) + (Chr(10)) + LoadResString(142), vbOKOnly, LoadResString(143)
End If
End If
LayerAusblenden
End If
'Exit Sub
End Sub
@ Stefan : falls dir der SourceCode irgendwie bekannt vorkommt, da hast du mir damals sehr viel geholfen.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP