| |
| KISTERS 3DViewStation: Geniale 3D-Visualisierung für intuitiven HMI Einsatz, eine Pressemitteilung
|
Autor
|
Thema: PointOnCurve parametrisch gesteuert (1382 mal gelesen)
|
studmija Mitglied Student
Beiträge: 49 Registriert: 22.11.2010 System: Microsoft Windows XP Professional x64 Edition Version 2003 Sevice Pack 2 Computer: Intel(R)Xeon(R)CPU 2,80GHz, 12 GB RAM Software: CATIA V5R19
|
erstellt am: 30. Nov. 2010 16:17 <-- editieren / zitieren --> Unities abgeben:
Servus! Ich möchte mit einem Makro einen Punkt auf einer Kurve erzeugen und die Position des Punktes auf dieser Kurve mittels einen Parameter ("Höhe") steuern. Auf den ersten Blick funktioniert mein Makro...Paramter und Punkt werden erzeugt. Wenn ich jedoch den Wert des Paramters ändere zieht er mir den Punkt nicht nach! Wo liegt mein Problem???? .....
' Paramter für Höhe erzeugen------------------------------------ Dim Params As Parameters Set Params = NewPart.Parameters Dim Hoehe As Dimension ' evtl Double Set Hoehe = Params.CreateDimension ("Höhe", "Length", 2500) 'Geometrie des Punktes vordefinieren --------------------------------------------- Dim Pr1 As HybridShapePointOnCurve Set Pr1 = Wzk3D.AddNewPointOnCurveWithReferenceFromDistance (Ref1,Ref2, Hoehe.Value, True) 'Geometrisches Set "Limits" deklarieren ------------------------- Dim GS As HybridBody Set GS = NewPart.HybridBodies.Add GS.Name = "Limit" ' Geometrie dem geometrischen Set zuweisen ---------------------
GS.AppendHybridShape Pr1 .....
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian.O Mitglied Konstrukteur
Beiträge: 1212 Registriert: 17.07.2009
|
erstellt am: 30. Nov. 2010 20:16 <-- editieren / zitieren --> Unities abgeben: Nur für studmija
Servus, das Problem liegt daran, dass du keine Formel erstellt hast. Somit kann das ja auch nicht klappen. Wenn du diesen Punkt händisch erstellst und mit dem Parameter verknüpfst bekommst du ja auch automatisch eine neue Formel im Strukturbaum. Zum Thema Formel findest du über die SuFu ein paar Beispiele dazu. PS: Systeminfo ausfüllen ------------------ Mit freundlichen Grüßen aus Tirol Christian Obholzer Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian.O Mitglied Konstrukteur
Beiträge: 1212 Registriert: 17.07.2009 Celsius-Mobile H720 i7-3840QM 32 Gb Arbeitsspeicher 256 Gb SSD Quadro K2000M Windows 7 Professional (64 Bit) Catia V5R19 (64 Bit) SpacePilot Pro
|
erstellt am: 01. Dez. 2010 08:49 <-- editieren / zitieren --> Unities abgeben: Nur für studmija
Servus, hatte gerade etwas Zeit. Anbei ein VBA Makro wie das mit der Formel aussehen könnte. Edit: Datum und Zweck im Makro geändert ------------------ Mit freundlichen Grüßen aus Tirol Christian Obholzer [Diese Nachricht wurde von Christian.O am 01. Dez. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
studmija Mitglied Student
Beiträge: 49 Registriert: 22.11.2010 System: Microsoft Windows XP Professional x64 Edition Version 2003 Sevice Pack 2 Computer: Intel(R)Xeon(R)CPU 2,80GHz, 12 GB RAM Software: CATIA V5R19
|
erstellt am: 01. Dez. 2010 10:41 <-- editieren / zitieren --> Unities abgeben:
Hi Christian, danke für deine Mühe! Aber irgendwie bin ich immer noch nicht weiter gekommen. Das ich eine Formel einfügen muss, habe ich mir schon gedacht. Dein Makro kann ich auch bis auf folgenden Abschnitt nachvollziehen... ... '***Parameter vom Punkt ansprechen Set lgPoint_Abstand = objParameters.Item(objPart.Name & "\Point_on_Curve\Point_on_Curve\Length" ... An der Stelle fügen wir eine neue Variable als Referenz für die Formel ein. Die Variable wird gleichgesetzt mit unseren zuvor erstellten Parameter...soweit so klar (korrigiere mich wenn ich falsch bin). Aber ich habe den Ausdruck in der Klammer nicht gecheckt. Kannst du mir diesen Klammerausdruck noch mal genauer erklären?? also was eigentlich in der Klammer steht und warum??? Weil wenn ich das ganze auf mein Makro übertrage kriege ich Fehlermeldung! Gruß Micha Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian.O Mitglied Konstrukteur
Beiträge: 1212 Registriert: 17.07.2009
|
erstellt am: 01. Dez. 2010 11:17 <-- editieren / zitieren --> Unities abgeben: Nur für studmija
Servus, in der Klammer steht der gesamte Pfad zum Parameter vom Punkt. Dieser Pfad ist immer in "" zu setzen solange du keine Variablen drinnen hast. Bei meinem Beispiel hab ich objPart.Name deshalb benutzt, weil deine Datei sicherlich anders heißt als deine. Den Parameter siehst du wenn du den Punkt im Strukturbaum aufklappst. objPart.Name steht für den Dateinamen im Strukturbaum (ganz oben). Das Erste Point_on_Curve steht für das Geometrische Set. Das Zweite Point_on_Curve steht für den Punktname. Die Benennungen ist vielleicht etwas ungeschickt gewählt. Naja. Mit Length kommst du dann zum Wert des Parameters. ------------------ Mit freundlichen Grüßen aus Tirol Christian Obholzer Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
studmija Mitglied Student
Beiträge: 49 Registriert: 22.11.2010 System: Microsoft Windows XP Professional x64 Edition Version 2003 Sevice Pack 2 Computer: Intel(R)Xeon(R)CPU 2,80GHz, 12 GB RAM Software: CATIA V5R19
|
erstellt am: 01. Dez. 2010 13:52 <-- editieren / zitieren --> Unities abgeben:
Servus, danke für die super Erklärung! Das hab ich jetzt gecheckt! Aber irgendwie wird meine Formel nicht mit dem "Wert" des Paramters verknüpft!??? (SIEHE ANGEHÄNGTES BILD!!!) mein Makro sieht jetzt so aus: Ref1 ist die erste Referenz (Kurve) und Ref2 ist der Startpunkt der zu erzeugende Punkt wird im GS "Limits" abgelegt ... '*** Paramter für Höhe erzeugen------------------------------------ Dim Params As Parameters Set Params = NewPart.Parameters Dim Hoehe As Dimension Set Hoehe = Params.CreateDimension ("Höhe", "Length", 2500) '***Geometrie vordefinieren --------------------------------------------- Dim Pr1 As HybridShapePointOnCurve Set Pr1 = Wzk3D.AddNewPointOnCurveWithReferenceFromDistance (Ref1,Ref2, Hoehe.Value, True) Pr1.Name = "LimitPt1" '*** Geometrie dem geometrischen Set zuweisen --------------------- GS.AppendHybridShape Pr1 '***Parameter vom Punkt ansprechen Set lgHoehe = Params.Item (NewPart.Name & "\Limits\LimitPt1\Length") '***Formel erstellen Dim Rels As Relations Set Rels = NewPart.Relations '***Formel zur Verknüpfung mit dem Parameter Dim FName, FKom, FInhalt As CATBSTR FName = "Abstand LimitPt1" FKom = "Zuweisung des Parameters Höhe als Abstand" FInhalt = "Hoehe" Set Formel = Rels.CreateFormula (FName, FKom, lgHoehe, FInhalt) NewPart.Update ... Wo liegt der Fehler???
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian.O Mitglied Konstrukteur
Beiträge: 1212 Registriert: 17.07.2009
|
erstellt am: 01. Dez. 2010 14:17 <-- editieren / zitieren --> Unities abgeben: Nur für studmija
Servus, dein Problem ist, dass du mit FInhalt = "Hoehe" den Parameter ansprechen willst. Dieser Parameter erstellst du mit Code: Set Hoehe = Params.CreateDimension ("Höhe", "Length", 2500)
Das Ansprechen des Parameters geht aber auf den Namen des Parameters wie er im Strukturbaum heißt. Du nennst ihn dann aber Höhe statt Hoehe. Deshalb wird dieser nicht gefunden, weil dieser nicht über deine Deklaration angesprochen wird. Ich erstell diesen Parameter Code: Set lgAbstand = objParameters.CreateDimension("Abstand", "Length", 123)
so. Für meine Formel hab ich dann auch Abstand als Formelinhalt angegben und nicht lgAbstand (hier wieder Deklaration).Hoffe es ist verständlich rübergekommen. ------------------ Mit freundlichen Grüßen aus Tirol Christian Obholzer Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
studmija Mitglied Student
Beiträge: 49 Registriert: 22.11.2010 System: Microsoft Windows XP Professional x64 Edition Version 2003 Sevice Pack 2 Computer: Intel(R)Xeon(R)CPU 2,80GHz, 12 GB RAM Software: CATIA V5R19
|
erstellt am: 01. Dez. 2010 15:17 <-- editieren / zitieren --> Unities abgeben:
Ob ich jetzt FInhalt = "H oehe" oder FInhalt = "H öhe" deklariere, das Problem bleibt das selbe! Liegt der Fehler nicht vielleicht irgendwo an dieser Stelle??? ... Dim Pr1 As HybridShapePointOnCurve Set Pr1 = Wzk3D.AddNewPointOnCurveWithReferenceFromDistance (Ref1,Ref2, Hoehe.Value, True) ... Oder hab ich jetzt was falsch verstanden? Im Endeffekt will ich doch nur eine Variable mit dem Inhalt eines Parameters verknüpfen!!!
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
studmija Mitglied Student
Beiträge: 49 Registriert: 22.11.2010 System: Microsoft Windows XP Professional x64 Edition Version 2003 Sevice Pack 2 Computer: Intel(R)Xeon(R)CPU 2,80GHz, 12 GB RAM Software: CATIA V5R19
|
erstellt am: 01. Dez. 2010 15:28 <-- editieren / zitieren --> Unities abgeben:
|
Christian.O Mitglied Konstrukteur
Beiträge: 1212 Registriert: 17.07.2009
|
erstellt am: 01. Dez. 2010 15:30 <-- editieren / zitieren --> Unities abgeben: Nur für studmija
Servus, wenn ich bei der Formelerstellung beim Schluss "Abstand" durch "lgAbstand" austausche ist die Formel fehlerhaft. Der Fehler kann bei der Punkterstellung nicht sein, da hier nur der Punkt mit einem Abstand x gleich Parameterwert (Hoehe) erstellt wird. Die Verknüpfung beider Parameter erfolgt eben bei der Formelerstellung. ------------------ Mit freundlichen Grüßen aus Tirol Christian Obholzer Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |