- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 7 von 7

Thema: VBA-Makro spinnt (CATIA)

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von White_Fox
    Registriert seit
    04.10.2011
    Beiträge
    1.473
    Das obige Problem hab ich zwar gelöst bekommen, aber dennoch: Gibts hier niemanden, der ein bereits ein VBA-Makro für Catia geschrieben hat?

    Das Problem läßt sich lösen, indem Linien und Punkte gleich mit den richtigen Koordinaten erstellt werden. Warum das nachträgliche Ändern mit den H-Koordinaten funktioniert und mit den V-Koordinaten nicht weiß ich nicht...allerdings ist das Klassenmodell in Catia eh etwas seltsam.

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    04.07.2012
    Beiträge
    201
    Hallo WhiteFox,

    ein paar Anmerkungen.

    1. Um dich zur sauberen Deklaration zu zwingen würde ich immer mit "Option Explicit" beginnen. So lernt mans am besten und die Syntaxhilfe funktioniert auch meistens.
    2. Das "Set prtdc = CATIA.Documents.Item(CATIA.Documents.Count)" kannst du dir sparen, da du das Document schon mit "Set prtdc = CATIA.Documents.Add("CATPart")" in prtdc gelegt hast.
    3. "prt.Update" macht ein Update über das gesamte Part. Das kann, falls man das öfter im Code verwendet, das Makro langsam machen. Mit "MyPart.UpdateObject MySketch" können auch einzelne Objekte aktualisiert werden. Das reicht meistens.
    4. Du brauchst keine Punkte um 2DLinien zu erzeugen. Da die Linie bereits Start und Endpunkt beinhalten. "Set MyLine_01 = MyFactory2D.CreateLine(X1, Y1, X2, Y2)" Einfach die Koordinaten für Punkt1 (X1,Y1) und Punkt2 (X2,Y2) hinter CreateLine schreiben.

    zu Empfehlen ist:
    http://forum.cad.de/cgi-bin/ubb/foru...ung&number=137

    die Catia Hilfe in deinem Installationsverzeichnis und die Makrorekorderfunktion.

    mfG
    Mario

    Code:
    Option Explicit
    
    Sub CATMain()
    
    Dim MyPartDoc       As PartDocument
    Dim MyDocuments     As Documents
    Dim MyPart          As Part
    
    Dim MyHybBodies     As HybridBodies
    Dim MyHybBody       As HybridBody
    
    Dim MyHybShapeFact  As HybridShapeFactory
    Dim MyPlane         As HybridShapePlaneOffset
    
    Dim MySketches      As Sketches
    Dim MySketch        As Sketch
    Dim MyReference     As Reference
    
    Dim MyFactory2D     As Factory2D
    Dim MyLine_01       As Line2D
    Dim MyLine_02       As Line2D
    Dim MyLine_03       As Line2D
    Dim MyLine_04       As Line2D
    
    'CATPart erzeugen
    Set MyDocuments = CATIA.Documents
    Set MyPartDoc = MyDocuments.Add("CATPart")
    
    'Part umbenennen
    Set MyPart = MyPartDoc.Part
    MyPartDoc.Product.PartNumber = "PRISMA"
    
    'GeometricalSet anlegen / umbenennen /GeoSet in work setzen
    Set MyHybBodies = MyPart.HybridBodies
    Set MyHybBody = MyHybBodies.Add()
    MyHybBody.Name = "Grundfläche"
    MyPart.InWorkObject = MyHybBody
    
    'Plane erstellen
    Set MyHybShapeFact = MyPart.HybridShapeFactory
    Set MyReference = MyPart.CreateReferenceFromObject(MyPart.OriginElements.PlaneXY)
    Set MyPlane = MyHybShapeFact.AddNewPlaneOffset(MyReference, 10, False)
    MyPlane.Name = "Skizzierebene"
    MyHybBody.AppendHybridShape MyPlane
    MyPart.UpdateObject MyHybBody
    
    'Sketch erzeugen
    Set MySketches = MyHybBody.HybridSketches
    Set MyReference = MyPart.CreateReferenceFromObject(MyPlane)
    Set MySketch = MySketches.Add(MyReference)
    MySketch.Name = "Skizze Prisma"
    MyPart.UpdateObject MySketch
    
    
    'Sketch öffnen und Linien erzeugen
    MySketch.OpenEdition
    Set MyFactory2D = MySketch.Factory2D
    
    Set MyLine_01 = MyFactory2D.CreateLine(0, 0, 10, 0)
    Set MyLine_02 = MyFactory2D.CreateLine(10, 0, 10, 10)
    Set MyLine_03 = MyFactory2D.CreateLine(10, 10, 0, 10)
    Set MyLine_04 = MyFactory2D.CreateLine(0, 10, 0, 0)
    
    MyLine_01.Name = "Linie_01"
    MyLine_02.Name = "Linie_02"
    MyLine_03.Name = "Linie_03"
    MyLine_04.Name = "Linie_04"
    
    MySketch.CloseEdition
    
    'alles Updaten
    MyPart.Update
    
    End Sub
    Wenn das die Lösung sein soll...
    ...will ich mein Problem zurück !!!

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von White_Fox
    Registriert seit
    04.10.2011
    Beiträge
    1.473
    Hallo cyborg

    Erstmal vielen Dank, aber wie gesagt...mein Problem oben ist gelöst.
    1. Um dich zur sauberen Deklaration zu zwingen würde ich immer mit "Option Explicit" beginnen.
    Da hast du völlig Recht. Ist bei mir auch drin, habs nur nicht mit reinkopiert.

    Vielen Dank für den Rat mit part.update. Ja, das macht es in der Tat sehr langsam.

    4. Du brauchst keine Punkte um 2DLinien zu erzeugen.
    Sicher nicht. Aber so bleiben die Linien auch verbunden, wenn man nachträglich daran rummzerrt. Ich wollte das Makro schon so konstruieren lassen, wie ich konstruieren würde. Auch wenn ich das händisch wahrscheinlich nicht unbedingt wieder ändern würde. Eigentlich geht es mir bei der Übung hauptsächlich darum, auch mal was Neues zu lernen bzw. mit VBA auch mal was anderes als Excel zu programmieren.

    Aber schön zu hören daß es noch andere gibt die Makros in Catia schreiben. Hab mich heute vormittag extra bei cad.de angemeldet weil ich dachte, hier bin ich mal falsch...

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    04.07.2012
    Beiträge
    201
    Habs gerade gesehen das du dich heute angemeldet hast.
    2DText zu 3DText Makro hast du in Arbeit... Ist immer Nützlich.

    mfG
    Mario Alias Roccat auf Cad.de
    Wenn das die Lösung sein soll...
    ...will ich mein Problem zurück !!!

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von White_Fox
    Registriert seit
    04.10.2011
    Beiträge
    1.473
    Ja...ist aber nur ein kleiner Teil. Ich bastle mir einen Generator für 3D-Modelle für Altium. IC-Aufschrift...

    Geht zwar auch einfacher, aber erstens ist mir das zuviel Handarbeit, zweitens lern ich Catia so auch mal von einer anderen Seite kennen und mach VBA-Kram nicht immer nur unter Excel. Und wer weiß wofür ich das nochmal gebrauchen kann...

Ähnliche Themen

  1. makro um .txt in excel zu übernehmen
    Von user529 im Forum PC-, Pocket PC, Tablet PC, Smartphone oder Notebook
    Antworten: 4
    Letzter Beitrag: 07.07.2008, 17:43
  2. Excel Makro - ATMEGA8535 - Seriell - Input Problem
    Von Abadacus im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 4
    Letzter Beitrag: 21.09.2007, 19:55
  3. Genmark Makro
    Von Potze im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 1
    Letzter Beitrag: 23.07.2007, 17:28
  4. Makro-Problem
    Von gulliver im Forum Assembler-Programmierung
    Antworten: 0
    Letzter Beitrag: 25.06.2007, 18:12
  5. bei Catia V5 Schnecken und Schneckenräder konstruieren
    Von Devil im Forum Konstruktion/CAD/3D-Druck/Sketchup und Platinenlayout Eagle & Fritzing u.a.
    Antworten: 1
    Letzter Beitrag: 22.06.2006, 19:53

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test