Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Bodys als einzelne STL-Parts abspeichern

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:  Bodys als einzelne STL-Parts abspeichern (2125 mal gelesen)
xlex
Mitglied


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

Beiträge: 1
Registriert: 25.10.2013

erstellt am: 25. Okt. 2013 17:10    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,

im Forum habe ich schon einige Inspiration für die Lösung meines Problems gefunden. Nun scheitert es - glaube ich - eher an Basics 

Die Problemstellung ist folgende: Ich habe einzelne CAT-Parts (so ca. 400) bzw. ein mit Bedingungen zusammengebautes CAT-Product. Für den einfach Import in Blender und die anschließende Verarbeitung, benötige ich jedoch am absoluten KoSy positionierte CAT-Parts bzw. STL-Dateien. Über einige Umwege bin ich jetzt auf folgende Lösung gekommen:

- das CATProduct auf ein CATPart reduzieren(ohne alle Parts auf einen Body zusammenzuführen)
- die dadurch entstandenen Bodies einzeln in neue Parts kopieren
- die Parts als STL-Dateien exportieren

Bestimmt nicht die eleganteste Methode, ist aber für meine Zwecke zielführend und kommt ohne irgendwelche Drittprogramme aus.

So viel zum Hintergrund - dafür habe ich folgenden "Code" geschrieben:

Code:
Language="VBSCRIPT"

'Schleife über alle Bodies
'--------------------------------------
Sub CATMain()
Set partDocument1 = CATIA.ActiveDocument
Set part1 = partDocument1.Part
Set bodies1 = part1.Bodies
for n=1 to bodies1.Count-0 
Set bodyn = bodies1.Item(n+0)   


'Body auswaehlen, neues Part erzeugen und als STL speichern
'---------------------------------------------
Set partDocument1 = CATIA.ActiveDocument
Set selection1 = partDocument1.Selection
selection1.Clear
Set part1 = partDocument1.Part
Set bodies1 = part1.Bodies
selection1.Add bodyn
selection1.Copy
Set documents1 = CATIA.Documents
Set partDocument2 = documents1.Add("Part")
Set partDocument2 = CATIA.ActiveDocument
Set selection2 = partDocument2.Selection
selection2.Clear
Set part2 = partDocument2.Part
Set bodies2 = part2.Bodies
Set body2 = bodies2.Item("Hauptkörper")
selection2.Add body2
selection2.Paste
Set partDocument2 = CATIA.ActiveDocument
partDocument2.ExportData "C:\Users\Alexander\Desktop\STL\Part2.stl", "stl"


'Neues CAT-Part schließen
'--------------------------------------------------
Set specsAndGeomWindow1 = CATIA.ActiveWindow
specsAndGeomWindow1.Close
Set partDocument1 = CATIA.ActiveDocument
partDocument1.Close

next
End Sub


Die ersten beiden Schritte erfüllt das Makro - mittlerweile - problemlos. Das Problem besteht noch im Abspeichern des neu erzeugten Parts, ich würde es gerne nach dem ursprünglichen CAT-Part bzw. dem daraus erzeugten Body benennen (Code: bodyn). Im Moment werden allerdings alle neu erzeugten Parts als Part2 abgespeichert, da ich leider nicht in der Lage bin den "partDocument2.ExportData "C:\Users\Alexander\Desktop\STL\Part2.stl", "stl""-Befehl entsprechend umzuändern.
Habe schon einiges versucht, z.B. *.stl oder auch ganz andere Bausteine. Dabei bin ich allerdings leider grandios gescheitert.

Vielleicht kann mir ja da jemand weiterhelfen. Sollte ja nicht das größte Problem sein.

Vielen Dank schon einmal

Mit freundlichen Grüßen
Alex

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

Thomas Harmening
Ehrenmitglied V.I.P. h.c.
Arbeiter ツ



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

Beiträge: 2897
Registriert: 06.07.2001

NX 10
Win 7

erstellt am: 25. Okt. 2013 17:38    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 xlex 10 Unities + Antwort hilfreich


V5R19VariableWatch.png

 
mach mal ein Watch auf die Variable bodyn,
dann kommst du auch an den Namen,
diesen kannst du dann verwenden um dein Stl vernünftig zu benennen  
Code:

selection1.Add bodyn
Benennung = bodyn.name
selection1.Copy
[...]
Set partDocument2 = CATIA.ActiveDocument
partDocument2.ExportData "C:\Users\Alexander\Desktop\STL\" & Benennung & ".stl", "stl"

Edit: oki, Bernd hat es schöner     - aber da fehlen glaube ich noch 2 " ;-)

