Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Part per Makro auslesen

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:  Part per Makro auslesen (2341 mal gelesen)
V5amSee
Mitglied



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

Beiträge: 105
Registriert: 19.03.2004

XP Prof. x64
V5R16 - V5R19

erstellt am: 04. Mrz. 2005 12: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

Hallo zusammen,

gibt es die Möglichkeit die Körperbenennungen innerhalb eines Parts per Makro auszulesen und in einem Textfile oder las Excel abzuspeichern?
Da dies bei uns gerade ein sehr dringendes Problem ist bin ich für jeden Tip dankbar.

Gruß

------------------
Das Glück bevorzugt den der vorbereitet ist!

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

Jens Hansen
Mitglied
Senior Consult


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

Beiträge: 1055
Registriert: 05.08.2000

Win7
CATIA V5 R19
VB.Net
C#

erstellt am: 04. Mrz. 2005 12:26    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 V5amSee 10 Unities + Antwort hilfreich

Hallo,
man kann die Körpernamen - also die bodies eines parts auslesen, indem man die Body-collection anspricht (Bodies) und die einzeln Lörper über eine Schleife anspricht.

Den Weg dahin bekommt man am besten über den Makrorekorder, indem man einen einzelnen Körper anspricht und z.B. den Partnamen ändert.
Dies wird vom Rekorder aufgezeichnet.
Dann bleibt nur noch die Schleife zu programmieren, die die alle vorhandenen bodies auslist.

