Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Marker2D

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:  Marker2D (583 mal gelesen)
dc_tke
Mitglied



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

Beiträge: 23
Registriert: 07.07.2003

erstellt am: 14. Jul. 2005 12:50    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 die Punkte eines Marker2D vom Typ "freehand" über die Methode Getpositions einlesen. Dazu muß ich wissen, wie groß das Ausgabefeld ist (es wird ein Array unbestimmter Größe zurückgegeben). Der Marker2D "verrät" mir aber nicht, wieviele Punkte er besitzt. Dynamisches Feld funktioniert nicht. Kann mir jemand weiterhelfen?

Bisher lege ich ein Feld an, welches genügend groß ist - leider weis ich nicht was genügend ist!

Gruß Thomas


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

achulio
Mitglied



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

Beiträge: 98
Registriert: 24.03.2003

erstellt am: 14. Jul. 2005 17:30    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 dc_tke 10 Unities + Antwort hilfreich

ich weiß nicht ob ich deine Frage richtig verstanden habe, aber mit

UBound() erhälst du die Länge eines Arrays.

Also z.B.

Integer = UBound(Array)

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

dc_tke
Mitglied



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

Beiträge: 23
Registriert: 07.07.2003

erstellt am: 15. Jul. 2005 08:24    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 Achulio

das Problem ist, daß ein Marker2D vom Typ "freehand" eine beliebige (unbekannte) Zahl von Punkten enthält.

Diese Punkte kann ich mit der Methode GetPositions in ein Feld speichern.
Das Feld muß zuvor genügend groß dimensioniert werden.
Mit Ubound erhalte ich dann nur diese Dimension zurück.

Wenn mein Marker (MyMarker2D1) nicht mehr als 100 Punkte hat:

Dim MPos(199)  ' 200 Koordinaten für 100 Punkte
MyMarker2D1.GetPositions MPos

dann ergibt Ubound(MPos) den Wert 199

Aber aus wieviel Punkten besteht nun der Marker?
Wenn ich das im Vorfeld wüsste, könnte ich auch schon das Feld entsprechend dimensionieren und Ubound wäre gar nicht nötig.

Bei einer Collection hat man das .Count Property aber bei Arrays gibts sowas nicht. Mir scheint Dassault hat hier schlicht vergessen eine entsprechendende Methode für die Marker zu implementieren.

Thomas
 

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

achulio
Mitglied



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

Beiträge: 98
Registriert: 24.03.2003

erstellt am: 16. Jul. 2005 21:51    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 dc_tke 10 Unities + Antwort hilfreich

Hallo,
hmm... ich glaube ich verstehe das Problem...
folgendes fällt mir dazu ein, kannst ja mal ausprobieren:

a) Definiere die Variable MPos vorher nicht mit "Dim", evtl. legt Catia diese selbst an mit der entsprechenden Dimension (ähnlich dem Befehl "split"

b) Oder Definiere MPos vom Typ "Variant" (Dim MPos As Variant), das ist eine generische Variable, die von Catia nach Bedarf belegt wird

c) Oder Erzeuge ein genügend großes Feld, lies die Feldinhalte in einer Schleife aus mit
if Feld.Inhalt <> "" Then
    i = i+1
End If
Und mache dann ein ReDim mit deiner Feldvariablen und der Richtigen größe...

hoffe geholfen zu haben

achulio

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

dc_tke
Mitglied



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

Beiträge: 23
Registriert: 07.07.2003

erstellt am: 18. Jul. 2005 07:58    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

Hab ich alles schon ausprobiert und hat nichts gebracht.

Jetzt dimensioniere ich das Feld zuächst auf 3 (passt für Line, Arrow, Circle, Rectangle). Wenn GetPositions einen Fehler meldet, vergrößere ich das Feld um Faktor 2 solange, bis kein Fehler mehr kommt. Anschließend schaue ich mir den Typ der Feldinhalte an. Wenn dieser "Empty" ist, habe ich die eigentliche Feldgröße gefunden.

Naja, es ist nicht elegant, aber es funktioniert und ist auch bei einem Marker mit 1000 Punkten schnell.

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