Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Spline mit variabler Anzahl von Punkten automatisch erzeugen

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:  Spline mit variabler Anzahl von Punkten automatisch erzeugen (941 mal gelesen)
PeterPan1
Mitglied
Student

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

Beiträge: 2
Registriert: 16.07.2015

Catia V5 R 19

erstellt am: 16. Jul. 2015 19: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

Guten Abend zusammen!

Ich hoffe, dass ihr mir dieses mal auch wieder helfen könnt. (Bin schon lange als stiller Mitleser begeistert!) 

Es geht um folgende Problemstellung:
Mit Hilfe eines Makros, welches ich in Catvba geschrieben habe, berechne ich eine Variable Anzahl von Punkten auf einer Kurve.
Dies könnten folgende Punkte sein:

Code:
A = TextBox1.Value
s = 2 / A
Pi = 3.14159265359


Set partDocument1 = CATIA.ActiveDocument

Dim part1 As Part
Set part1 = partDocument1.Part

For i = 0 To 2 Step s

Dim hybridShapeFactory1 As HybridShapeFactory
Set hybridShapeFactory1 = part1.HybridShapeFactory

Dim hybridShapePointCoord1 As HybridShapePointCoord

X = 100 * Sin(Pi * i)
Y = 100 * Cos(Pi * i)

Dim bodies1 As Bodies
Set bodies1 = part1.Bodies

Dim body1 As Body
Set body1 = bodies1.Item("Hauptkörper")

Set hybridShapePointCoord1 = hybridShapeFactory1.AddNewPointCoord(X, Y, 0#)

body1.InsertHybridShape hybridShapePointCoord1

part1.InWorkObject = hybridShapePointCoord1

Next


Hier werden die Punkte erzeugt.
Jetzt möchte ich diese zu einem Spline zusammenfassen:

Code:
Dim hybridShapeSpline1 As HybridShapeSpline
Set hybridShapeSpline1 = hybridShapeFactory1.AddNewSpline()

hybridShapeSpline1.SetSplineType 0

hybridShapeSpline1.SetClosing 1

Dim reference1 As Reference
Set reference1 = part1.CreateReferenceFromObject(hybridShapePointCoord1)

hybridShapeSpline1.AddPointWithConstraintExplicit reference1, Nothing, -1#, 1, Nothing, 0#


Mein großes Problem ist, dass ich mit Hilfe einer Schleife den Eintrag hybridShapePointCoord1 nicht parametrisieren kann. An liebsten würde ich so etwas schreiben wie (Pseudocode)

Code:
For i=1 to a step 1
...
hybridShapePointCoord&i
...
Next

Kann das irgendwie realisiert werden? Habe es schon mit zahlreichen, erfinderischen Methoden versucht, die leider alle nicht hingehauen haben. (Selection.Search o.ä., Punkt direkt eintragen, Punktename eintragen...)
Würde das gerne komplett innerhalb von Catia reallisieren.


Vielen, vielen Dank schon einmal!

LG
PeterPan1 

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. Jul. 2015 20:13    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 PeterPan1 10 Unities + Antwort hilfreich

Servus
Willkommen im Forum.
Bei Code sieht doch schon recht gut aus.
Wenn die Anzahl der Punkte schon vorher bekannt ist kannst du das gleich als Konstante definieren. In einer Schleife wird dann der Punkt erstellt und gleich dem Spline (der zuvor erzeugt wurde) hinzugefügt. zB
Code:
Option Explicit

Sub CATMain()
    Dim partDocument1 As partDocument
    Dim hybridShapeFactory1 As HybridShapeFactory
    Dim part1 As Part
    Dim AnzahlPunkte As Integer
    Dim oGetSet As HybridBody
    Dim hybridShapePointCoord1 As HybridShapePointCoord
    Dim hybridShapeSpline1 As HybridShapeSpline
    Dim X As Long
    Dim Y As Long
    Dim i As Integer
    Dim reference1 As Reference
    Dim Pi As Long
   
    Pi = 3.14159265359
   
    AnzahlPunkte = 10
   
    Set partDocument1 = CATIA.ActiveDocument
    Set part1 = partDocument1.Part
    Set oGetSet = part1.HybridBodies.Item(1)
    Set hybridShapeFactory1 = part1.HybridShapeFactory
   
    'Spline anlegen

    Set hybridShapeSpline1 = hybridShapeFactory1.AddNewSpline()

    hybridShapeSpline1.SetSplineType 0

    hybridShapeSpline1.SetClosing 1
    oGetSet.AppendHybridShape hybridShapeSpline1
   
   
    'Punkte erzeugen
   
    For i = 1 To AnzahlPunkte
        'Koordinaten berechnen
        X = 100 * Sin(Pi * i / 10)
        Y = 100 * Cos(Pi * i / 10)
        'Punkt erzeugen
        Set hybridShapePointCoord1 = hybridShapeFactory1.AddNewPointCoord(X, Y, 0#)
        oGetSet.AppendHybridShape hybridShapePointCoord1
        'Referenz bilden und dem Spline hinzufügen
        Set reference1 = part1.CreateReferenceFromObject(hybridShapePointCoord1)
        hybridShapeSpline1.AddPointWithConstraintExplicit reference1, Nothing, -1#, 1, Nothing, 0#
    Next
   
    part1.Update

End Sub



Gruß Bernd

PS: ggf kann man die gewünschte Kurve auch ohne ein Makro erzeugen (Konstruktinosregel (fog) und "Parallele Kurve")

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

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

PeterPan1
Mitglied
Student

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

Beiträge: 2
Registriert: 16.07.2015

Catia V5 R 19

erstellt am: 16. Jul. 2015 20: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

Unfassbar gut!

Vielen Dank - das war es!

Mit fog und paralleler Kurve hatte ich es damals schon versucht, allerdings hatte das leider nicht hingehauen.

  Danke & einen wundervollen Abend noch

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