Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  2D/3D Spline aus Excel-Makro

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:  2D/3D Spline aus Excel-Makro (6103 mal gelesen)
K-Jay
Mitglied
Student


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

Beiträge: 18
Registriert: 09.01.2012

Centrino 1,73GHz; 1GB
Win XP SP3
Catia V5 R19 SP6
MS Office 2007

erstellt am: 16. Feb. 2012 17: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,
ich möchte einen 2D-Spline erzeugen (z-Koordinate=0), jedoch später eventuell einen 3D-Spline.
In Meiner Excel-Tabelle stehen in der Spalte A die X-Werte, Spalte B die Y-Werte und Spalte C die Z-Werte.
Die Punkte lassen sich erfolgreich generieren, jedoch bei der Spline-Erzeugung springt das Makro immer raus mit der Fehlermeldung: Objekt unterstützt diese Eigenschaft oder Methode nicht!
Das passiert ziemlich zum Schluss und zwar bei Set SplineCtrPt = PtDoc.Part.HybridShapeFactory.AddNewControlPoint(ReferencesurPoint)!

Der vollständige Text lautet:

Sub CreationSpline()
    'Limitation pt par spline
    Const NBMaxPtParSpline As Integer = 500
   
    'recuperation de CATIA
    Dim PtDoc As Object
    Set PtDoc = GetCATIAPartDocument
   
    'recup de l'HybridBody
    Dim myHBody As Object
    Set myHBody = PtDoc.Part.HybridBodies.Item(1)
   
    Dim iRang As Integer
    Dim iValide As Integer
    Dim X1 As Double
    Dim Y1 As Double
    Dim Z1 As Double
    Dim indice As Integer
    Dim TableauPtPassage(1 To NBMaxPtParSpline) As Object
    Dim spline As Object
    Dim ReferencesurPoint  As Object
    Dim SplineCtrPt As Object
   
   
    iValide = 0
    iRang = 1
    'Analyse du fichier
    While iValide <> Cst_iEND
   
        'reinitialisation du tableau de point de la spline
        indice = 0
       
       
        'Suppression des enregistrements avant la rencontre du StartCurve
        While ((iValide <> Cst_iSTARTCurve) And (iValide <> Cst_iEND))
            AnalyseChaine iRang, X1, Y1, Z1, iValide
            iRang = iRang + 1
        Wend
       
        If (iValide <> Cst_iEND) Then
            'On lit jusqu'a rencontre de endcurve -> Spline complete
            While ((iValide <> Cst_iENDCurve) And (iValide <> Cst_iEND))
                AnalyseChaine iRang, X1, Y1, Z1, iValide
                iRang = iRang + 1
       
       
                'point valide
                If (iValide = 0) Then
                    indice = indice + 1
                    If (indice > NBMaxPtParSpline) Then
                        MsgBox "Trop de point par Spline. Point supprime"
                    Else
                        Set TableauPtPassage(indice) = PtDoc.Part.HybridShapeFactory.AddNewPointCoord(X1, Y1, Z1)
                        myHBody.AppendHybridShape TableauPtPassage(indice)
                    End If
                End If
            Wend
   
       
       
       
            'debut de la construction de la spline
            'y a t il assez de point ?
            If (indice < 2) Then
                MsgBox "Pas assez de point par Spline. Spline supprime"
            Else
                Set spline = PtDoc.Part.HybridShapeFactory.AddNewSpline
                spline.SetSplineType 0
                spline.SetClosing 0
   
   
                'Creation puis ajout des points de passage a la spline
                For i = 1 To indice
                    Set ReferencesurPoint = PtDoc.Part.CreateReferenceFromObject(TableauPtPassage(i))
                    Set SplineCtrPt = PtDoc.Part.HybridShapeFactory.AddNewControlPoint(ReferencesurPoint)
                    spline.AddControlPoint SplineCtrPt
                Next i
   
                myHBody.AppendHybridShape spline
            End If
        End If
    Wend
   
    PtDoc.Part.Update
End Sub

Kann mir jemand bei meinem Problem helfen?

------------------
Gruß K-Jay

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. Feb. 2012 19: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 K-Jay 10 Unities + Antwort hilfreich

Servus
Gemäß hier muss du die Zeilen umschreiben in:
Code:
Set ReferencesurPoint = PtDoc.Part.CreateReferenceFromObject(TableauPtPassage(i))
spline.AddPoint ReferencesurPoint

Sonderbar, dass dieses Problem in letzter Zeit niemand anders hatte (auch ich nicht).

Gruß
Bernd

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

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

K-Jay
Mitglied
Student


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

Beiträge: 18
Registriert: 09.01.2012

Centrino 1,73GHz; 1GB
Win XP SP3
Catia V5 R19 SP6
MS Office 2007

erstellt am: 16. Feb. 2012 19:40    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

Und wieder einmal vielen Dank Bernd.
Jetzt funktionierts!

------------------
Gruß K-Jay

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

K-Jay
Mitglied
Student


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

Beiträge: 18
Registriert: 09.01.2012

Centrino 1,73GHz; 1GB
Win XP SP3
Catia V5 R19 SP6
MS Office 2007

erstellt am: 28. Feb. 2012 22:42    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

Nochmal zu dieser Problematik:

Was muss ich am Makro verändern, damit der Spline geschlossen ist?

------------------
Gruß K-Jay

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: 28. Feb. 2012 22: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 K-Jay 10 Unities + Antwort hilfreich

Servus
Einfach mal die V5Automation öffnen, und nach AddNewSpline suche. Dann zu CATIAHybridshapeSpline weiterhangeln und die Methode SetClosing raus suchen.
Diese musst du nur noch an geeigneter Stelle ins Makro einfügen. (zB spline.SetClosing(1))

Gruß
Bernd

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

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

PAP
Mitglied



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

Beiträge: 29
Registriert: 08.08.2012

CATIA V5 R19
Win 7 Prof.
Intel Xeon 3.6Ghz
16Gb RAM
Nvidia Quadro 2000

erstellt am: 16. Jun. 2016 20: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 K-Jay 10 Unities + Antwort hilfreich

Hallo,

ich verwende prinzipiell die gleiche funktion, jedoch funktioniert die Schleife bei mir nicht.

Hier wie es geht:
(eben nur für 3 Punkte aus der Collection)

Code:

Sub CreateSpline()
    Dim hybridShapeFactory1 As HybridShapeFactory
    Set hybridShapeFactory1 = PUBobjTargetPart.HybridShapeFactory

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

    hybridShapeSpline1.SetSplineType 0

    hybridShapeSpline1.SetClosing 0
   
    Dim reference1 As Reference
   
       
        Set reference1 = PUBobjTargetPart.CreateReferenceFromObject(PUBcolPoints.Item(1))
        hybridShapeSpline1.AddPoint reference1
   
        Set reference1 = PUBobjTargetPart.CreateReferenceFromObject(PUBcolPoints.Item(2))
        hybridShapeSpline1.AddPoint reference1

        Set reference1 = PUBobjTargetPart.CreateReferenceFromObject(PUBcolPoints.Item(3))
        hybridShapeSpline1.AddPoint reference1

    PUBobjTargetGeoSet.AppendHybridShape hybridShapeSpline1
   
    PUBobjTargetPart.InWorkObject = hybridShapeSpline1

    PUBobjTargetPart.Update
End Sub


Und so geht es nicht:
(Schleife durch alle Objekte der Collection. Es kommt ein Fehler "Methode update part schlägt fehl", im Part ist ein Spline und der erste Punkt ist so oft wie die Anzahl der Punkte in der Col. Als Punkt im Array angegeben.)

Code:

Sub CreateSpline()
    Dim hybridShapeFactory1 As HybridShapeFactory
    Set hybridShapeFactory1 = PUBobjTargetPart.HybridShapeFactory

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

    hybridShapeSpline1.SetSplineType 0

    hybridShapeSpline1.SetClosing 0

    Dim reference1 As Reference
   
    Dim i As Integer
    For i = 1 To PUBcolPoints.Count
        Set reference1 = PUBobjTargetPart.CreateReferenceFromObject(PUBcolPoints.Item(1))
        hybridShapeSpline1.AddPoint reference1
    Next

    PUBobjTargetGeoSet.AppendHybridShape hybridShapeSpline1
   
    PUBobjTargetPart.InWorkObject = hybridShapeSpline1

    PUBobjTargetPart.Update

End Sub


Ich verstehe nicht, warum so einfache Sachen nicht klappen??

Hat jemand eine Idee?

Vielen Dank und viele Grüße

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. Jun. 2016 20:25    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 K-Jay 10 Unities + Antwort hilfreich

Servus
Du verwendest immer das 1. Element, da muss der Zähler rein:
Code:
Set reference1 = PUBobjTargetPart.CreateReferenceFromObject(PUBcolPoints.Item(i))
Gruß
Bernd

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

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

PAP
Mitglied



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

Beiträge: 29
Registriert: 08.08.2012

CATIA V5 R19
Win 7 Prof.
Intel Xeon 3.6Ghz
16Gb RAM
Nvidia Quadro 2000

erstellt am: 17. Jun. 2016 16:08    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 K-Jay 10 Unities + Antwort hilfreich

Oh man ich Idiot... bin ich also völlig umsonst ausgerastet 

Nach ner Weile seh ich den Wald vor Bäumen nicht mehr..

Danke dafür!

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