Nachricht 1 von 3
- Als neu kennzeichnen
- Lesezeichen
- Abonnieren
- Stummschalten
- RSS-Feed abonnieren
- Kennzeichnen
- Melden
Hallo!
Um Konstruktionen besser prüfen zu können habe ich mir eine Regel erstellt um markierte Bauteile schnell einfärben zu können. Funktioniert an sich auch so wie ich mir das vorgestellt habe, so lange wie ich im Modus "Komponente auswählen" bin. Jetzt möchte ich aber auch in der obersten Baugruppe Bauteile der Unterbaugruppen mit einfärben und wechsle in den Modus "Bauteil auswählen". Das macht der Code aber leider nicht.
Gibt es dafür eine Lösung? Und kann man zu dem Formular zwei Buttons hinzufügen über die ich die Auswahl zwischen Komponente auswählen und Bauteil auswählen steuer?
Danke!
Imports System.Windows.Forms
Sub Main()
' Formular
Dim myForm As New Form
myForm.Text = "Farbe auswählen"
myForm.Width = 250
myForm.Height = 200
myForm.TopMost = True ' Fenster bleibt im Vordergrund
myForm.StartPosition = FormStartPosition.CenterScreen
' Buttons für Grün/Rot
Dim btnGruen As New Button
btnGruen.Text = "Grün"
btnGruen.Width = 150
btnGruen.Height = 30
btnGruen.Top = 20
btnGruen.Left = 50
Dim btnRot As New Button
btnRot.Text = "Rot"
btnRot.Width = 150
btnRot.Height = 30
btnRot.Top = 60
btnRot.Left = 50
' Buttons zum Formular
myForm.Controls.Add(btnGruen)
myForm.Controls.Add(btnRot)
' Button Grün interaktion
AddHandler btnGruen.Click, Sub(sender, E)
ApplyColorToSelected("Green")
End Sub
' Button Rot interaktion
AddHandler btnRot.Click, Sub(sender, E)
ApplyColorToSelected("Red")
End Sub
'Formular im nicht-modalen Modus öffnen
myForm.Show()
'Kontrolle bei Inventor aktiv
While myForm.Visible
' in Inventor interagieren bei geöffneten Formular
System.Windows.Forms.Application.DoEvents()
End While
End Sub
Sub ApplyColorToSelected(colorName As String)
Try
' Prüfung ob Dokument Baugruppe
Dim oDoc As AssemblyDocument = ThisApplication.ActiveDocument
If oDoc Is Nothing OrElse oDoc.SelectSet.Count = 0 Then
MessageBox.Show("Bitte wählen Sie ein Bauteil oder eine Komponente aus.", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End If
' ausgewähltes Objekt prüfen
Dim selectedObject = oDoc.SelectSet(1)
If TypeOf selectedObject Is ComponentOccurrence Then
Dim oOccurrence As ComponentOccurrence = CType(selectedObject, ComponentOccurrence)
' Farbe auf die Komponente anwenden (unabhängig von der Hierarchieebene)
Try
Component.Color(oOccurrence.Name) = colorName
Catch ex As Exception
MessageBox.Show("Fehler beim Anwenden der Farbe: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
Else
MessageBox.Show("Bitte ein gültiges Bauteil oder eine Komponente auswählen.", "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Warning)
End If
Catch ex As Exception
MessageBox.Show("Fehler beim Anwenden der Farbe: " & ex.Message, "Fehler", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
End Sub
Gelöst! Gehe zur Lösung