Autor
|
Thema: Referenz für Intersect mit zwei Ebenen/Elementen (468 mal gelesen)
|
esho Mitglied Automotive Automatisierung
Beiträge: 22 Registriert: 12.04.2022 Catia V5 R29
|
erstellt am: 16. Mai. 2022 10:38 <-- editieren / zitieren --> Unities abgeben:
Servus Zusammen, Ich möchte Referenz für ein intersect automatisch erstellen. Anbei findet ihr ein Screenshot von den Strukturbaum und den manuelle Referenz Update Fenster. Ich habe jetzt in mein Code mit der Hilfe von [email]bgrittmann[email] zwei Ebenen (Surfaces/Flächen:"HRERe" und "HRELi" ) gesucht und erfolgreich selektiert. Unten findet ihr das Code Abschnitt: Code:
'Auf neue Ebene 1 zugreifen Set oNewHybridBody1 = hybridBodies1.Item("Input Vermessung") Set oMySearchedShape = Nothing for each oHybridShape in oHybridBody.HybridShapes if oHybridShape.Name = sSearchedName and TypeName(oHybridShape) = "HRERe" then set oMySearchedShape = oHybridShape Exit for end if next Set oNewPlane1 = oMySearchedShape 'Auf neue Ebene 2 zugreifen Set oMySearchedShapeDer = Nothing for each oHybridShapeDer in oHybridBody.HybridShapes if oHybridShapeDer.Name = sSearchedName and TypeName(oHybridShapeDer) = "HRELi" then set oMySearchedShapeDer = oHybridShapeDer Exit for end if next Set oNewPlane2 = oMySearchedShapeDer
Jetzt hat das Intersect "Schnittebene Hinterrad" zwei Elementen als Referenz aber mein Code zeigt ein Fehler: The Method CreateReferenceFromObject Failed. Ich habe vorgenommen, die zwei Ebenen mit Method CreateReferenceFromObject eins bei eins als Referenz zu setzen. Hier ist mein Code Abschnitt: Code:
'auf Intersect zugreifen Set oHybridbody = hybridBodies1.Item("Output Fahrgeometrie") Set hybridShapeIntersection1 = oHybridbody.HybridShapes.Item("Schnittebene Hinterrad") 'Referenz austauschen Set oRefNewPlane1 = oPart.CreateReferenceFromObject(oNewPlane1) hybridShapeIntersection1.Element2 = oRefNewPlane1 Dim reference1 As Reference Set reference1 = part1.CreateReferenceFromObject(hybridShapeSurfaceExplicit2) Set oRefNewPlane2 = oPart.CreateReferenceFromObject(oNewPlane2) hybridShapeIntersection1.Element2 = oRefNewPlane2
Wie kann ich jetzt für den Intersect "Schnittebene Hinterrad" die Zwei Ebenen "HRERe"/oNewPlane1 und "HRELi"/oNewPlane2 als Referenz erstellen? Gruß, Esho
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 16. Mai. 2022 10:50 <-- editieren / zitieren --> Unities abgeben: Nur für esho
Servus Und sind in den Objekten oNewPlane1 und oNewPlane1 die richtigen Elemente (Ebenen)? Oder sind die sogar Nothing? Du musst bei TypeName wohl nach "HybridShapeSurfaceExplicit" suchen. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
esho Mitglied Automotive Automatisierung
Beiträge: 22 Registriert: 12.04.2022 Catia V5 R29
|
erstellt am: 16. Mai. 2022 11:04 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, Ich habe mein Code nach dein Hinweis korrigiert Code:
for each oHybridShape in oHybridBody.HybridShapes if oHybridShape.Name = sSearchedName and TypeName(HybridShapeSurfaceExplicit) = "HRERe" then set oMySearchedShape = oHybridShape Exit for end if next
Jetzt sind in den Objekten oNewPlane1 und oNewPlane2 die richtigen Elemente [Ebenen:"HRERe" und "HRELi"]. Aber nach einführen des Codes zeigt immer noch den gleichen Fehler Zitat: The Method CreateReferenceFromObject Failed.
kannst du mir zwar mit den Referenz erstezen helfen? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 16. Mai. 2022 11:10 <-- editieren / zitieren --> Unities abgeben: Nur für esho
Servus Wie wäre es so (ungetestet): Code: for each oHybridShape in oHybridBody.HybridShapes if oHybridShape.Name = "HRERe" and TypeName(oHybridShape) = "HybridShapeSurfaceExplicit" then set oNewPlane1 = oHybridShape Exit for end if next
Falls du in VBA programmierst: nutze wie Möglichkeiten des Tools (Watch-, Local-Fenster, Schrittweise ausführen, ...) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
esho Mitglied Automotive Automatisierung
Beiträge: 22 Registriert: 12.04.2022 Catia V5 R29
|
erstellt am: 16. Mai. 2022 11:34 <-- editieren / zitieren --> Unities abgeben:
Servus, Hier mein korrigierte Code: Code:
'Auf neue Ebene 1 zugreifen Set oNewHybridBody1 = hybridBodies1.Item("Input Vermessung") Set oMySearchedShape = Nothing for each oHybridShape in oHybridBody.HybridShapes if oHybridShape.Name = "HRERe" and TypeName(oHybridShape) = "HybridShapeSurfaceExplicit" then set oMySearchedShape = oHybridShape Exit for end if next Set oNewPlane1 = oMySearchedShape 'Set oNewPlane1 = oNewHybridBody1.Item("HRERe")'Auf neue Ebene 2 zugreifen Set oMySearchedShape = Nothing for each oHybridShape in oHybridBody.HybridShapes if oHybridShape.Name = "HRERe" and TypeName(oHybridShape) = "HybridShapeSurfaceExplicit" then set oMySearchedShape = oHybridShape Exit for end if next Set oNewPlane2 = oMySearchedShape
Anscheinend scheint es zu funktionieren weil den Code jetzt läuft. Ich benutze den Makros Editor und hatte gerne änhlich wie ein IDE - Intergrated Development Editor. Aber leider habe ich angefangen mit CatScript zu schrieben! kann man CatScript Code in VBAEditor kompilieren? Den MacrosEditor hat leider keine Tools Hast du ein Idee ob mein Code für Referenz ersetzen richtig ist? Code:
'Referenz austauschen Set oRefNewPlane1 = oPart.CreateReferenceFromObject(oNewPlane1) hybridShapeIntersection1.Element2 = oRefNewPlane1Dim reference1 As Reference Set reference1 = part1.CreateReferenceFromObject(hybridShapeSurfaceExplicit2) Set oRefNewPlane2 = oPart.CreateReferenceFromObject(oNewPlane2) hybridShapeIntersection1.Element2 = oRefNewPlane2 End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 16. Mai. 2022 11:40 <-- editieren / zitieren --> Unities abgeben: Nur für esho
Servus Du kannst im VBA-Editor dein Programm schreiben und dann als CATScript verwendenden (solange du keine Userform, Collection, ... verwendest) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
esho Mitglied Automotive Automatisierung
Beiträge: 22 Registriert: 12.04.2022 Catia V5 R29
|
erstellt am: 16. Mai. 2022 11:52 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 16. Mai. 2022 11:56 <-- editieren / zitieren --> Unities abgeben: Nur für esho
|
esho Mitglied Automotive Automatisierung
Beiträge: 22 Registriert: 12.04.2022 Catia V5 R29
|
erstellt am: 16. Mai. 2022 13:10 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 16. Mai. 2022 13:17 <-- editieren / zitieren --> Unities abgeben: Nur für esho
Und hast du schon nach der Ursache gesucht? Du hast einmal oNewHybridBody1 und einmal oHybridBody. Welches ist jetzt das richtige? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
esho Mitglied Automotive Automatisierung
Beiträge: 22 Registriert: 12.04.2022 Catia V5 R29
|
erstellt am: 18. Mai. 2022 13:24 <-- editieren / zitieren --> Unities abgeben:
Servus Bernd Danke für die Info, Aber es zeigt ein Fehler immer noch in den CreateRefernceFromObject() Zeil. Ich habe das unter markiert Code:
Sub CATMain() Set partDocument1 = CATIA.ActiveDocument Set oPart = partDocument1.Part Set hybridBodies1 = oPart.HybridBodies 'auf Intersect zugreifen Set oHybridbody = hybridBodies1.Item("Output Fahrgeometrie") Set hybridShapeIntersection1 = oHybridbody.HybridShapes.Item("Schnittebene Hinterrad") 'Auf neue Ebene 1 zugreifen Set oNewHybridBody1 = hybridBodies1.Item("Input Vermessung") Set oMySearchedShape = Nothing for each oHybridShapeDer in oNewHybridBody1.HybridShapes if oHybridShapeDer.Name = "HRERe" and TypeName(oHybridShapeDer) = "HybridShapeSurfaceExplicit" then set oMySearchedShape = oHybridShapeDer Exit for end if next Set oNewPlane1 = oMySearchedShape 'Auf neue Ebene 2 zugreifen Set oMySearchedShape = Nothing for each oHybridShapeDer in oNewHybridBody1.HybridShapes if oHybridShapeDer.Name = "HRELi" and TypeName(oHybridShapeDer) = "HybridShapeSurfaceExplicit" then set oMySearchedShape = oHybridShapeDer Exit for end if next Set oNewPlane2 = oMySearchedShape 'Referenz austauschen Set oRefNewPlane1 = oPart.CreateReferenceFromObject(oNewPlane1) hybridShapeIntersection1.Element1 = oRefNewPlane1
Dim reference1 As Reference Set reference1 = oPart.CreateReferenceFromObject(hybridShapeSurfaceExplicit2) Set oRefNewPlane2 = oPart.CreateReferenceFromObject(oNewPlane2) hybridShapeIntersection1.Element2 = oRefNewPlane2 End Sub
Kannst du mir bitte kurz nochmal helfen, ich checke das irgendwie nicht! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 18. Mai. 2022 13:48 <-- editieren / zitieren --> Unities abgeben: Nur für esho
Servus Bei mir läuft dein Code. Sind oNewPlane1 und oNewPlane2 gefüllt (nicht NOTHING)? Gibt es die beiden GeoSets nur einmal, oder Name doppelt vor? Sind die gesuchten Flächen wirklich vom Typ HybridShapeSurfaceExplicit? Wie lautet die Fehlermeldung? Gruß Bernd PS: Ich empfehle dir (falls du deine Makros als VBA oder CATScript erstellst) die Variablen alle richtig zu dimensionieren (erleichtert dir die Fehlersuche) ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
esho Mitglied Automotive Automatisierung
Beiträge: 22 Registriert: 12.04.2022 Catia V5 R29
|
erstellt am: 18. Mai. 2022 14:27 <-- editieren / zitieren --> Unities abgeben:
Photo - 1: Die Felhermeldung habe ich als Screenshot hingefügt Photo - 2: Den Strukturbaum mit Surface: HRELi und HRERe Es gibt nur eindeutige Namen von den Surfaces statt für Hybridshapes zu suchen, suche ich jetzt nur bei Name aber leider kommt die gliche Felhermeldung 'auf Intersect zugreifen Set oHybridbody = hybridBodies1.Item("Output Fahrgeometrie") Set hybridShapeIntersection1 = oHybridbody.HybridShapes.Item("Schnittebene Hinterrad") 'Auf neue Ebene 1 zugreifen Set oNewHybridBody1 = hybridBodies1.Item("Input Vermessung") Set oMySearchedShape = Nothing for each oHybridShapeDer in oNewHybridBody1.HybridShapes if oHybridShapeDer.Name = "HRERe" then set oMySearchedShape = oHybridShapeDer Exit for end if next Set oNewPlane1 = oMySearchedShape 'Auf neue Ebene 2 zugreifen Set oMySearchedShape = Nothing for each oHybridShapeDer in oNewHybridBody1.HybridShapes if oHybridShapeDer.Name = "HRELi" then set oMySearchedShape = oHybridShapeDer Exit for end if next Set oNewPlane2 = oMySearchedShape 'Referenz austauschen Set oRefNewPlane1 = oPart.CreateReferenceFromObject(oNewPlane1) hybridShapeIntersection1.Element1 = oRefNewPlane1
Dim reference1 As Reference Set reference1 = oPart.CreateReferenceFromObject(hybridShapeSurfaceExplicit2) Set oRefNewPlane2 = oPart.CreateReferenceFromObject(oNewPlane2) hybridShapeIntersection1.Element2 = oRefNewPlane2
[Diese Nachricht wurde von esho am 18. Mai. 2022 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
esho Mitglied Automotive Automatisierung
Beiträge: 22 Registriert: 12.04.2022 Catia V5 R29
|
erstellt am: 18. Mai. 2022 14:54 <-- editieren / zitieren --> Unities abgeben:
Servus, Ich habe ein Felher in den VariableNamen gefunden, es leigt daran dass zwei lücken vor den Surface Name HRERe kommt aber es in den Strukturbaum nicht angezeigt wird. Vielen Dank für die Hilfe mit den Suche für den richtigen VariableName. Das habe ich mit dem VBAEditor gelöst. Jetzt Ziegt es ein Felher in den Reference Zeil. Anbei findest du den Screenshot von der Felhermeldung. In VBA Editor ist die beide Variablen oNewPlane1 und oNewPlane2 mit Surfaces " HRERe" und " HRELi" besetzt. Erneute Code: Sub CATMain() Set partDocument1 = CATIA.ActiveDocument Set oPart = partDocument1.Part Set hybridBodies1 = oPart.HybridBodies 'auf Intersect zugreifen Set oHybridbody = hybridBodies1.Item("Output Fahrgeometrie") Set hybridShapeIntersection1 = oHybridbody.HybridShapes.Item("Schnittebene Hinterrad") 'Auf neue Ebene 1 zugreifen Set oNewHybridBody1 = hybridBodies1.Item("Input Vermessung") Set oMySearchedShape = Nothing for each oHybridShapeDer in oNewHybridBody1.HybridShapes if oHybridShapeDer.Name = " HRERe" then set oMySearchedShape = oHybridShapeDer Exit for end if next Set oNewPlane1 = oMySearchedShape 'Auf neue Ebene 2 zugreifen Set oMySearchedShape = Nothing for each oHybridShapeDer in oNewHybridBody1.HybridShapes if oHybridShapeDer.Name = " HRELi" then set oMySearchedShape = oHybridShapeDer Exit for end if next Set oNewPlane2 = oMySearchedShape 'Referenz austauschen Set oRefNewPlane1 = oPart.CreateReferenceFromObject(oNewPlane1) hybridShapeIntersection1.Element1 = oRefNewPlane1 'Fehlerlinie
Dim reference1 As Reference Set reference1 = oPart.CreateReferenceFromObject(hybridShapeSurfaceExplicit2) Set oRefNewPlane2 = oPart.CreateReferenceFromObject(oNewPlane2) hybridShapeIntersection1.Element2 = oRefNewPlane2 End Sub Meine Frage: Gibt es ein Method, der direkt den Referenz für den Intersect mit Element 1 und Element 2 verknüpft?
[Diese Nachricht wurde von esho am 18. Mai. 2022 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 18. Mai. 2022 16:18 <-- editieren / zitieren --> Unities abgeben: Nur für esho
Servus Ist dein hybridShapeIntersection1 eine HybridShapeIntersection (ggf mal TypeName davon ausgeben lassen)? Hat sich ggf da was geändert (bitte mal in der Doku schauen)
Zitat: Meine Frage: Gibt es ein Method, der direkt den Referenz für den Intersect mit Element 1 und Element 2 verknüpft?
nein Gruß Bernd PS: Wenn du den TypeName von zB oHybridShapeDer nicht mehr prüfst könnte auch eine Linie/Kurve/Punbt die so heißen gefunden werden ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
esho Mitglied Automotive Automatisierung
Beiträge: 22 Registriert: 12.04.2022 Catia V5 R29
|
erstellt am: 18. Mai. 2022 17:05 <-- editieren / zitieren --> Unities abgeben:
Servus Bernd Tatsächlich hat hybridShapeIntersection1 <No Variables> aber oHybridbody hat den "Output Fahrgeometrie" richtig drin gehabt. Obwohl "Schnittebene Hinterrad" ein HybridShapes ist, den funktion Set hybridShapeIntersection1 = oHybridbody.HybridShapes.Item("Schnittebene Hinterrad") funktioniert nicht!. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 18. Mai. 2022 19:13 <-- editieren / zitieren --> Unities abgeben: Nur für esho
Servus Also bei mir hat .Item("Schnittebene Hinterrad") funktioniert. Eventuell hast du da auch ein anderes Zeichen/Leerzeichen mit drin. Nun bekommst du einen kleinen Eindruck warum 40-60% des Aufwands das Testen und die Fehlerbehandlung eines Makros aus machen (und das hast du noch nicht mit drin) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |