Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Punkte für einen Spline importieren

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:  Punkte für einen Spline importieren (5249 mal gelesen)
demar
Mitglied



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

Beiträge: 15
Registriert: 25.11.2008

erstellt am: 22. Mrz. 2009 10:11    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 Leute...
ich will ein paar Punkte aus einer .txt-Datei importieren um eine Spline-Kurve zu erstellen. Kann mir bitte einer helfen so einen Makro zu schreieben.Ich muss sagen, dass ich damit überhaupt keine Erfahrung habe.Ich bedanke mich schon mal!!!

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: 22. Mrz. 2009 10:32    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 demar 10 Unities + Antwort hilfreich

Servus
Wenn es auch über den Umweg über Excel geht, gibt es auf catia.cad.de ein Makro dazu.

Gruß
Bernd

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

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

demar
Mitglied



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

Beiträge: 15
Registriert: 25.11.2008

erstellt am: 23. Mrz. 2009 12: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

Ich danke dir, aber ich arbeite mit Matlab und ist extrem umstendlich die Daten in Excel zu importiern um die dann wieder zu exportieren.Außerdem hat das Tool nicht funktioniert.Hat bei mir immer n Fehler gezeigt.Hast du noch andere Ideen???

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

zoltan.bekesi
Mitglied



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

Beiträge: 321
Registriert: 22.10.2006

Job:
CATIA V5R19 / XP 32bit
MS Office 2003
Microstation V8 2004 Edition
DELL Precision M6300

erstellt am: 23. Mrz. 2009 19: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 demar 10 Unities + Antwort hilfreich

Hallo demar,

es muss ein CATPart geöffnet sein.
Einige Fehler sind behandelt, aber nicht alle.
Den CATIA-bezogenen Teil kannst Du übernehmen. Die Datenformat sollst du anpassen, wie du willst.

Dateiformat:

Code:
10.0;20.5;30.6;
110.0;120.5;130.6;
210.0;520.5;320.6;
310.0;420.5;330.6;
410.0;320.5;530.6;

Code:
Sub Catmain()

    Dim oActDoc As Document
    If CATIA.Documents.Count = 0 Then
        MsgBox ("Kein Dokument geöffnet!")
        Exit Sub
    End If
    Set oActDoc = CATIA.ActiveDocument
    If TypeName(oActDoc) <> "PartDocument" Then
        MsgBox ("Kein CATPart geöffnet!")
        Exit Sub
    End If

    Dim oPart As Part
    Set oPart = oActDoc.Part
    Dim oHSF As HybridShapeFactory
    Set oHSF = oPart.HybridShapeFactory
    Dim oHB As HybridBody
    Set oHB = oPart.HybridBodies.Add

    Dim oSpline As HybridShapeSpline
    Set oSpline = oHSF.AddNewSpline

    Dim oFile As File
    Set oFile = CATIA.FileSystem.GetFile("d:\input.txt")
    Dim oTextStream As TextStream
    Set oTextStream = oFile.OpenAsTextStream("ForReading")

    Dim sLine As String
    Dim x As Double
    Dim y As Double
    Dim z As Double
    Dim f As Integer
    Dim g As Integer
    Dim oPoint As HybridShapePointCoord

    'Bei mir zickt CATIA und will nicht am Ende der Datei aufhören
    Do Until oTextStream.AtEndOfStream
        sLine = oTextStream.ReadLine
        sLine = Trim(sLine)
        If sLine <> "" Then
            f = InStr(1, sLine, ";")
    'in der Replace Dezimaltrennzeichen ggf. tauschen
            x = CDbl(Replace(Left(sLine, f - 1), ".", ","))
            g = InStr(f + 1, sLine, ";")
            y = CDbl(Replace(Mid(sLine, f + 1, g - f - 1), ".", ","))
            f = InStr(g + 1, sLine, ";")
            z = CDbl(Replace(Mid(sLine, g + 1, f - g - 1), ".", ","))
            Set oPoint = oHSF.AddNewPointCoord(x, y, z)
            oPoint.Compute
    'auskommentieren, wenn Punkte in der gleichen Ebene im Baum vorhanden sein sollen, wie Spline
            'oHB.AppendHybridShape oPoint
            oSpline.AddPoint oPoint
        Else
    'Da CATIA bei der Dateiende zickt, anbei ein Workaroung
            Exit Do
        End If
    Loop
    oHB.AppendHybridShape oSpline
    oPart.Update

    oTextStream.Close

End Sub


Gruß,
Zoltan

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

demar
Mitglied



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

Beiträge: 15
Registriert: 25.11.2008

erstellt am: 23. Mrz. 2009 20:50    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

Hey ich danke dir ganz doll.Das ist echt geil.Eine Frage habe trotzdem noch.Kann man die Punkte auch irgendwie im Sizzenmodus CATPart importieren?

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

zoltan.bekesi
Mitglied



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

Beiträge: 321
Registriert: 22.10.2006

Job:
CATIA V5R19 / XP 32bit
MS Office 2003
Microstation V8 2004 Edition
DELL Precision M6300

erstellt am: 24. Mrz. 2009 19:00    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 demar 10 Unities + Antwort hilfreich

Hallo demar,

es geht auch als Skizze.
Vergleiche den Code mit den vorherigen, um die unterschiede festzustellen.