[Diese Nachricht wurde von Thomas Harmening am 25. Okt. 2013 editiert.]

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: 11883
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 25. Okt. 2013 17: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 Nur für xlex 10 Unities + Antwort hilfreich

Servus
Willkommen im Forum. Bitte Systeminfo ausfüllen.
ggf hätte man dein Makro viel einfach aufbauen können (ungetestet): im Product die Parts einzeln alleine einblenden und dann Exportieren.
Zu deinem Problem: Du kannst dir den Pfad zusammensetzen:
Code:
dim sPfad as String
sPfad = "C:\Users\Alexander\Desktop\" & bodyn.name & ".stl"
partDocument2.ExportData sPfad, "stl"
Gruß
Bernd

EDIT:  Code korrigiert
@Thomas: kann ich mir die beiden " bei dir ausleihen *grins*
------------------
Warum einfach, wenn es auch kompliziert geht.

[Diese Nachricht wurde von bgrittmann am 25. Okt. 2013 editiert.]

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

Henesli60
Mitglied
Konstrukteur Betriebsmittelbau

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

Beiträge: 8
Registriert: 11.11.2017

erstellt am: 29. Okt. 2023 20:33    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 xlex 10 Unities + Antwort hilfreich

Etwa so?
Multi-Body CATIA-Part to STL+STP
Code:
Sub CATMain()
'Multi-Body CATIA-Part to STL+STP
'*********************************
'Voraussetzung für den korrekten Ablauf Catiav5 Macro
'Sprache: VBScript
'V5 Level V5R21
'Autor: H. Studer
'********************************
' erst alle Bodies ausblenden
'dann den ersten Body einblenden,
'diesen als stl mit dem Namen des Body als STL speichern
'diesen ausblenden
'den nächsten Body einblenden
'diesn auch speichern....usw.
'Meldung ausgeben "alle Bodys wurden gespeichert
'alle Bodys wieder einblenden


Dim Version, makroname, iErr
Version = "0.1"
makroname = "Multi-Body CATIA-Part to STL+STP"
'On Error Resume Next

'Meldung an den Anwender Schritte für korrekte Anwendung***********
'Zeilenumbruch durch '&CHR(13)
MsgBox "Export CATIA-Part Multi-Body zu STL+STP" & Chr(13) & "Speichert in Verzeichnis D:\CAD_Daten\Export_STL-STEP", vbInformation, makroname + " " + Version
'Ende Meldung*****************************************************

'Makro Hauptteil****************************
'V5 wird direkt durch CATIA angesprochen
'z.B. CATIA.ActiveDocument
Dim test As String
test = CATIA.Application.FullName

'**********************************************************************************************
'Schleife über alle Bodies
'--------------------------------------
Dim partDocument1
Dim part1
Dim bodies1
Dim bodyn
Dim n
Set partDocument1 = CATIA.ActiveDocument
Set part1 = partDocument1.Part
Set bodies1 = part1.Bodies
For n = 1 To bodies1.Count - 0
Set bodyn = bodies1.Item(n + 0)

'Body auswaehlen, neues Part erzeugen und als STL speichern
'---------------------------------------------

Dim selection1
Dim Benennung
Dim documents1
Dim documents2
Dim partDocument2
Dim selection2
Dim part2
Dim bodies2
Dim body2
Dim visPropertySet1
'Dim bodies1
Set partDocument1 = CATIA.ActiveDocument
Set selection1 = partDocument1.Selection
selection1.Clear
Set part1 = partDocument1.Part
Set bodies1 = part1.Bodies
selection1.Add bodyn

'alle Bodies ausblenden******************
'***************************************************
Set visPropertySet1 = selection1.VisProperties
selection1.Add bodyn
Set visPropertySet1 = visPropertySet1.Parent
visPropertySet1.SetShow 1
selection1.Clear
Next
'****************************************

' Bodies nacheinander einblenden Speichern STL und wieder ausblenden
'****Funktioniert noch nicht********************************
Set bodies1 = part1.Bodies
For n = 1 To bodies1.Count - 0
Set bodyn = bodies1.Item(n + 0)
Set visPropertySet1 = selection1.VisProperties
selection1.Add bodyn
Set visPropertySet1 = visPropertySet1.Parent
Set partDocument2 = CATIA.ActiveDocument
visPropertySet1.SetShow 0
Benennung = bodyn.Name
Set partDocument2 = CATIA.ActiveDocument
partDocument1.ExportData "D:\CAD_Daten\Export_STL-STEP\" & Benennung & ".stl", "stl"
partDocument1.ExportData "D:\CAD_Daten\Export_STL-STEP\" & Benennung & ".stp", "stp"
selection1.Add bodyn
Set visPropertySet1 = visPropertySet1.Parent
visPropertySet1.SetShow 1
selection1.Clear
Next
'****************************************


