|  |  | 
|  | CATIA V5 Grundkurs | Einsteiger - 5 Std. 15 Min 48 | 
|  |  | 
|  | KISTERS 3DViewStation: Mit Modellbasiertem Design zum Modellbasierten Unternehmen , eine Pressemitteilung 
 | 
| Autor | Thema:  Zugriff auf UserSurface (1904 mal gelesen) | 
 | Robert B. Mitglied
 
 
 
      Beiträge: 4Registriert: 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 DocumentsSet documents1 = CATIA.Documents
   Dim partDocument1 As PartDocumentSet partDocument1 = documents1.Item("Test.CATPart")
   Dim part1 As PartSet part1 = partDocument1.Part
   Dim usersurfaces1 As UserSurfacesSet usersurfaces1 = part1.UserSurfaces
   Dim usersurface1 As UserSurfaceSet 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: 118Registriert: 05.05.2009
 XP 64BitCATIA 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: 4Registriert: 24.06.2009
 |    erstellt am: 24. Jun. 2009 13:19  <-- editieren / zitieren -->    Unities abgeben:            | 
                        | zoltan.bekesi Mitglied
 
 
   
 
      Beiträge: 321Registriert: 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: 4Registriert: 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: 321Registriert: 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:Vielleicht hilft dir das weiter.Sub catmain()
 Dim Part1 As Part
 Set Part1 = CATIA.ActiveDocument.Part
     Dim oAnnotationSets1 As AnnotationSetsSet oAnnotationSets1 = Part1.AnnotationSets
     Dim oAnnotationSet As AnnotationSetSet oAnnotationSet = oAnnotationSets1.Item(1)
     Dim oAnnotation    'As Annotation 'nur die übliche VBA ZickigkeitSet oAnnotation = oAnnotationSet.Annotations.Item(1)
     Dim iSurfacesCount As IntegeriSurfacesCount = oAnnotation.GetSurfacesCount
 Dim oSurfaces()
 If iSurfacesCount > 0 Then
 ReDim oSurfaces(iSurfacesCount - 1)
 oAnnotation.GetSurfaces oSurfaces
         Dim i As IntegerFor i = 0 To iSurfacesCount - 1
 Debug.Print oSurfaces(i)
 Next
     End If End Sub 
 Oder du kannst vielleicht die Lösung unter "Annotation" in V5Automation.chm finden
 Gruß,Zoltan
 [Diese Nachricht wurde von zoltan.bekesi am 25. Jun. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP | 
                       
 | Robert B. Mitglied
 
 
 
      Beiträge: 4Registriert: 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 |