Code:
Sub CATMain()

    Dim oActDoc As Document
    If CATIA.Documents.Count = 0 Then
        MsgBox ("Kein Dokument geöffnet!")
        Exit Sub
    End If
    Set oActDoc = CATIA.ActiveDocument
    If TypeName(oActDoc) <> "PartDocument" Then
        MsgBox ("Kein CATPart geöffnet!")
        Exit Sub
    End If

    Dim oPart As Part
    Set oPart = oActDoc.Part

    Dim body1 As Body
    Set body1 = oPart.MainBody

    Dim sketches1 As Sketches
    Set sketches1 = body1.Sketches

    Dim reference1 As Reference
    Set reference1 = oPart.OriginElements.PlaneXY

    Dim sketch1    'As Sketch
    Set sketch1 = sketches1.Add(reference1)

    Dim arrayOfVariantOfDouble1(8)
    arrayOfVariantOfDouble1(0) = 0#
    arrayOfVariantOfDouble1(1) = 0#
    arrayOfVariantOfDouble1(2) = 0#
    arrayOfVariantOfDouble1(3) = 1#
    arrayOfVariantOfDouble1(4) = 0#
    arrayOfVariantOfDouble1(5) = 0#
    arrayOfVariantOfDouble1(6) = 0#
    arrayOfVariantOfDouble1(7) = 1#
    arrayOfVariantOfDouble1(8) = 0#
    sketch1.SetAbsoluteAxisData arrayOfVariantOfDouble1

    oPart.InWorkObject = sketch1

    Dim factory2D1 As Factory2D
    Set factory2D1 = sketch1.OpenEdition()

    Dim o2DFactory    'As Factory2D
    Set o2DFactory = sketch1.Factory2D

    Dim oPoint2D As Point2D
    Dim aoPoints()

    ReDim aoPoints(20)
    Dim iPointsCount As Integer
    iPointsCount = 0

    Dim oFile As File
    Set oFile = CATIA.FileSystem.GetFile("d:\input.txt")
    Dim oTextStream As TextStream
    Set oTextStream = oFile.OpenAsTextStream("ForReading")

    Dim sLine As String
    Dim x As Double
    Dim y As Double
    Dim z As Double
    Dim f As Integer
    Dim g As Integer

    'Bei mir zickt CATIA und will nicht am Ende der Datei aufhören
    Do Until oTextStream.AtEndOfStream
        sLine = oTextStream.ReadLine
        sLine = Trim(sLine)
        If sLine <> "" Then
            f = InStr(1, sLine, ";")
    'in der Replace Dezimaltrennzeichen ggf. tauschen
            x = CDbl(Replace(Left(sLine, f - 1), ".", ","))
            g = InStr(f + 1, sLine, ";")
            y = CDbl(Replace(Mid(sLine, f + 1, g - f - 1), ".", ","))
            f = InStr(g + 1, sLine, ";")
            z = CDbl(Replace(Mid(sLine, g + 1, f - g - 1), ".", ","))

            Set oPoint2D = o2DFactory.CreatePoint(x, y)
            Set aoPoints(iPointsCount) = oPoint2D
            iPointsCount = iPointsCount + 1
            If iPointsCount <= UBound(aoPoints) Then
                ReDim Preserve aoPoints(iPointsCount + 20)
            End If

        Else
    'Da CATIA bei der Dateiende zickt, anbei ein Workaroung
            Exit Do
        End If
    Loop

    ReDim Preserve aoPoints(iPointsCount - 1)
    oPart.Update
    oTextStream.Close

    Dim oSpline As Spline2D
    Set oSpline = o2DFactory.CreateSpline(aoPoints)
    sketch1.CloseEdition
    oPart.Update
End Sub


Gruß,
Zoltan

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



IT Teamleiter PLM & CAD (m/w/d)

KraussMaffei ist einer der weltweit führenden Hersteller von Maschinen und Anlagen für die Produktion und Verarbeitung von Kunststoff und Kautschuk. Als einziger Anbieter vereinen wir alle Technologien der Kunststoffverarbeitung und stehen seit über 185 Jahren für innovative Entwicklungen. Als ein Vorreiter bei Recycling, Upcycling und Recompounding von Kunststoffen beschäftigt sich KraussMaffei ...

Anzeige ansehenTeamleitung, Gruppenleitung
TMP
Mitglied



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

Beiträge: 12
Registriert: 11.10.2009

CATIA V5R18, Win7

erstellt am: 09. Nov. 2011 12:02    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 demar 10 Unities + Antwort hilfreich

Hallo zoltan,

auch wenn der Thread schon älter ist, eine kleine Anmerkung von mir: bei mir gibt es unter CATIA V5R18 eine Fehlermeldung bei diesem Makro in den Zeilen:

    arrayOfVariantOfDouble1(0) = 0#
    arrayOfVariantOfDouble1(1) = 0#
    ...

Ich habe dort die "#" am Ende der Zeile gelöscht und danach hat es funktioniert. Ich kenn mich mit CATScript allerdings Null aus... ich hoffe das hat nicht irgendwelche anderen ungewollten Auswirkungen.

[Diese Nachricht wurde von TMP am 09. Nov. 2011 editiert.]

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