Autor
|
Thema: Spline schließen in 2D (2331 mal gelesen)
|
Malte369 Mitglied
Beiträge: 13 Registriert: 13.07.2013 Catia V5 R19 Win8 AMD Quad-Core 3,6Ghz 8GB Ram
|
erstellt am: 13. Jul. 2013 14:49 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute, ich bastele gerade an meiner Abschlussarbeit. Hierzu verwende ich ein Sub, welches einen Spline auf einer Skizze erzeugt und weiter verwendet. Das klappt soweit (auch dank dieses Forum) einwandfrei. Einziges Problem: Ich würde gerne den Befehl des Fensters "Spline schließen" verwenden. Das bekomme das einfach nicht hin. Ich hoffe es hat jemand eine Idee?! Ich erstelle den Spline mit: "Set Spline = factory2D.CreateSpline (Punkte)" vielleicht gibt es hier einen Zusatz mit dem ich den Spline als geschlossen deklarieren kann?
Hier das Programm: Set partDocument1 = CATIA.ActiveDocument Set Bauteil = partDocument1.Part Set bodies1 = Bauteil.Bodies Set body1 = bodies1.Item("Koerper") Set sketches1 = body1.Sketches Set sketch1 = sketches1.Item("Skizze.1") Bauteil.InWorkObject = sketch1 Set factory2D = sketch1.OpenEdition() Set selection1 = partDocument1.Selection selection1.Clear Set geometricElements1 = sketch1.GeometricElements Set spline2D1 = geometricElements1.Item("Spline") selection1.Add spline2D1 selection1.Delete Randomize Radius =10 alpha =7.2 PI=3.14159 Tol = 0.1
'Anzahl = 360/alpha
Dim Punkte(50) For i = 0 to 50 Step 1 alphaneu=alphaneu+alpha alphaers=alphaneu*PI/180 Radiusers=Radius-(Tol/2)+(Tol*Zufallszahl1) A = Radiusers*cos(alphaers) G = Radiusers*sin(alphaers) Set Punkte(i) = factory2D.CreateControlPoint (G,A) Next Dim Spline 'As Spline2D Set Spline = factory2D.CreateSpline (Punkte) '!!!!!!!!!! auschlagebender Befehl Spline.Name = "Spline" sketch1.CloseEdition Bauteil.Update End Sub Function Zufallszahl1() '================================================================= Dim Zufallszahl Zufall = Rnd(1) [Zufallszahl1] = [Zufall] ''Rueckgabe des Wert Zufallszahl End Function Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
clausb Ehrenmitglied V.I.P. h.c.
Beiträge: 2914 Registriert: 20.12.2000
|
erstellt am: 13. Jul. 2013 15:08 <-- editieren / zitieren --> Unities abgeben: Nur für Malte369
|
Walter Geppert Ehrenmitglied V.I.P. h.c. Frank und Frei
Beiträge: 2143 Registriert: 12.12.2000 Konstruktion von Sondermaschinen, Montageautomaten, Meß- und Prüfeinrichtungen, Vorrichtungen und Produktentwicklung mit Creo Elements/Direct Modeling 20.4, AdvancedDesign, Surfacing, Simulate, SolidPower, ModelManager auf HP ZBook 17 G4, Windows 10 Pro 64
|
erstellt am: 13. Jul. 2013 15:11 <-- editieren / zitieren --> Unities abgeben: Nur für Malte369
|
Malte369 Mitglied
Beiträge: 13 Registriert: 13.07.2013 Catia V5 R19 Win8 AMD Quad-Core 3,6Ghz 8GB Ram
|
erstellt am: 13. Jul. 2013 15:13 <-- editieren / zitieren --> Unities abgeben:
|
Malte369 Mitglied
Beiträge: 13 Registriert: 13.07.2013 Catia V5 R19 Win8 AMD Quad-Core 3,6Ghz 8GB Ram
|
erstellt am: 14. Jul. 2013 23:54 <-- editieren / zitieren --> Unities abgeben:
|
bgrittmann Moderator Konstrukteur
Beiträge: 11780 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 15. Jul. 2013 09:08 <-- editieren / zitieren --> Unities abgeben: Nur für Malte369
Servus Bei 2D-Splines hab ich in der Doku leider keinen Methode dazu gefunden. Wenn du einen 3D-Spline ausweichen kannst, kannst du mit ".SetClosing" den 3D-Spline schließen (Siehe Doku und Forensuche) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
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: 15. Jul. 2013 10:07 <-- editieren / zitieren --> Unities abgeben: Nur für Malte369
Wie wäre es, mit dem ersten Punkt noch einmal als letzten setzen oder ein Constraint auf die den ersten und den letzten Punkt? ------------------ 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 |
Malte369 Mitglied
Beiträge: 13 Registriert: 13.07.2013 Catia V5 R19 Win8 AMD Quad-Core 3,6Ghz 8GB Ram
|
erstellt am: 15. Jul. 2013 10:25 <-- editieren / zitieren --> Unities abgeben:
Danke erstmal für die Mühen! Ich werden dann wohl auf den 3d ausweichen. Kann ich den denn austauschen? Bei dem 2d Spline war die Idee, dass ich dem Block die Skizze unterm Hintern wegziehen und einfach einen neuen Spline einsetze ohne dieses "Stützelement für Skizze ändern" zu müssen. Das schien mir als am Fehlerunanfälligsten. Zusätzlich habe ich nur eine Skizze, weil je nach radius muss ich schon so 80 Punkte setzen. Das mit den ersten und letzten Punkt habe ich momentan so gelöst, ABER dann bildet sich eine scharfe Kante.
Über die Constrains habe ich mir auch schon gedanken gemacht. Das blöde ist, dass man entweder das besagt Häkchen setzt oder man muss: -Punkte Kongurenz -beide Tangentenstetigkeiten einblenden (In dem Auswahlfenster wenn man auf den Spline doppelklickt) -die beiden Kongurenz setzten und wenn ich es schon nicht hinbekomme das Häkchen zu setzen... Schönen Gruß
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Malte369 Mitglied
Beiträge: 13 Registriert: 13.07.2013 Catia V5 R19 Win8 AMD Quad-Core 3,6Ghz 8GB Ram
|
erstellt am: 15. Jul. 2013 10:28 <-- editieren / zitieren --> Unities abgeben:
Ach ich sehe gerade ich kann einen 3D Spline auch auf mehrere Punkte in EINER Skizze beziehen, muss die dann nur vernünftig benennen. macht es jetzt programmier-technisch mehr Sinn: den Block jedesmal zu löschen und einen neuen einzusetzen oder das Stützelement ändern? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
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: 15. Jul. 2013 10:52 <-- editieren / zitieren --> Unities abgeben: Nur für Malte369
Die scharfe Kante haste sicher nur, weil die Tangenten nicht aufeinander liegen. Versuch den beiden Punkten mal die gleiche Tangente mitzugeben, dann sollte auch die Kante verschwinden. ------------------ 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 |
Malte369 Mitglied
Beiträge: 13 Registriert: 13.07.2013 Catia V5 R19 Win8 AMD Quad-Core 3,6Ghz 8GB Ram
|
erstellt am: 15. Jul. 2013 11:31 <-- editieren / zitieren --> Unities abgeben:
probiere das auch mal aus... Muss ganz ehrlich sagen in den Constrains per Makro kenne ich mich nicht so aus. Jetzt will ich mich erstmal damit beschäftigen bevor ich mir hier weitere Fragen vorkauen lasse Ich werde in den nächsten Tagen mal Statusmeldung machen oder wenn ich Fragen ab nochmal an euch heran treten! Danke Soweit! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
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: 15. Jul. 2013 12:43 <-- editieren / zitieren --> Unities abgeben: Nur für Malte369
Einfach die Methode SetTangent() der ControlPoint2D verwenden. Code:
Methods o Sub GetTangent( CATSafeArrayVariant oTangent)
Returns the tangent properties of the spline control point Parameters: oTangent[0] The X Coordinate of the tangent determined at the control point oTangent[1] The Y Coordinate of the tangent determined at the control point o Sub SetTangent( double iTangentX, double iTangentY) Imposes the tangent properties of the spline control point Parameters: iTangentX The X Coordinate of the tangent determined at the control point iTangentY The Y Coordinate of the tangent determined at the control point
------------------ 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 |
Malte369 Mitglied
Beiträge: 13 Registriert: 13.07.2013 Catia V5 R19 Win8 AMD Quad-Core 3,6Ghz 8GB Ram
|
erstellt am: 17. Jul. 2013 15:18 <-- editieren / zitieren --> Unities abgeben:
Sorry, aber ich kriege es nicht hin. Also als erstes mal zur Theorie: Ich nehme meinen ersten Punkt. Dann erstelle ich einen Vektor dem ich mit GetTangent() 2 richtungsweisende Werte zuweise. Als nächstes meinen letzten Punkt mit GetTangent diesen Vektor zuweisen. Stimmt das so? dann der PText: For i = 0 to (Anzahlpunkte-1) Step 1 alphaneu=alphaneu+alpha alphaers=alphaneu*PI/180 Radiusers=Radius-(Tol/2)+(Tol*Zufallszahl1) A = Radiusers*cos(alphaers) G = Radiusers*sin(alphaers) Set Punkte(i) = factory2D.CreateControlPoint (G,A) if k=0 then Set Punkte(Anzahlpunkte) = factory2D.CreateControlPoint (G,A) k=1 End If Next Dim RVektor(1) <------------ Punkte(0).GetTangent RVektor <------------ Punkte(Anzahlpunkte).SetTangent RVektor <------------ Dim Spline 'As Spline2D Set Spline = factory2D.CreateSpline (Punkte)
Fehlermeldung: Verfahren GetTangent ist fehlgeschlagen Was mache ich falsch? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
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: 23. Jul. 2013 13:45 <-- editieren / zitieren --> Unities abgeben: Nur für Malte369
Nein Zuweisen tuste natürlich mit SetTangent() Dann verstehe ich Code:
if k=0 then Set Punkte(Anzahlpunkte) = factory2D.CreateControlPoint (G,A) k=1 End If
nicht und würde empfehlen Deien Variablen sprechender zu benennen. Dann zur möglichen Fehlerursache: Versuch RVektor mal nicht als Array zu dimensionieren, sondern nur als Variant, ich glaub die Funktion macht das selber und ruf es mit Code:
Dim RVektor Call Punkte(0).GetTangent(RVektor)
auf. ------------------ 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 |