Autor
|
Thema: GetGeometricalFeatureType von Selection Item (1927 mal gelesen)
|
geekv5 Mitglied Konstrukteur
Beiträge: 214 Registriert: 13.07.2011 Notebook<P>MSI GX660R Intel Core i5 460M 8GB DDR3 1GB Mobility HD5870 80GB Intel X25-M Postville 250GB HDD<P>Desktop<P>AMD Phenom II X4 965 1GB HD4890@ FirePro V8700 8GB DDR3-1600 2,5TB HDD<P>Belinea 2485 S1W 24" MVA
|
erstellt am: 16. Sep. 2012 10:15 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, könnt ihr mir kurz auf die Sprünge helfen, versuche verzweifelt den Geometrietyp eines selektierten Elements auszugeben doch GetGeometricalFeatureType schlägt immer fehl.. Hier mal ein Beispiel: Code: MsgBox CATIA.ActiveDocument.Part.HybridShapeFactory.GetGeometricalFeatureType(CATIA.ActiveDocument.Selection.Item2(1).Value)
Und nochmal in lang: Code: Dim partdocument1 As PartDocument Dim part1 As Part Dim selection1 As Selection Dim ref1 As Reference Dim hybridshapefactory1 As HybridShapeFactory Dim intgeomtype As Integer Dim strgeomtype As StringSet partdocument1 = CATIA.ActiveDocument Set selection1 = partdocument1.Selection Set ref1 = selection1.Item2(1).Reference Set part1 = partdocument1.Part Set hybridshapefactory1 = part1.HybridShapeFactory intgeomtype = hybridshapefactory1.GetGeometricalFeatureType(ref1) Select Case intgeomtype Case 0 strgeomtype = "Unknown" Case 1 strgeomtype = "Point" Case 2 strgeomtype = "Curve" Case 3 strgeomtype = "Line" Case 4 strgeomtype = "Circle" Case 5 strgeomtype = "Surface" Case 6 strgeomtype = "Plane" Case 7 strgeomtype = "Solid or Volume" End Select MsgBox strgeomtype
Habe es auch mit Selection.Item (ohne "2") versucht oder die Referenz über ein Objekt zu erzeugen, leider ohne Erfolg.. Hoffe ihr könnt mir da weiter helfen.. Gruß ------------------ Seid nicht dumm, lest drin rum! 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. Sep. 2012 10:55 <-- editieren / zitieren --> Unities abgeben: Nur für geekv5
Servus Wenn du das Element aus der Shape-Collection übergibst geht es: Code: intgeomtype = hybridshapefactory1.GetGeometricalFeatureType(part1.hybridBodies.Item(1).Hybridshapes.Item(1))
Alternativ könntest du auch die Funktion TypeName verwenden zB:
Code: MsgBox = TypeName(selection1.Item2(1).Value)
Gruß Bernd------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
geekv5 Mitglied Konstrukteur
Beiträge: 214 Registriert: 13.07.2011 Notebook<P>MSI GX660R Intel Core i5 460M 8GB DDR3 1GB Mobility HD5870 80GB Intel X25-M Postville 250GB HDD<P>Desktop<P>AMD Phenom II X4 965 1GB HD4890@ FirePro V8700 8GB DDR3-1600 2,5TB HDD<P>Belinea 2485 S1W 24" MVA
|
erstellt am: 16. Sep. 2012 11:25 <-- editieren / zitieren --> Unities abgeben:
Hallo Bernd, leider hilft mir das nicht wirklich weiter, ich möchte ja explizit ein Element einer Selektion prüfen, oder hast du eine Idee wie ich vom Selection Item auf das Shape-Collection Item komme? TypeName liefert mir zu viele Varianten (will nur zwischen Punkt, Kurve, Fläche usw. unterscheiden).. MfG Nachtrag: Mit dieser Methode funktioniert es, sind zwar fünf Typen mehr zu unterscheiden, aber für meine Zwecke ist das denke ich besser als TypeName.. Code:
Sub CATMain()Dim partdocument1 As PartDocument Dim part1 As Part Dim selection1 As Selection Dim ref1 As Reference Dim hybridshapefactory1 As HybridShapeFactory Dim intGeomType As Integer Dim strGeomType As String Dim workbench1 As Object Set partdocument1 = CATIA.ActiveDocument Set selection1 = partdocument1.Selection Set ref1 = selection1.Item2(1).Reference Set part1 = partdocument1.Part Set hybridshapefactory1 = part1.HybridShapeFactory Set workbench1 = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench") Set measurable1 = workbench1.GetMeasurable(ref1) intGeomType = measurable1.GeometryName Select Case intGeomType Case 0 strGeomType = "Unknown" Case 1 strGeomType = "Other" Case 2 strGeomType = "Volume" Case 3 strGeomType = "Surface" Case 4 strGeomType = "Cylinder" Case 5 strGeomType = "Sphere" Case 6 strGeomType = "Cone" Case 7 strGeomType = "Plane" Case 8 strGeomType = "Curve" Case 9 strGeomType = "Circle" Case 10 strGeomType = "Line" Case 11 strGeomType = "Point" Case 12 strGeomType = "Axis System" End Select MsgBox strGeomType End Sub
Falls es dennoch eine andere Lösung gibt bin ich natürlich daran interessiert.. Danke erstmal! Btw. hier ist das Thema sehr schön beschrieben.. ------------------ Seid nicht dumm, lest drin rum! [Diese Nachricht wurde von geekv5 am 16. Sep. 2012 editiert.] [Diese Nachricht wurde von geekv5 am 16. Sep. 2012 editiert.] [Diese Nachricht wurde von geekv5 am 16. Sep. 2012 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: 16. Sep. 2012 11:47 <-- editieren / zitieren --> Unities abgeben: Nur für geekv5
Servus Ich hab es nochmal kurz durchlaufen lassen, nun klappt bei mir auch das Übergeben des selektierten Objekts (was zuvor nicht lief): Code: intgeomtype = hybridshapefactory1.GetGeometricalFeatureType(selection1.Item2(1).Value)
Geht das bei dir auch?Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
geekv5 Mitglied Konstrukteur
Beiträge: 214 Registriert: 13.07.2011 Notebook<P>MSI GX660R Intel Core i5 460M 8GB DDR3 1GB Mobility HD5870 80GB Intel X25-M Postville 250GB HDD<P>Desktop<P>AMD Phenom II X4 965 1GB HD4890@ FirePro V8700 8GB DDR3-1600 2,5TB HDD<P>Belinea 2485 S1W 24" MVA
|
erstellt am: 16. Sep. 2012 11:54 <-- editieren / zitieren --> Unities abgeben:
Komisch, da haut er mir entweder "Automation Error", "Type missmatch" oder komische Zahlenwerte wie "18704" raus, je nachdem was ich anfasse, hier der Code, den ich probiert habe: Code:
Sub CATMain()Dim partdocument1 As PartDocument Dim part1 As Part Dim selection1 As Selection Dim hybridshapefactory1 As HybridShapeFactory Dim intGeomType As Integer Set partdocument1 = CATIA.ActiveDocument Set selection1 = partdocument1.Selection Set part1 = partdocument1.Part Set hybridshapefactory1 = part1.HybridShapeFactory intGeomType = hybridshapefactory1.GetGeometricalFeatureType(selection1.Item2(1).Value) MsgBox intGeomType End Sub
------------------ Seid nicht dumm, lest drin rum! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |