Hallo , ich hab mal was gebastelt, der support für Schweißsymbole ist aber erst mit 2024 dazu gekommen, also müsstest du vorher upgraden. Sieht dann so aus:
Hier der Code:
imports system.Windows.forms
Sub Main
Dim DrawingDoc As DrawingDocument = ThisDoc.Document
Dim ActiveDrawingSheet As Sheet = DrawingDoc.ActiveSheet
Dim Index As Integer
'[ FORMULAR
Dim myForm As New Form
myForm.Text = "Schweißsymbole nummerieren"
myForm.Width = 400
myForm.Height = 250
myForm.TopMost = True
myForm.StartPosition = FormStartPosition.CenterScreen
Dim btn1 As New Button
btn1.Text = "Alle durchnummerieren"
btn1.Width = 200
btn1.Height = 40
btn1.Top = 20
btn1.Left = 90
Dim btn2 As New Button
btn2.Text = "Symbol mit Nummer versehen"
btn2.Width = 200
btn2.Height = 40
btn2.Top = 80
btn2.Left = 90
Dim txtfield As New System.Windows.Forms.TextBox
txtfield.Name = "IndexBox"
txtfield.Text = 1
txtfield.Width = 50
txtfield.Height = 40
txtfield.Top = 140
txtfield.Left = 165
myForm.Controls.Add(btn1)
myForm.Controls.Add(btn2)
myForm.Controls.Add(txtfield)
AddHandler btn1.Click, _
Sub(sender, E)
Call IncrementAllSymbols(ActiveDrawingSheet)
End Sub
AddHandler btn2.Click, _
Sub(sender, E)
myForm.Visible = False
Index = CInt(myForm.Controls.Item("IndexBox").Text)
Dim LetsContinue As Boolean = True
While LetsContinue
Call IncrementAfterTheSelected(ActiveDrawingSheet, Index, LetsContinue)
Index += 1
myForm.Controls.Item("IndexBox").Text = CStr(Index)
myForm.Controls.Item("IndexBox").Refresh
End While
myForm.Visible = True
End Sub
myForm.Show()
While myForm.Visible
System.Windows.Forms.Application.DoEvents()
End While
']
End Sub
Sub IncrementAllSymbols(ActiveDrawingSheet As Sheet)
For i = 1 To ActiveDrawingSheet.WeldingSymbols.Count
Dim SymbolDefinition As DrawingWeldingSymbolDefinition = ActiveDrawingSheet.WeldingSymbols.Item(i).Definitions.Item(1)
SymbolDefinition.TailNote = i
Next i
End Sub
Sub IncrementAfterTheSelected(ActiveDrawingSheet As Sheet, ByRef Index As Integer, ByRef LetsContinue As Boolean)
Dim Selected As Boolean = False
Dim mySymbol As DrawingWeldingSymbol
Dim SubIndex As Integer = 1
While Not Selected
Dim Selection As Object = ThisApplication.CommandManager.Pick(SelectionFilterEnum.kDrawingDefaultFilter, "Symbol für angegebene Nummer wählen")
If Not Selection Is Nothing Then
If Selection.Type = ObjectTypeEnum.kDrawingWeldingSymbolObject Then Selected = True
mySymbol = Selection
mySymbol.Definitions.Item(1).TailNote = CStr(Index)
SubIndex = Index + 1
Else
LetsContinue = False
mySymbol = Nothing
Exit While
Exit Sub
End If
End While
If mySymbol IsNot Nothing Then
For Each WeldingSymbol As DrawingWeldingSymbol In ActiveDrawingSheet.WeldingSymbols
If Not WeldingSymbol Is mySymbol Then
If WeldingSymbol.Definitions.Item(1).TailNote = String.Empty Then
WeldingSymbol.Definitions.Item(1).TailNote = SubIndex
SubIndex += 1
Else If CInt(WeldingSymbol.Definitions.Item(1).TailNote) >= Index Then
WeldingSymbol.Definitions.Item(1).TailNote = SubIndex
SubIndex += 1
End If
End If
Next WeldingSymbol
End If
End Sub
Fanden Sie diesen Beitrag hilfreich? Fühlen Sie sich frei, diesen Beitrag zu liken.
Wurde Ihre Frage erfolgreich beantwortet? Klicken Sie dann auf die Schaltfläche LÖSUNG AKZEPTIEREN
Inventor Versionen:
2025.2