Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  FindObjectByName - was macht das anders ?

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:  FindObjectByName - was macht das anders ? (2232 mal gelesen)
Criollo
Mitglied



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

Beiträge: 42
Registriert: 07.11.2008

erstellt am: 16. Nov. 2011 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,

ich habe folgendes Problem.
Von einem Punkt (mypoint) den ich auf einer Ebene (Point on Plane) erstellt habe, möchte ich den Referenzpunkt (Origin) auslesen, und ggf. umreferenzieren.

Suche ich das mypoint-Object über das Geoset, und die darin enthaltenen HybridShapes, finde ich es ohne Probleme. Ich kann auch den Namen des Punktes selbst ausgeben lassen. Aber den Namen des Referenzpunktes kann ich nicht ausgeben lassen. (Fehler dass diese Methode nicht unterstützt wird.) Suche ich das Object-mypoint, nun jedoch mit der Methode "FindObjectByName("P") so kann ich den Referenzpunkt ausgeben lassen.
Scheinbar macht es einen Unterschied wie das Objekt angesprochen wird. Leider drückt das "FindObjectByName" aber ziemlich auf die Performance, insbesondere wenn es sich um viele zu suchende Objekte handelt.

Anbei noch ein Beispielcode:
1. Ohne "FindObjectByName" --> dann läuft die letzte MessageBox auf einen Fehler
Set mypart = PN

For each hs in mypart.HybridBodies.Item(1).HybridShapes
If hs.name = "P" then
Set mypoint = hs
Exit For
end if
Next

msgbox mypoint.Name
msgbox mypoint.Point.DisplayName

End Sub

2. Mit "FindObjectByName" --> dann läuft alles sauber durch
Set mypart = PN

For each hs in mypart.HybridBodies.Item(1).HybridShapes
If hs.name = "P" then
Set mypoint = hs
Exit For
end if
Next

Set mypoint = mypart.FindObjectByName ("P")

msgbox mypoint.Name
msgbox mypoint.Point.DisplayName

End Sub

Vielleicht kann mir hierzu jemand weiterhelfen.

Danke und Gruss aus dem Süden

Crio

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

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


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

Beiträge: 1118
Registriert: 29.05.2008

DELL PRECISION T3500
Intel(R) Xeon(R) CPU W3540 @ 2.93GHz
12285 MB RAM
NVIDIA Quadro FX 1800
Microsoft Windows 7 Enterprise Service Pack 1
CATIA V5 R19 SP09 HF69
VB6.5
CAA RADE CDC

erstellt am: 16. Nov. 2011 12:54    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 Criollo 10 Unities + Antwort hilfreich

Hallo Criollo,

bitte Systeminfo ausfüllen, sonst habe ich es wirklich schwer.

Dann bitte alle Methodenaufrufe mit vorangestelltem Call versuchen.
Dann bitte versuchen alle Objekte so eindeutig wie möglich zu deklatieren.
Dann bitte versuchen alle Objekte, bei denen ein Parameter übergeben wird und vor allem auch wenn einer zurückgegeben wird, beim Methodenaufruf, als Object definieren.

Dann bitte die Zeile angeben in der der Fehler aufritt, das ist hier viel zu wage beschrieben.

------------------
Mit freundlichen Grüßen,
Henry Schneider
alias Lila

Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren:
Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen,
die Natur versucht, immer bessere Idioten zu bauen

Xing

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

Criollo
Mitglied



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

Beiträge: 42
Registriert: 07.11.2008

erstellt am: 16. Nov. 2011 13: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

Hi HoBLila,

ich arbeite mit CATIA V5 R19 HF57 - vom Kunden vorgegeben. Es handelt sich um ein Skript, welches ich mit der Funktion "Makro mit Argumenten" ins CATIA Modell einbinden möchte.

Methodenaufrufe sind in meinem Beispielcode keine drin - deswegen auch kein "Call".

Der Beispielcode tickt nach folgendem Schema:
1. Punktobjekt in GeoSet suchen.
2. Name des Punktes ausgeben
3. Name des Referenzpunktes ausgeben.

