Hallo,
ich kämpfe gerade mit der Aufbereitung von Zeichung und Modell zu Blechteilen mit definierter Orientierung des Halbzeugs (Bleche mit
Muster oder Schliff).
Mein Problem besteht darin, dass die per Export der Abwicklung erzeugte DXF-Datei UND die normale Zeichungsableitung die Informationen
zur Musterrichtung wiedergeben sollen.
Mein Ansatz ist, dass ich auf dem gefalteten Modell eine Extrusion anbringen möchte, da diese problemlos in der Zeichnung sichtbar wird.
Natürlich werden die erzeugten Körperkanten auch im DXF der Abwicklung sichtbar. Die Schwierigkeit besteht nun darin, dass die Linien,
je nach Tiefe der Extrusion auf den Layern für Körperkanten oder Features ausgegeben werden. Diese sind auf der Maschine aber mit
Schnitt- bzw Gravurfunktionen assoziiert.
Die Suche nach Lösungen hierfür zeigte die Möglichkeit auf, einzelne Körperkanten mit spezifischen DXF-Ausgabezielen zu "versorgen":
'Attribut-Gruppe anlegen
Try
attSet = oEdge.AttributeSets.Item("FlatPatternAttributes")
Catch ex As Exception
attSet = oEdge.AttributeSets.Add("FlatPatternAttributes")
End Try
'Attributwert für Ziel-Layer setzen
Try
att = attSet.Item("LayerName")
Catch ex As Exception
att = attSet.Add("LayerName", Inventor.ValueTypeEnum.kStringType, myLayerName)
End Try
Das funktioniert so weit auch, wenn die Kanten aus normalen Linien + Bögen abgeleitet sind. Dass z.B. Schriftbegrenzungen nicht korrekt
behandelt werden ist zu verschmerzen.
Leider ist es im Modell nicht erkennbar, ob eine Attributzuwesung erfolgreich war. Sicherheit ist also nur zu erreichen, wenn die DXF-
dateien alle noch einmal geöffnet und ggf. korrigiert werden, was vermieden werden soll. Daher ist meine Idee, die
Kennzeichnung/Attributzuweisung indirekt vorzunehmen:
Die Extrusion, die die Musterrichtung kennzeichnen soll benenne ich mit "Musterrichtung". Beim speichrn der Datei oder ggf. bei Aufruf
der Exportfunktion möchte ich nun den Abwicklungskörper auf Kanten durchsuchen, die aus einem Feature "Musterrichtung" hervorgegangen
sind und diese mit den gewünschten Attributen versehen.
Für das gefaltete Modell klappt das. Nur hängen die hier erzeugten Attribute auch an den Kanten des gefalteten Modells und nicht an
denen der Abwicklung weshalb die DXF-datei des Abwicklungsexports unverändert bleibt:
Try
MsgBox("Anzahl der Blechkörper: " & iPartDoc.ComponentDefinition.SurfaceBodies.Count)
B = iPartDoc.ComponentDefinition.SurfaceBodies(1)
MsgBox("Blechkörper besitzt " & B.Faces.Count & " Flächen ...")
For Each iFace In B.Faces
Try
'iFeature = iFace.CreatedByFeature
'MsgBox("Face found created by: " & iFeature.Name)
iSourceFace = iFace.GetSourceFace() 'geht
If iSourceFace Is Nothing Then
MsgBox("Face found created by: " & iFace.CreatedByFeature.Name.ToString)
'das klappt!
'Wenn Schliffmarke gefunden, dann Flächen einfärben + Kanten der Flächen mit Attribut versehen
'lassen sich hier u.U. abhängige Flächen der Abwicklung finden?
Else()
MsgBox("Sourceface for derived face found ...")
MsgBox("Face found created by: " & iSourceFace.CreatedByFeature.Name.ToString)
'Wenn Schliffmarke gefunden, dann Flächen einfärben + Kanten der Flächen mit Attribut versehen
End If
Catch ex2 As Exception
MsgBox("Bestimmung der Flächenherkunft fehlgeschlagen: " & ex2.ToString)
End Try
Next
Catch ex As Exception
MsgBox("Blechkörper nicht gefunden")
End Try
Ersetze ich nun in diesem Code
B = iPartDoc.ComponentDefinition.SurfaceBodies(1)
durch
FP = iPartDoc.ComponentDefinition.Flatpattern
und
B = FP.Body
um den Körper der Abwicklung zu durchsuchen sollte das meiner Meinung nach eigentlich genauso funktionieren. In Praxis tut es das leider
nicht. Ich erhalte zum Aufruf von
iFace.CreatedByFeature. ...
nie ein verwertbares Ergebnis.
Ich erhalte die Fehlermeldung aus Catch Ex2
Bestimmung der Flächenherkunft fehlgeschlagen: SystemArgumentException: Falscher Parameter.(Ausnahme von HRESULT:0x80070057
(E_INVALIDARG)) bei System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapper
Types, MessageData& msgData)
bei Inventor.Face.get_CreatedByFeature() ...
Für Tips eurerseits, ob ich hier einen Gedankenfehler mache, das Objektmodell falsch interpretiere oder ob eine Lücke oder ein Fehler in
der API vorliegt wäre ich sehr dankbar.
Alternative Ansätze, um das eigentliche Problem der Musterhinweise in Zeichnung UND DXF-Ableitung der Abwicklung ohne manuelle
Nacharbeit zu lösen, wären auch sehr willkommen.
m.f.G.
Harold
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP