|   |   | 
  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für CATIA & Co. | 
|   |   | 
  | Schnell, effizient und günstig: Mit der Kisters 3DViewStation 3D Arbeits- und Reparaturanleitungen einfach erstellen und pflegen, eine Pressemitteilung
  | 
| 
Autor
 | 
Thema:  klasse des Shape? (964 mal gelesen)
 | 
 
                        leipziger Mitglied Dipl.-Ing. Maschinenbau (FH)
   
  
        Beiträge: 171 Registriert: 05.09.2005 AIX 275  CatiaV5 R14 SP3 
                         | 
                        
                         
                                                 
                        erstellt am: 29. Nov. 2005 09:52       <-- editieren / zitieren -->           Unities abgeben:           
                        
  Hallo weis jemand wie ich von einem Objekt (Pad oder Assemble) der Oberklasse Shape die Klasse rausfinden kann und diese in der If Then Else Bedingung abfragen kann?  Mein Problem ist das ich ein Marco schreibe welches alle Bodies sucht und das darüber liegende AssemblyFeature genau so wie den Body benennt. So bald aber im Body ein Shape gefunden wird was nicht für Klasse BooleanShape gehört, das Marco nicht mehr funktioniert. hier ist meine Probedatei Dim partDocument1 As PartDocument Dim part1 As Part Dim body1 AS Body Dim body2 AS Body Dim bodies1 As Bodies Dim name1 As String Dim shapes1 As Shapes Dim shape1 As Shape Sub CATMain ()  Set partDocument1 = CATIA.ActiveDocument Set part1 = partDocument1.part Set bodies1=part1.Bodies
 Dim j As Integer MsgBox Bodies1.Count Set body1 = Bodies1.Item (1) MsgBox body1.Shapes.Count Set shape1 = body1.Shapes.Item(1) Set body2 = shape1.body MsgBox body2.name End Sub Bis dann Leipziger Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  | 
                        
                        leipziger Mitglied Dipl.-Ing. Maschinenbau (FH)
   
  
        Beiträge: 171 Registriert: 05.09.2005 AIX 275  CatiaV5 R14 SP3 
                         | 
                        
                         
                                                 
                        erstellt am: 29. Nov. 2005 10:59       <-- editieren / zitieren -->           Unities abgeben:           
                        
  Hallo ich bin selber es Bißchen weiter gekommen! Also ich kann mit  Dim sObjectType As String sObjectType = TypeName(myObject) des Objekt schon unterscheiden, müsste aber vier If Then Else Bedingungen schreiben. Mal sehen vielleicht bekomme ich ja noch einen Tip wie ich die Klasse ausfindig machen. CU  Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  | 
                        
                        tomtom1972 Mitglied dipl ing maschinenbau
    
  
        Beiträge: 608 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19 
                         | 
                        
                         
                                                 
                        erstellt am: 29. Nov. 2005 14:01       <-- editieren / zitieren -->           Unities abgeben:            Nur für leipziger  
                        
  Hallo, probiers mal so, dann kannst du dir die if-Schleifen (Typename: Add, Assemble ....)schenken. Sub CATMain () Dim oBodies, oBody, oShapes, oItem As Variant Set oBodies = Catia.ActiveDocument.Part.Bodies On Error Resume Next For Each oBody In oBodies    Set oShapes = oBody.Shapes    For Each oItem In oShapes       If Not IsEmpty(oItem.Body) Then          oItem.Name = oItem.Body.Name       End If    Next Next On Error GoTo 0 End Sub ------------------ tomtom1972 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  | 
                        
                        Randle Mitglied CAD/PLM Consultant
    
  
        Beiträge: 758 Registriert: 12.04.2003 Win10 x64 CATIA V5 R18, R19, R21, R27-29 
                         | 
                        
                         
                                                 
                        erstellt am: 29. Nov. 2005 17:44       <-- editieren / zitieren -->           Unities abgeben:            Nur für leipziger  
                         | 
                        
                        leipziger Mitglied Dipl.-Ing. Maschinenbau (FH)
   
  
        Beiträge: 171 Registriert: 05.09.2005 AIX 275  CatiaV5 R14 SP3 
                         | 
                        
                         
                                                 
                        erstellt am: 30. Nov. 2005 20:49       <-- editieren / zitieren -->           Unities abgeben:           
                        
  Danke Danke ich habe auch eine Lösung gefunden und es funktioniert!!! :-) ich werde sie morgen mal posten. also ich habe mal ein Semester Java Programmiert und bin kein Informatiker kann mir einer die Namenkonvention erklären wegen dem o vorm namen.  danke Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  | 
                        
                        tomtom1972 Mitglied dipl ing maschinenbau
    
  
        Beiträge: 608 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19 
                         | 
                        
                         
                                                 
                        erstellt am: 01. Dez. 2005 05:48       <-- editieren / zitieren -->           Unities abgeben:            Nur für leipziger  
                        
  Hi, zu finden in CAA V5 Automation Code Presentation Rules, Rules and Standards: variable names are to begin with a lowercase letter describing its type, if you don't have to use your own prefix system (as for example Microsoft's VBScript Coding Conventions), the following minimal prefixes are mandatory: b boolean bIsUpToDate  d double dLength  s string sName  i int iNumberOfElements  o objects oSketch1   Gruss TomTom   
  ------------------ tomtom1972 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  | 
                        
                        leipziger Mitglied Dipl.-Ing. Maschinenbau (FH)
   
  
        Beiträge: 171 Registriert: 05.09.2005 AIX 275  CatiaV5 R14 SP3 
                         | 
                        
                         
                                                 
                        erstellt am: 04. Dez. 2005 20:39       <-- editieren / zitieren -->           Unities abgeben:           
                        
  Danke für die namenserklärung so habe ich es gemacht CATIA.Status.Bar = "Macro Remane_Assemble.CATScript, Version 1.0" Dim partDocument1 As PartDocument Dim part1 As Part Dim body1 AS Body Dim body2 AS Body Dim bodies1 As Bodies Dim shapes1 As Shapes Dim shape1 As Shape Dim objecttype1 As String Dim name1 As String Sub CATMain () Set partDocument1 = CATIA.ActiveDocument Set part1 = partDocument1.part Set bodies1=part1.Bodies Dim j As Integer Dim k As Integer 'MsgBox Bodies1.Count For j=1 To Bodies1.Count Set body1 = Bodies1.Item(j) Set shapes1 = body1.Shapes 'MsgBox shapes1.Count For k=1 To shapes1.Count Set shape1 = shapes1.Item(k) objecttype1 = TypeName(shape1) 'MsgBox objecttype1 If objecttype1 = "Assemble" Then Set body2 = shape1.body name1 = body2.Name 'MsgBox name1 shape1.Name = name1+"_Assemble" End If If objecttype1 = "Add" Then Set body2 = shape1.body name1 = body2.Name 'MsgBox name1 shape1.Name = name1+"_Add" End If If objecttype1 = "Remove" Then Set body2 = shape1.body name1 = body2.Name 'MsgBox name1 shape1.Name = name1+"_Remove" End If If objecttype1 = "Intersect" Then Set body2 = shape1.body name1 = body2.Name 'MsgBox name1 shape1.Name = name1+"_Intersection" End If Next Next End Sub mfg Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  | 
                        
                        93Aero Mitglied Ing
   
  
        Beiträge: 106 Registriert: 02.12.2004 
                         | 
                        
                         
                                                 
                        erstellt am: 06. Dez. 2005 15:21       <-- editieren / zitieren -->           Unities abgeben:            Nur für leipziger  
                        
  Die Namenkonversionen sind bei Microsoft verbreitert und als "gut" bei der programmierenden Menschen gehandelt. Bei einigen Zehntausend Zeilen Quellcode sind die Bezeichnungen wie x,y & Co. so unübersichtlich, daß kein normales Softwareunternehmen das Geld dafür ausgibt, daß der Programmierer einen Tag lang sucht, wo ein "x" definiert ist und wie. Deswegen "n" für numeric, "str" für String, "C" für Class definition, Funktionnamen gemischt geschrieben usw. Aber zu Deiner Frage:  in VB steht "o" für Object. Man sieht sofort, mit "Set" zuweisen usw. Zum Vergleich: in C++ schreibt man "p" für Pointer (andere wissen gleich: "malloc", "free", "memcpy", und benutzen Java *g*) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP  | 
                       
 
                        93Aero Mitglied Ing
   
  
        Beiträge: 106 Registriert: 02.12.2004 
                         | 
                        
                         
                                                 
                        erstellt am: 06. Dez. 2005 15:24       <-- editieren / zitieren -->           Unities abgeben:            Nur für leipziger  
                         |