Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Prüfen des Typs von Elementen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Prüfen des Typs von Elementen (2350 mal gelesen)
hklein06
Mitglied
Entwicklung Fahrwerk


Sehen Sie sich das Profil von hklein06 an!   Senden Sie eine Private Message an hklein06  Schreiben Sie einen Gästebucheintrag für hklein06

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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.


Sehen Sie sich das Profil von AlexE78 an!   Senden Sie eine Private Message an AlexE78  Schreiben Sie einen Gästebucheintrag für AlexE78

Beiträge: 49
Registriert: 29.08.2005

erstellt am: 17. Mrz. 2006 11:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für hklein06 10 Unities + Antwort hilfreich

Hallo hklein06,

versuch es mal damit:
  if (typename(Geo) = "catGeoTypePoint2D") then ...


mfg Alex

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

hklein06
Mitglied
Entwicklung Fahrwerk


Sehen Sie sich das Profil von hklein06 an!   Senden Sie eine Private Message an hklein06  Schreiben Sie einen Gästebucheintrag für hklein06

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von Holger_BW an!   Senden Sie eine Private Message an Holger_BW  Schreiben Sie einen Gästebucheintrag für Holger_BW

Beiträge: 80
Registriert: 23.01.2004

erstellt am: 17. Mrz. 2006 12:28    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für hklein06 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von hklein06 an!   Senden Sie eine Private Message an hklein06  Schreiben Sie einen Gästebucheintrag für hklein06

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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



Sehen Sie sich das Profil von Günter K. an!   Senden Sie eine Private Message an Günter K.  Schreiben Sie einen Gästebucheintrag für Günter K.

Beiträge: 21
Registriert: 16.08.2004

erstellt am: 22. Mrz. 2006 09:32    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für hklein06 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von hklein06 an!   Senden Sie eine Private Message an hklein06  Schreiben Sie einen Gästebucheintrag für hklein06

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Günter,

danke. Das muss ich erst mal mit meinem Script ausprobieren.

Viele Grüße,

Holger

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz