Autor
|
Thema: Prüfen des Typs von Elementen (2350 mal gelesen)
|
hklein06 Mitglied Entwicklung Fahrwerk
Beiträge: 50 Registriert: 17.03.2006 CATIA V5 R14 HF-35 [ RS6000 AIX 5.3-ML04 ]
|
erstellt am: 17. Mrz. 2006 10:36 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich möchte prüfen, ob Elemente in einem Geometrical Set Punkte sind. Leider funktioniert das nicht mit GeometricType. Kann mir jemand sagen, wo da der Wurm drin ist? Danke! PS: Um es einfach zu machen, habe ich ein Script aus dem V5 Makro Buch benutzt. Sub CATMain ()
Dim Bauteil As Part Dim Koerper As HybridBody Dim Geo As GeometricElement Set Bauteil = CATIA.ActiveDocument.Part Set bodiesColl = Bauteil.HybridBodies Set Koerper = bodiesColl.Item(1) MsgBox Koerper.Name MsgBox Koerper.HybridShapes.Count If Koerper.HybridShapes.Count > 0 Then For I = 1 To Koerper.HybridShapes.Count Set Geo = Koerper.HybridShapes.Item(I) MsgBox Geo.Name ' ### funktioniert nicht ### ' Fehlermeldung bei Geo.GeometricType If Geo.GeometricType = catGeoTypePoint2D Then MsgBox Geo.Name Next End If End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
AlexE78 Mitglied Ing.
Beiträge: 49 Registriert: 29.08.2005
|
erstellt am: 17. Mrz. 2006 11:25 <-- editieren / zitieren --> Unities abgeben: Nur für hklein06
|
hklein06 Mitglied Entwicklung Fahrwerk
Beiträge: 50 Registriert: 17.03.2006 CATIA V5 R14 HF-35 [ RS6000 AIX 5.3-ML04 ]
|
erstellt am: 17. Mrz. 2006 12:14 <-- editieren / zitieren --> Unities abgeben:
Hallo Alex, danke für den Hinweis, es gibt zwar keine Fehlermeldung mehr, funktioniert aber auch nicht wie gewünscht. typename(Geo) ergibt "HybridShapePointCoord" - also nicht den Typ zum Erkennen Damit kann ich über Umwege (Stringsuche) den Typ herausfinden. Das ist aber nicht das Gelbe. Mir wäre es lieber, wenn die CV5 Methode funktionieren würde. Es sieht so aus, als wäre die Declaration falsch... Aber leider habe ich keien Ahnung, was falsch ist. Viele Grüße, Holger Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Holger_BW Mitglied CAx Support
Beiträge: 80 Registriert: 23.01.2004
|
erstellt am: 17. Mrz. 2006 12:28 <-- editieren / zitieren --> Unities abgeben: Nur für hklein06
Hallo Namensvetter :-) bei mir funktioniert z. B. folgende Zuweisung: element_type = My_sketch.GeometricElements.Item(i).GeometricType wobei ich element_type als CatGeometricType dimensioniert habe. Versuche also auch mal die Abfrage mit einer zusätzlichen Variable, vielleicht funktioniert es dann. Gruß, Holger Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
hklein06 Mitglied Entwicklung Fahrwerk
Beiträge: 50 Registriert: 17.03.2006 CATIA V5 R14 HF-35 [ RS6000 AIX 5.3-ML04 ]
|
erstellt am: 21. Mrz. 2006 09:05 <-- editieren / zitieren --> Unities abgeben:
Hallo Holger, hat leider auch nicht funktioniert bzw. mache ich da etwas falsch. Hier noch mal der Code: ' Test, ob Elemente in einem GeometricalSet Punkte sind Sub CATMain () Dim Bauteil As Part Dim Koerper As HybridBody Dim Geos As CatGeometricType Dim Geo As GeometricElement Set Bauteil = CATIA.ActiveDocument.Part Set bodiesColl = Bauteil.HybridBodies Set Koerper = bodiesColl.Item(1) MsgBox "Name GeoSet: "&Koerper.Name MsgBox "Anzahl elemente: "&Koerper.HybridShapes.Count If Koerper.HybridShapes.Count > 0 Then For I = 1 To Koerper.HybridShapes.Count Set Geo = Koerper.HybridShapes.Item(I) MsgBox "Typename: "&typename(Geo) MsgBox "Name: "&Geo.Name ' Fehler im Script..... ' If Geo.GeometricType = catGeoTypePoint2D Then MsgBox "xxx" ' Geos = Koerper.HybridShapes.Item(I).GeometricType ' MsgBox Geos Next End If
End Sub Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Günter K. Mitglied
Beiträge: 21 Registriert: 16.08.2004
|
erstellt am: 22. Mrz. 2006 09:32 <-- editieren / zitieren --> Unities abgeben: Nur für hklein06
Hallo Holger, die Eigenschaft "GeometricType" ist für Objekte vom Typ "HybridShape" nicht vorgesehen. Statt dessen gibt es seit R14 in der "HybridShapeFactory" die Funktion "GetGeometricalFeatureType". Diese Funktion liefert (entgegen der Dokumenation) für Objekte vom Typ "Point" den Wert "1" zurück. Func GetGeometricalFeatureType(CATIAReference iElem) As short Returns type of "geometrical" shape Design feature. Parameters: iElem Reference element oType Type of feature = 0 , Unknown = 1 , Point = 2 , Curve = 3 , Line = 4 , Circle = 5 , Surface = 6 , Plane = 7 , Solid, Volume Level of availability = V5R14 Dies gilt auch für den Fall, dass der Punkt z.B. als Ergebnis aus einer Verschneidung zweier Linien hervorgegangen ist. Das folgende VBScript (.catvbs) gibt für alle "HybridShapes" im ersten "HybridBody", bei denen es sich um Objekte vom Typ "Point" handelt, eine "MsgBox" mit dessen Namen aus: Sub CATMain() Set partDocument = CATIA.ActiveDocument Set part = partDocument.Part Set hybridShapeFactory = part.HybridShapeFactory Set hybridBodies = part.HybridBodies Set hybridBody = hybridBodies.Item(1) Set hybridShapes = hybridBody.HybridShapes For i = 1 To hybridShapes.Count If hybridShapeFactory.GetGeometricalFeatureType(hybridShapes.Item(i)) = 1 Then MsgBox hybridShapes.Item(i).Name End If Next End Sub Schöne Grüße, Günter
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
hklein06 Mitglied Entwicklung Fahrwerk
Beiträge: 50 Registriert: 17.03.2006 CATIA V5 R14 HF-35 [ RS6000 AIX 5.3-ML04 ]
|
erstellt am: 24. Mrz. 2006 10:21 <-- editieren / zitieren --> Unities abgeben:
|