Die Problematik liegt in der Art des Suchens. Suche ich mit "FindObjectByName", kann ich den Referenzpunkt abgreifen. Suche ich dagegen über die HybridShapes im GeoSet, kann ich vom gefundenen Objekt den Referenzpunkt nicht abgreifen.

Viele Grüsse
Crio

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 16. Nov. 2011 13:18    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 Criollo 10 Unities + Antwort hilfreich

Servus
Wenn du unter CATScript/VBA arbeitest reicht es wenn du "mypoint As HybridShapePointOnPlane" setzt. (Um auf "FindObjectByName" verzichten).
Ich empfehle dir, Variablen immer zu deklarieren

Gruß
Bernd

PS: Bitte Systeminfo ausfüllen

------------------
Warum einfach, wenn es auch kompliziert geht.

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

Criollo
Mitglied



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

Beiträge: 42
Registriert: 07.11.2008

erstellt am: 16. Nov. 2011 13:34    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

Hi bgrittmann,

das deklarieren der Objektvariablen bringt an dieser Stelle leider keine Besserung. Der Fehler tritt nach wie vor auf.
Es handelt sich wie gesagt bei dem Skript um die KWA-Funktionalität "Makro mit Argumenten".

Gruss
Crio

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

tomtom1972
Mitglied
dipl ing maschinenbau


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

Beiträge: 605
Registriert: 22.03.2005

NVidia Quadro K4000
Intel Xeon E5-1620, 64GB RAM
Windows10 64bit
R30 <= CATIA V5 > =R19

erstellt am: 17. Nov. 2011 07:07    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 Criollo 10 Unities + Antwort hilfreich

Hallo,

bei mir funktionieren beide Varianten des Aufrufs des Punktes (in CATScript und VB6) ohne Fehler.
Und darüber hinaus auch ohne jede Art von Deklaration.
"FindObjectByName" liefert garantiert kein anders Objekt als der Aufruf über ....Part.HybridBodies.Item(x).HybridShapes.Item(y)

Gruß

------------------
tomtom1972

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

bgrittmann
Moderator
Konstrukteur


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

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 17. Nov. 2011 07:19    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 Criollo 10 Unities + Antwort hilfreich

Servus Tom

Ich bin bis jetzt davon ausgegangen, dass "FindObjectByName" das erste Objekt (egal welcher Typ) mit dem entsprechenden Namen zurückliefert. Also wenn mehrerer Elemente gleich heißen (in unterschiedlichen GeoSets oder auch unterschiedlichen Strukturtiefen), welches Element wird zurückgegeben? Deshalb würde ich eher auf diese Funktion verzichten
Oder verstehe ich die Funktion falsch?

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

tomtom1972
Mitglied
dipl ing maschinenbau


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

Beiträge: 605
Registriert: 22.03.2005

NVidia Quadro K4000
Intel Xeon E5-1620, 64GB RAM
Windows10 64bit
R30 <= CATIA V5 > =R19

erstellt am: 18. Nov. 2011 13:04    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 Criollo 10 Unities + Antwort hilfreich

Hallo,
nein, das verstehst du meines Erachtens nach völlig richtig.

Mit meiner Antwort wollte ich lediglich zum Ausdruck bringen, das der direkte Aufruft über das ...Item exakt das gleiche Objekt liefert wie "FindObjectByName" (jetzt mal vorausgesetzt, das es Aufgrund eines unikalen Namens identifizierbar ist); ein Objektvergleich in Vb über "Is" liefert also ein true.

Ansonsten stimme ich dir zu: ich würde auch nicht mit "FindObjectByName" arbeiten. Genauso wie ich Selektionen meide.

Gruß

------------------
tomtom1972

[Diese Nachricht wurde von tomtom1972 am 18. Nov. 2011 editiert.]

[Diese Nachricht wurde von tomtom1972 am 18. Nov. 2011 editiert.]

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