'Makro Hauptteil ende *****************

'Fehler Ausgabe***********************
iErr = Err.Number
If (iErr <> 0) Then
MsgBox (Err.Description)
Exit Sub
End If
'Ende Fehlerbehandlung***************************

'Abschlussmeldung an Anwender
MsgBox "Makro ist beendet", vbInformation, makroname + " " + Version

End Sub


Probiert es mal aus und gebt bitte Rückmeldung.

------------------
Langsamer gehts immer, zu schnell wirds schlimmer!

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

Lionel Hutz
Mitglied



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

Beiträge: 410
Registriert: 26.03.2014

CATIA V5 R26

erstellt am: 30. Okt. 2023 07: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 Nur für xlex 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Henesli60:
Etwa so?


Ich verstehe deine Frage nicht.

Etwa so? ;)
Aber zu deinem Code:
Das ganze Dim-Gedöns sollte geschenen sein, bevor deine Schleife beginnt.
Sonst wird in jedem Durchlauf unnötigerweise neu deklariert.
Und alle Variablen, die du per Set belegst, sollten auch vor der Schleife abgefrühstückt werden, es sei denn, du möchtest sie mit jedem Zyklus verändern (wie z.B. bei Set bodyn = bodies1.Item(n + 0)).
Das stört auch alles beim Lesen des Codes.

Folgende Vereinfachung des Codes schlage ich noch vor:

Code:
partDocument1.ExportData "D:\CAD_Daten\Export_STL-STEP\" & Benennung & ".stl", "stl"
partDocument1.ExportData "D:\CAD_Daten\Export_STL-STEP\" & Benennung & ".stp", "stp"

Catia kann die Dateiendung selbstständig vergeben.

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

Henesli60
Mitglied
Konstrukteur Betriebsmittelbau

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

Beiträge: 8
Registriert: 11.11.2017

erstellt am: 30. Okt. 2023 09:01    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 xlex 10 Unities + Antwort hilfreich

Hallo Lionel Hutz,
die meisten meiner Kollegen hätten den ersten Satz gelesen und den Rest überlesen, bzw. nicht aufgenommen.
Danke, dass Du Dir die Zeit genommen hast den Code durch zu lesen und konstruktive Kritik an zu bringen.
Deinen Vorschlag, muss ich prüfen. Hab ohne VBA, jeweils bei meinem System, die Dateiendung löschen oder von Hand eintragen müssen. Das hat mich wohl dazu verleitet. oh nein das war im Original code von xlex.

Wie der Code ja offensichtlich macht, die Funktion war Fokus.
Alles andere ging aussen vor.

Ich hoffe ich konnte einen funktionierenden Code aus den Schnipsel zusammen zu würfeln.
Deshalb ja auch die Frage.

------------------
Langsamer gehts immer, zu schnell wirds schlimmer!

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

Lionel Hutz
Mitglied



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

Beiträge: 410
Registriert: 26.03.2014

CATIA V5 R26

erstellt am: 30. Okt. 2023 10:47    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 xlex 10 Unities + Antwort hilfreich

Das heißt, dein Code funktioniert nicht?
Was macht er denn gut und was nicht?

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



Fachplaner TGA (m/w/d) Kalkulation / Arbeitsvorbereitung

Bei domoplan liegt Leidenschaft für komplexe Bauprojekte in der Luft ? ob es um Projekte für öffentliche Institutionen, für gewerbliche Auftraggeber oder Investoren geht. Wir sind ein regionaler Marktführer im Bereich ?Neubau? und ?Bauen im Bestand? in NRW sowie in den Großräumen Berlin/Brandenburg und Rhein/Main. Darüber hinaus erbringen wir überregional schlüsselfertige Bauleistungen.

Als ...

Anzeige ansehenGebäude-, Versorgungs-, Sicherheitstechnik
husu
Mitglied
Konstrukteur


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

Beiträge: 17
Registriert: 17.09.2001

erstellt am: 30. Okt. 2023 15:31    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 xlex 10 Unities + Antwort hilfreich

Für mich Funktioniert er!

Für den 3D Druck muss ich STL Daten abspeichern mit dem Namen des Bodys.
Die STP sind zu meiner Sicherheit, weil ich die Daten weder ansehen noch in Catia öffnen kann. Kein Recht zu Installation eines Viewer, noch nötige Lizenzen in Catia.

------------------
Konstuktion Betriebsmittel

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