Hallo liebe Forumsgemeinde!
Ich bin nue hier und beschäftige mich erst seit kurzem mit der Makroprogrammierung in CATIA V5. Daher bitte ich darum, mir eventuelle dumme Fragen und Unkenntnis meinerseits nachzusehen.
Zum Sachverhalt:
Ich möchte, dass ein Nutzer eine Fläche selektiert und diese dann anders eingefärbt wird. Solange ich dies mit folgendem Code direkt durchführe, funktioniert das auch problemlos.
Sub Selektion_vornehmen()
Dim UserSelection
Dim Auswahl(0)
Dim E As String
Auswahl(0) = "AnyObject"
Set UserSelection = CATIA.ActiveDocument.Selection
If UserSelection.Count = 0 Then
E = UserSelection.SelectElement2(Auswahl, "Wählen Sie eine Fläche aus", False)
Else
MsgBox ("Sie dürfen keine vorausgewählten Elemente verwenden!")
Exit Sub
End If
If E = "Normal" Then
Dim xmlDoc As New DOMDocument
Dim xmlWurzel As IXMLDOMElement
xmlDoc.Load ("C:\Users\Rene\Documents\Studium Maschinenbau HSU\Master\Masterarbeit\XML-Dateien\Neu.xml")
Set xmlWurzel = xmlDoc.DocumentElement
Dim element As IXMLDOMElement
Set element = xmlDoc.createElement("Name")
xmlWurzel.appendChild element
xmlWurzel.LastChild.Text = UserSelection.Item(1).Value.Name
xmlDoc.Save ("C:\Users\Rene\Documents\Studium Maschinenbau HSU\Master\Masterarbeit\XML-Dateien\Neu.xml")
Else
MsgBox ("Abbruch")
End If
Dim ref As Reference
Set ref = UserSelection.Item(1).Reference
Dim Liste As Selection
Set Liste = CATIA.ActiveDocument.Selection
Liste.Clear
Liste.Add ref
Liste.VisProperties.SetRealColor 255, 255, 0, 1
End Sub
Kritisch wird es jetzt, wenn ich dies nicht mehr direkt nacheinander machen möchte. Ich habe eine zweite Sub geschrieben, in der ich mir den Namen des Brep-Elements einlese und darauf aufbauend die Fläche einfärben möchte.
Der Code sieht wie folgt aus:
Sub Fläche_einfärben()
Dim xmlDoc As New DOMDocument
xmlDoc.Load ("C:\Users\Rene\Documents\Studium Maschinenbau HSU\Master\Masterarbeit\XML-Dateien\Neu.xml")
Dim Flaeche As String
Flaeche = xmlDoc.DocumentElement.FirstChild.Text
'MsgBox (Flaeche)
' String für Referenz aufbereiten
Flaeche = Right(Flaeche, Len(Flaeche) - 10)
Flaeche = Left(Flaeche, InStr(Flaeche, "Cf11 )") + 6)
Dim Endung As String
Endung = ");WithPermanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR15)"
Flaeche = Flaeche & Endung
MsgBox (Flaeche)
Dim partDocument1 As PartDocument
Set partDocument1 = CATIA.ActiveDocument
Dim Bauteil As Part
Set Bauteil = partDocument1.Part
Dim bodies1 As bodies
Set bodies1 = Bauteil.bodies
Dim body1 As Body
Set body1 = bodies1.Item("Körper.2")
Dim shapes1 As Shapes
Set shapes1 = body1.Shapes
Dim solid1 As solid
Set solid1 = shapes1.Item("Volumen.1")
Dim ref As Reference
Set ref = Bauteil.CreateReferenceFromBRepName(Flaeche, solid1)
Dim Liste As Selection
Set Liste = CATIA.ActiveDocument.Selection
Liste.Clear
Liste.Add ref
Liste.VisProperties.SetRealColor 0, 0, 0, 0
CATIA.ActiveDocument.Part.Update
MsgBox ("Fertig")
End Sub
Wenn ich das ausführe ist es nun so, dass in der Symbolleiste der Grafikeigenschaften für die Fläche tatsächlich die Farbe Schwarz angezeigt wird, diese jedoch bei Selektion eines anderen Elementes nicht erkennbar ist. Wählt man die Fläche dann erneut an, so ist in der Symbolleiste ebenfalls nicht mehr Schwarz angezeigt. Eigentlich ist der Ablauf ja ähnlich. Ich vermute daher, dass bei der Erstellung der Referenz im zweiten Fall etwas nicht in Ordnung ist, kann den Fehler aber nicht finden.
Leider verstehe ich dieses "Phänomen" nicht und bitte um eure Unterstützung.
Viele Grüße,
René
[Diese Nachricht wurde von RH1002 am 16. Mai. 2012 editiert.]
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP