Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Warum Referenzen?

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:   Warum Referenzen? (878 mal gelesen)
  
Die Gewinne der Zukunft werden mit intelligenten, autonomen Elektrofahrzeugen eingefahren. (3DEXPERIENCE)
BettinaRauch
Mitglied
BA-Studentin, Fahrzeug-System-Engineering


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

Beiträge: 65
Registriert: 06.07.2009

Catia V5 R19

erstellt am: 19. Aug. 2009 08:41    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,
hier kommt mal wieder so ne "blöde" Frage von einer Nicht-Programiererin:
Warum benutzt man beim Programmieren eigentlich Referenzen? Braucht man die unbedint? Hier mal ein kleines Beispiel, das hoffentlich erklärt, was ich meine.

Zuerst mit Referenzen:

'#####################################
...
Set hybridBodies1 = part1.HybridBodies
Set hybridBody1 = hybridBodies1.Item("Beispiel")

… ‘reference1 bis reference4 sind irgendwelche Achsen

Set Punkt1 = hybridShapeFactory1.AddNewPointOnPlaneWithReference(reference1, reference2, 5.000000, 50.000000)
hybridBody1.AppendHybridShape Punkt1
part1.InWorkObject = Punkt1

Set Punkt2 = hybridShapeFactory1.AddNewPointOnPlaneWithReference(reference3, reference4, 20.000000, 20.000000)
hybridBody1.AppendHybridShape Punkt2
part1.InWorkObject = Punkt2

part1.Update

Set reference5 = part1.CreateReferenceFromObject(Punkt1)
Set reference6 = part1.CreateReferenceFromObject(Punkt2)

Set Linie1 = hybridShapeFactory1.AddNewLinePtPt(reference5, reference6)
hybridBody1.AppendHybridShape Linie1
part1.InWorkObject = Linie1

part1.Update
...
'#####################################

Und jetzt ohne Referenzen:

'#####################################
...
Set Punkt1 = hybridShapeFactory1.AddNewPointOnPlaneWithReference(reference1, reference2, 5.000000, 50.000000)
hybridBody1.AppendHybridShape Punkt1
part1.InWorkObject = Punkt1

Set Punkt2 = hybridShapeFactory1.AddNewPointOnPlaneWithReference(reference3, reference4, 20.000000, 20.000000)
hybridBody1.AppendHybridShape Punkt2
part1.InWorkObject = Punkt2

part1.Update

Set Linie1 = hybridShapeFactory1.AddNewLinePtPt(Punkt1, Punkt2)
hybridBody1.AppendHybridShape Linie1
part1.InWorkObject = Linie1
...
'#####################################

Ist die zweite Version nicht besser? Die ist doch kürzer. Außerdem sollte ich in der ersten Version doch den Punkt1, den Punkt2 und die Referenzen reference1, reference2 'as Object' deklarieren, oder? Oder ist die zweite Version ein absolutes "no-go" beim Programmieren?

Ich hoffe meine Fragen sind präzise genug formuliert. Wär nett, wenn der ein oder andere 'Programmierer' seine Erfahrung dazu abgeben könnte. Im Internet finde ich über sowas nämlich mal wieder nichts.

Gruß Betty

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

RSchulz
Moderator²
Teamleader IT-CAD



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

Beiträge: 5518
Registriert: 12.04.2007

erstellt am: 19. Aug. 2009 11:27    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 BettinaRauch 10 Unities + Antwort hilfreich

Hallo,
vom Prinzip her führen meist immer mehrere Wege nach Rom. Daher würde ich dies nicht so pauschalisieren. Es gibt auch durchaus andere Gesichtspunkte und Wünsche, daher wird es auch immer unterschiedliche Programmierstile geben. Die Erzeugung scheint die Gleiche in diesem Fall zu sein, da lediglich Koordinaten übergeben werden. Ob dies nun über eine Referenzen, die sich auf einen Punkte beziehen, oder die Punktedefinitionen selbst passiert ist meiner Meinung nach irrelevant.

------------------
MFG
Rick Schulz

Nettiquette (CAD.de)

Konfuzius sprach: "Wer sich das Alte noch einmal vor Augen führt, um das Neue zu verstehen, der kann anderen ein Lehrer sein."

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

DanielFr.
Moderator



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

Beiträge: 2506
Registriert: 10.08.2005

HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3

erstellt am: 19. Aug. 2009 11:43    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 BettinaRauch 10 Unities + Antwort hilfreich

Hallo,

also ich gebe Rick recht und ich selber übergebe an eine solche Funktion auch keine Referenzen sondern direkt die Punktobjekte (bzw. Linienobjekte, etc.). Ich könnte mir jedoch vorstellen das es vor allem bei größeren Scripten zu einem Performancevorteil führt wenn man Referenzen übergibt. Diese werden nämlich auch als solche deklariert und da eine Referenz die Ableitung eines Objekt ist wird das Objekt sicherlich mehr Speicher belegen als die Referenz selber.

------------------
MFG Daniel

Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...)

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

BettinaRauch
Mitglied
BA-Studentin, Fahrzeug-System-Engineering


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

Beiträge: 65
Registriert: 06.07.2009

Catia V5 R19

erstellt am: 19. Aug. 2009 11:48    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

Vielen Dank für eure Antworten... auch wenn man es nicht glauben mag, das bringt mich wirklich immer ein Stück weiter.
Gruß Betty

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

CadV5UserR
Mitglied
Dipl.Ing. Maschinenbau


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

Beiträge: 78
Registriert: 18.04.2008

Windows 7 x64 Professional SP1
Dell Precision T3500
Intel Xeon CPU W3580 3.33GHz
24Gb Ram
NVIDIA Qudro 4000
Catia V5R20 Sp6
SmarTeam V5R20 SP6

erstellt am: 20. Aug. 2009 13:53    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 BettinaRauch 10 Unities + Antwort hilfreich

Hallo,


Das auslesen der Referenzen macht meiner Meinung nur dann Sinn, wenn der ganze Pfad der Bauteile bzw. Punkte usw. mit übergeben werden soll.

Beispiel:
Es soll eine Messung von zwei Punkten erfolgen.
Sind die Punkte in einem Teil ist das ganze kein Problem.
Sind die Punkte in zwei Teilen wird’s komplizierter. Die Teile sollen zudem in verschieden Strukturtiefen in unterschiedlichen Produkten verbaut sein können.
Versucht man nun die Punkte über

Set part1 = partDocument1.Part

Set hybridBodies1 = part1.HybridBodies

Set hybridBody1 = hybridBodies1.Item(1)

Set hybridShapeFactory1 = part1.HybridShapeFactory

Set ohShapes = hybridBody1.HybridShapes

Set hybridShapePointCoord1 = ohShapes.Item( 1 )

Set part2 = partDocument2.Part

Set hybridBodies2 = part2.HybridBodies

Set hybridBody2 = hybridBodies2.Item(1)

Set hybridShapeFactory2 = part2.HybridShapeFactory

Set ohShapes2 = hybridBody2.HybridShapes

Set hybridShapePointCoord2 = ohShapes2.Item( 1 )


zu erhalten, kommt als Ergebnis ein Abstand der Punkte heraus als wenn sie in einen Part sind.
Sind die Produkte verschoben und / oder die Parts in den Produkten verschoben, erhält man ein falsches Ergebnis.

Wenn man jetzt aber den Punkt über z.B.


Set ref1 = product1.CreateReferenceFromName("Product1/Part1.1/!Punkt.1")

Set ref2 = product1.CreateReferenceFromName("Product1/Part2.1/!Punkt.1")


Set TheSPAWorkbench = CATIA.ActiveDocument.GetWorkbench ( "SPAWorkbench" )
Set TheMeasurable = TheSPAWorkbench.GetMeasurable(ref1)
TheMeasurable.GetMinimumDistancePoints ref2, Coordinates


ausliest, stimmt die Messung wieder.

Ich hoffe dass dir das weiter helfen kann.

( Das Beispiel ist ohne Catia schnell zurecht kopiert. Hoffe dass keine Fehler drin sind. )

Gruß
CadV5UserR

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

BettinaRauch
Mitglied
BA-Studentin, Fahrzeug-System-Engineering


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

Beiträge: 65
Registriert: 06.07.2009

Catia V5 R19

erstellt am: 20. Aug. 2009 13:56    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 den Code nicht geprüft, aber auf jeden Fall verstanden, was du meinst... und ja, das bringt mich weiter. Danke!
Gruß Betty

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

MakroNovize
Mitglied
Konstrukteur, CAD-Admin


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

Beiträge: 60
Registriert: 20.07.2009

Windows XP SP3
CATIA V5 R18
Xeon 2x 3Ghz
3Gb RAM
NVIDIA Quadro FX 3450

erstellt am: 21. Aug. 2009 08:09    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 BettinaRauch 10 Unities + Antwort hilfreich

Ich als Neuling bin vor kurzem ebenfalls mit Referenzen konfrontiert worden. Bei mir wars so, dass ich UserDefinedProperties aus einer Baugruppe auslesen wollte aber der Suchalgorithmus nur mit Referenzen Funktionierte. Bei den normalen Properties gings auch ohne Referenzen. Sagen will ich damit, dass du manchmal auch mit Referenzen arbeiten "musst".

Darauf gekommen bin ich auch nur mit Hilfe dieses Forums ;-)

------------------
Grüße

Christoph

*************************************************
Die Katia am Morgen, bringt dir reichlich Sorgen!

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)2020 CAD.de | Impressum | Datenschutz