Die ganzen Namen in Excel zu bekommen ist etwas schwerer.
Dafür muss Excel angesprochen werden (sieh hierfür http://ww3.cad.de/foren/ubb/Forum137/HTML/001029.shtml).
Wie dann die Zellen gefüllt werden können, ist dann widerum excelprogrammierung - aber auch da hilft der makrorekorder von excel.

Viel erfolg

Jens Hansen

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

V5amSee
Mitglied



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

Beiträge: 105
Registriert: 19.03.2004

XP Prof. x64
V5R16 - V5R19

erstellt am: 04. Mrz. 2005 13:17    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,

danke erstmal für die schnelle Antwort. Leider muss ich sagen das ich ein absolutes Greenhorn bin auf diesem Gebiet.
Hab das mit dem Makrorecorder gleich probiert und folgendes Ergbniss erhalten:

Language="VBSCRIPT"

Sub CATMain()

Dim partDocument1 As Document
Set partDocument1 = CATIA.ActiveDocument

Dim part1 As Part
Set part1 = partDocument1.Part

Dim bodies1 As Bodies
Set bodies1 = part1.Bodies

Dim body1 As Body
Set body1 = bodies1.Item("Oberschale Spoiler")

part1.InWorkObject = body1

End Sub


Soweit so Gut aber wie kann ich jetzt angeben das er mir alle bodies ausliest und mir diese dann in ein Textfile ausgibt?

Danke im voraus!

Gruß

------------------
Das Glück bevorzugt den der vorbereitet ist!

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

CTenschert
Mitglied
Wissenschaftlicher Mitarbeiter


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

Beiträge: 67
Registriert: 04.09.2000

erstellt am: 08. Mrz. 2005 16: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 V5amSee 10 Unities + Antwort hilfreich

Hallo,

Ein Beispiel sagt mehr als 1000 Worte.

### VBA Beispiel ##############################

' ###################################################################
' # Programmiert von: Carl Tenschert <carl.tenschert(at)fh-koeln.de>#
' # Programmiert für: Forum CAD.DE                                  #
' # Datum: 2005.03.08                                              #
' # Beschreibung:                                                  #
' # Beispiel für Auslesen der Körper eines Teils und ausgeben      #
' # als Text Datei                                                  #
' ###################################################################

' ###################################################################
' # Beginn Programm                                                #
' ###################################################################

Sub CATMain()
   
Dim myPartDocument As PartDocument
Set myPartDocument = CATIA.ActiveDocument

Dim Koerper As Bodies
Dim myKoerper As Body

Set Koerper = myPartDocument.Part.Bodies
   
    Dim oFileOut As File
   
    If CATIA.FileSystem.FileExists("c:\temp\test.txt") Then
        Set oFileOut = CATIA.FileSystem.GetFile("c:\temp\test.txt")
    Else
        Set oFileOut = CATIA.FileSystem.CreateFile("c:\temp\test.txt", False)
    End If
    Dim oStream As TextStream
    Set oStream = oFileOut.OpenAsTextStream("ForAppending")
   

For Each myKoerper In Koerper
   
    oStream.Write (CStr(myKoerper.Name & Chr(10)))
   
Next
oStream.Close

End Sub

### Ende VBA Beispiel #####################

------------------
Mit freundlichem Gruß von Carl Tenschert

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

V5amSee
Mitglied



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

Beiträge: 105
Registriert: 19.03.2004

XP Prof. x64
V5R16 - V5R19

erstellt am: 09. Mrz. 2005 10: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

@ CTenschert

Danke vielmals das war genau das was ich gesucht hab.

------------------
Das Glück bevorzugt den der vorbereitet ist!

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

V5amSee
Mitglied



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

Beiträge: 105
Registriert: 19.03.2004

XP Prof. x64
V5R16 - V5R19

erstellt am: 09. Mrz. 2005 15: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

So da hab ich mich wohl doch zu früh gefreut.
Hab es jetzt fast so wie ich mir das vorstelle. Allerdings ist es so das ich auch einige geöffnete Körper hab unter dennen sich auch wieder Körper befinden. Über den Makorecorder hab ich herausgefunden das diese als Hybridbodies definiert sind. Hab ich natürlich auch gleich ins Script eingebaut funktioniert auch soweit. Er liest mir aber immer nur die Übergeordneten Hybridbodies aus unter die darunter liegenden nicht. Hab mich auch die Hilfe geangelt aber auch nichts wirklich pasendes gefunden.
Hat jemand eine Idee wie ich das löse? Hier mein bisheriges Versuch:

Sub CATMain()
 
Dim myPartDocument As PartDocument
Set myPartDocument = CATIA.ActiveDocument

Dim Koerper As Bodies
Dim myKoerper As Body


Set Koerper = myPartDocument.Part.Bodies

 
    Dim oFileOut As File
 
    If CATIA.FileSystem.FileExists("c:\temp\Partstruktur.txt") Then
        Set oFileOut = CATIA.FileSystem.GetFile("c:\temp\Partstruktur.txt")
    Else
        Set oFileOut = CATIA.FileSystem.CreateFile("c:\temp\Partstruktur.txt", False)
    End If
    Dim oStream As TextStream
    Set oStream = oFileOut.OpenAsTextStream("ForAppending")
 

For Each myKoerper In Koerper
 
    oStream.Write (CStr(myKoerper.Name & Chr(10)))
 
Next
oStream.Close


Set Koerper1 = myPartDocument.Part.HybridBodies
 

 
    If CATIA.FileSystem.FileExists("c:\temp\Partstruktur.txt") Then
        Set oFileOut = CATIA.FileSystem.GetFile("c:\temp\Partstruktur.txt")
    Else
        Set oFileOut = CATIA.FileSystem.CreateFile("c:\temp\Partstruktur.txt", False)
    End If

    Set oStream = oFileOut.OpenAsTextStream("ForAppending")
 

For Each myKoerper1 In Koerper1
 
    oStream.Write (CStr(myKoerper1.Name & Chr(10)))
 
Next
oStream.Close

Dim HybridBodies As hybridBody
Set hybridBodyColl = myPartDocument.Part.HybridBodies

If CATIA.FileSystem.FileExists("c:\temp\Partstruktur.txt") Then
        Set oFileOut = CATIA.FileSystem.GetFile("c:\temp\Partstruktur.txt")
    Else
        Set oFileOut = CATIA.FileSystem.CreateFile("c:\temp\Partstruktur.txt", False)
    End If

    Set oStream = oFileOut.OpenAsTextStream("ForAppending")
 

For Each hybridbody In hybridBodyColl
 
    oStream.Write (CStr(hybridbody.Name & Chr(10)))
 
Next
oStream.Close


End Sub

Danke mal wieder im voraus für eure Hilfe.


Gruß Thomas

------------------
Das Glück bevorzugt den der vorbereitet ist!

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

CTenschert
Mitglied
Wissenschaftlicher Mitarbeiter


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

Beiträge: 67
Registriert: 04.09.2000

erstellt am: 09. Mrz. 2005 16: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 V5amSee 10 Unities + Antwort hilfreich

Hallo,

Ich habe das ganze über eine Sub gelöst.
Wenn Du immer in die gleiche Datei schreibst, brauchst Du die nicht jedes mal neu öffnen und schliesen.
Ok, bei Logfiles mache ich das auch um Infos bei Crashes zu finden ,-)


############ VBA Beispiel #######################

' ###################################################################
' # Programmiert von: Carl Tenschert <carl.tenschert(at)fh-koeln.de>#
' # Programmiert für: Forum CAD.DE                                  #
' # Datum: 2005.03.08                                              #
' # Catia Ver.: V5 R12 SP4                                          #
' # Beschreibung:                                                  #
' # Beispiel für Auslesen der Körper eines Teils und ausgeben      #
' # als Text Datei                                                  #
' ###################################################################
Public oStream As TextStream

' ###################################################################
' # Beginn Programm                                                #
' ###################################################################

Sub CATMain()
 
Dim myPartDocument As PartDocument
Set myPartDocument = CATIA.ActiveDocument

Dim Koerper As Bodies
Dim myKoerper As Body
Dim oKoerper As HybridBodies
Dim myOKoerper As HybridBody

Set Koerper = myPartDocument.Part.Bodies
Set oKoerper = myPartDocument.Part.HybridBodies
    Dim oFileOut As File
    If CATIA.FileSystem.FileExists("c:\temp\test.txt") Then
        Set oFileOut = CATIA.FileSystem.GetFile("c:\temp\test.txt")
    Else
        Set oFileOut = CATIA.FileSystem.CreateFile("c:\temp\test.txt", False)
    End If
   
    Set oStream = oFileOut.OpenAsTextStream("ForAppending")
 
For Each myKoerper In Koerper
    oStream.Write (CStr(myKoerper.Name & Chr(10)))
Next
For Each myOKoerper In oKoerper
    Call ListsubOKoerber(myOKoerper)
Next

oStream.Close

End Sub
Sub ListsubOKoerber(myOKoerper As HybridBody)
Dim mySubOKoerper As HybridBody
oStream.Write (CStr(myOKoerper.Name & Chr(10)))

For Each mySubOKoerper In myOKoerper.HybridBodies
   
    Call ListsubOKoerber(mySubOKoerper)
   
Next
End Sub
############################################

------------------
Mit freundlichem Gruß von Carl Tenschert

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

V5amSee
Mitglied



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

Beiträge: 105
Registriert: 19.03.2004

XP Prof. x64
V5R16 - V5R19

erstellt am: 11. Mrz. 2005 09:37    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


Problem.ZIP

 
@ CTenschert

Danke erstmal für die Schnelle Antwort. Hab mich natürlich gleich dran gemacht es umzusetzen. Aber siehe da meine nicht vorhandenen Kenntnisse der Makro Programmierung zeigen mir wieder recht schnell die Grenzen auf. Das Prblem besteht weiterhin darin das die unter einem HybridBody liegenden HybridBodies nicht gelistet werden. Ich hab mal einen Screenshot die AusgabeDatei sowie das Script angehängt um das Problem zu verdeutlichen.
Hab mich auch noch mal durch die Hilfe geangelt aber nichts brauchbares gefunden.
Bin für jeden weiteren Tip dankbar!

Gruß Thomas

------------------
Das Glück bevorzugt den der vorbereitet ist!

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

CTenschert
Mitglied
Wissenschaftlicher Mitarbeiter


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

Beiträge: 67
Registriert: 04.09.2000

erstellt am: 11. Mrz. 2005 11:15    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 V5amSee 10 Unities + Antwort hilfreich


Test.zip

 
Hallo,

Wir habe die ganze Zeit an einander vorbei "geredet" ;-).

Ich habe mit VBA Programmiert, und das geht leider nur unter Windows ;-(.

Wenn Du nicht Unix brauchst verwende den VBA Editor , damit geht es wesentlich einfacher. Das Makro habe ich gerade auf VBscript geändert, viel auskommentiert, und die Sub in eine Function geändert.

------------------
Mit freundlichem Gruß von Carl Tenschert

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

V5amSee
Mitglied



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

Beiträge: 105
Registriert: 19.03.2004

XP Prof. x64
V5R16 - V5R19

erstellt am: 11. Mrz. 2005 13:27    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

@ CTenschert

Sieht fast so aus als ob wir da wirklich aneinander vorbei sind.
Das ist jetzt auf jeden Fall genau das was ich gebraucht hab. Danke Danke Danke!!!!  Jetzt nur noch eine kleine Frage. Ich hätte gerne das das Texfile auf dem Desktop des angemeldeten Users gespeichert wird. Ich hab´s bisher wie folgt versucht:

If CATIA.FileSystem.FileExists("C:\Dokumente und Einstellungen\%username%\Desktop\Partstruktur.txt") Then
        Set oFileOut = CATIA.FileSystem.GetFile("C:\Dokumente und Einstellungen\%username%\Desktop\Partstruktur.txt")
    Else
        Set oFileOut = CATIA.FileSystem.CreateFile("C:\Dokumente und Einstellungen\%username%\Desktop\Partstruktur.txt", False)

Aber wieder mal ohne Erfolg. Kann doch eigentlich nicht so schwer sein oder?

------------------
Das Glück bevorzugt den der vorbereitet ist!

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

V5amSee
Mitglied



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

Beiträge: 105
Registriert: 19.03.2004

XP Prof. x64
V5R16 - V5R19

erstellt am: 11. Mrz. 2005 13: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

Hat sich erledigt.

Bin wohl ein bißchen auf´m Schlauch gestanden. Hab jetzt einfach %username% durch All Users ersetzt und siehe da es klappt.

@CTenschert
Danke nochmals für die superschnelle Hilfe

Gruß thomas

------------------
Das Glück bevorzugt den der vorbereitet ist!

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