Autor
|
Thema: Zugriff auf UserSurface (1681 mal gelesen)
|
Robert B. Mitglied
Beiträge: 4 Registriert: 24.06.2009
|
erstellt am: 24. Jun. 2009 10:35 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich bin neu in der Welt der Makroprogrammierung und scheitere beim Versuch ein UserSurface anzusprechen. Ich bekomme die Fehlermeldung "Method 'IsNull' of object 'UserSurfaces' failed" Kann mir jemand sagen was ich falsch mache? Hier der Code: Sub catmain() Dim documents1 As Documents Set documents1 = CATIA.Documents Dim partDocument1 As PartDocument Set partDocument1 = documents1.Item("Test.CATPart") Dim part1 As Part Set part1 = partDocument1.Part Dim usersurfaces1 As UserSurfaces Set usersurfaces1 = part1.UserSurfaces Dim usersurface1 As UserSurface Set usersurface1 = usersurfaces1.Item(1) 'an dieser Stelle komme ich nicht weiter End Sub Vielen Dank im Voraus, Grüße Robert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Maetes Mitglied Student
Beiträge: 118 Registriert: 05.05.2009 XP 64Bit CATIA V5R19SP4 MS Office 2003
|
erstellt am: 24. Jun. 2009 11:02 <-- editieren / zitieren --> Unities abgeben: Nur für Robert B.
Bin selbst völliger Anfänger aber probier mal eines von den Befehlen aus: Set usersurface1 = usersurfaces1.Item(1).Value Set usersurface1 = usersurfaces1.Item(1).Reference oder Set usersurface1 = usersurfaces1.Item(1).Value.Name msgbox usersurface1 Habs nicht ausprobiert, habs jetzt nur mal von meinem jetztigen Projekt abgeleitet. Vllt hilfts. Gs Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Robert B. Mitglied
Beiträge: 4 Registriert: 24.06.2009
|
erstellt am: 24. Jun. 2009 13:19 <-- editieren / zitieren --> Unities abgeben:
|
zoltan.bekesi Mitglied
Beiträge: 321 Registriert: 22.10.2006 Job: CATIA V5R19 / XP 32bit MS Office 2003 Microstation V8 2004 Edition DELL Precision M6300
|
erstellt am: 24. Jun. 2009 19:27 <-- editieren / zitieren --> Unities abgeben: Nur für Robert B.
Hallo Robert, ich kenne zwar leider nicht, wozu UserSurfaces gut sind, mit der Programmierbarkeit ist allerdings unter R19 wirklich was faul. Es scheint nichts zu funktionieren (man kann weder durch Item, noch durch GetItem auf Elemente der Collection zugreifen), obwohl der Count weit über 0 ist. Braucht man dazu etwa einen FTA-Lizenz? In V5Automation steht fast alles über diese Collection unter "3D Functional Tolerancing & Annotations"? Gruß, Zoltan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Robert B. Mitglied
Beiträge: 4 Registriert: 24.06.2009
|
erstellt am: 25. Jun. 2009 10:37 <-- editieren / zitieren --> Unities abgeben:
Hallo Zoltan, in einem UserSurface sind die Geometrieelemente hinterlegt, auf welchen eine Annotation (z.B. eine Toleranz) sitzt. Neue UserSurfaces generieren und anschließend Referenzen hinzufügen stellt kein Problem dar. Jedoch bestehende UserSurfaces anzusprechen funktioniert nicht. Des Weiteren würde ich auch gern wissen, wo man den Link zur Annotation findet, d.h. wie bekomme ich heraus, welches UserSurface zu welcher Annotation gehört? Zu deiner Frage mit der FTA-Lizenz: Ich habe eine, aber es funktioniert trotzdem nicht. Grüße, Robert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
zoltan.bekesi Mitglied
Beiträge: 321 Registriert: 22.10.2006 Job: CATIA V5R19 / XP 32bit MS Office 2003 Microstation V8 2004 Edition DELL Precision M6300
|
erstellt am: 25. Jun. 2009 20:35 <-- editieren / zitieren --> Unities abgeben: Nur für Robert B.
Hallo Robert, habe momentan zwar kein FTA-Lizenz, dein Problem kann man aber wahrscheinlich auf eine andere Art lösen. Wenn ich es richtig verstanden habe brauchst du die Info, an was dein Annotation angehängt ist. Ich habe es geschafft es textuell auszudrücken, indem ich von Annotation gefragt habe, an was bist du angehängt. Anbei mein Code (VBA, unter R19 getestet, mit nur ein Part geöffnet): Code: Sub catmain() Dim Part1 As Part Set Part1 = CATIA.ActiveDocument.Part Dim oAnnotationSets1 As AnnotationSets Set oAnnotationSets1 = Part1.AnnotationSets Dim oAnnotationSet As AnnotationSet Set oAnnotationSet = oAnnotationSets1.Item(1) Dim oAnnotation 'As Annotation 'nur die übliche VBA Zickigkeit Set oAnnotation = oAnnotationSet.Annotations.Item(1) Dim iSurfacesCount As Integer iSurfacesCount = oAnnotation.GetSurfacesCount Dim oSurfaces() If iSurfacesCount > 0 Then ReDim oSurfaces(iSurfacesCount - 1) oAnnotation.GetSurfaces oSurfaces Dim i As Integer For i = 0 To iSurfacesCount - 1 Debug.Print oSurfaces(i) Next End If End Sub
Vielleicht hilft dir das weiter. Oder du kannst vielleicht die Lösung unter "Annotation" in V5Automation.chm findenGruß, Zoltan [Diese Nachricht wurde von zoltan.bekesi am 25. Jun. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| NC-Programmierer*in (m/w/d) Automatisierung / Robotertechnik | Wir - die MT Aerospace - sind Teil des Raumfahrt- und Technologiekonzerns OHB. Als international führendes Unternehmen der Luft- und Raumfahrt entwickeln, fertigen und testen wir wesentliche Komponenten für Trägerraketen-Programme wie Ariane, das amerikanische Space Launch System (SLS) sowie kommerzielle Trägersysteme, die Airbus Flotte, Raumfahrzeuge, Satelliten und Anwendungen im Verteidigungsbereich.... | Anzeige ansehen | Automatisierungstechnik |
|
Robert B. Mitglied
Beiträge: 4 Registriert: 24.06.2009
|
erstellt am: 26. Jun. 2009 12:37 <-- editieren / zitieren --> Unities abgeben:
Hallo Zoltan, mit der Methode ".GetSurfaces" erhalte ich nur die Geometrieelemente auf denen die Annotation sitzt. Interessanter zu wissen wäre aber welches UserSurface zu welcher Annotation gehört. Am besten wäre es, ein UserSurface gegen ein anderes "auszutauschen", die V5Automation.chm bietet da allerdings nicht so viele Möglichkeiten. Und die, die dokumentiert sind (siehe ".Item"), wollen einfach nicht funktionieren... Trotzdem danke, schönes Wochenende, Robert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |