Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Strukturbaum aus CATIA in VB einlesen

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:  Strukturbaum aus CATIA in VB einlesen (9205 mal gelesen)
Timberwolve
Mitglied



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

Beiträge: 233
Registriert: 21.07.2006

erstellt am: 21. Jul. 2006 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

Hallo Leute,

ich habe schon längere Zeit versucht den Strukturbaum in CATIA auszulesen und ihn über die Funktion Tree-View in VB einzulesen. Jedoch ist es mir bis Dato nicht gelungen. Das Tree-View muss separat gefüllt werden, sprich man muss die entsprechenden Product-Ebenen auslesen. Und hier habe ich schwierigkeiten. Hat von euch jemand schonmal was derartiges gemacht.

Über schnelle Hilfe wäre ich dankbar.

Grüße

------------------
Wenn alle Stricke reissen, nehm ich ein Drahtseil

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

Augustiner
Mitglied
Konstrukteur


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

Beiträge: 188
Registriert: 02.12.2005

HP Workstation
Windows XP Professional
Visual Studio 2005 Professional
CATIA V5 R14SP5 & R17SP3

erstellt am: 21. Jul. 2006 10:58    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 Timberwolve 10 Unities + Antwort hilfreich

Hallo

VB6 oder .net??
Ich arbeite gerade an sowas in .net . Bis jetzt kann ich auch nur den gesamten inhalt des Strukturbaumes als eine Liste Anzeigen.

Gruß Andi

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

dr
Mitglied
CAD-/PLM-Entwickler und -Berater


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

Beiträge: 87
Registriert: 30.10.2001

erstellt am: 21. Jul. 2006 10:58    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 Timberwolve 10 Unities + Antwort hilfreich

Ist nicht getestet, aber meinst Du sowas in der Art?

Code:

Option Base 1
Sub CATMain()

On Error Resume Next

' Some variable declarations
Dim doc As Document
Dim rootProduct As Product
Dim rootName As String

Set doc = CATIA.ActiveDocument
If doc Is Nothing Then
  MsgBox "Please load a product - THEN activate this function!"
  Return
End If


Set rootProduct = doc.Product

visitProduct rootProduct

End Sub


Sub visitProduct(prod As Product)

On Error Resume Next

Dim children As Products
Set children = prod.Products

Dim i As Integer
Dim child As Product
Dim number As String

  number = prod.Name
  MsgBox "visiting " & number

For i = 1 To children.Count
  Set child = children.Item(i)

  visitProduct child
Next

End Sub


------------------
--
Danny Reinhold
Reinhold Software Services

[Diese Nachricht wurde von dr am 21. Jul. 2006 editiert.]

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

dr
Mitglied
CAD-/PLM-Entwickler und -Berater


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

Beiträge: 87
Registriert: 30.10.2001

erstellt am: 21. Jul. 2006 10:59    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 Timberwolve 10 Unities + Antwort hilfreich

Ach ja - der Code oben füllt nix, sondern traversiert lediglich
die Produktstruktur und gibt die Nummern der Subparts/products aus...

Ich hatte Dich so verstanden, dass genau das Dein Problem ist?

------------------
--
Danny Reinhold
Reinhold Software Services

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

Timberwolve
Mitglied



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

Beiträge: 233
Registriert: 21.07.2006

erstellt am: 21. Jul. 2006 11:03    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

Also nochmal zur Ergänzung:

1.) Ich arbeite mit Visual Basic 6

2.) Der Strukturbaum, wie ich ihn in CATIA sehe (Product) soll im Tree-View abgebildet werden. Es handelt sich nur um Products und Parts, Komponenten werden nicht benötigt.

Danke

------------------
Wenn alle Stricke reissen, nehm ich ein Drahtseil

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

Timberwolve
Mitglied



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

Beiträge: 233
Registriert: 21.07.2006

erstellt am: 21. Jul. 2006 11:05    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

zu dr.

mmh dein Beispiel sucht nur nach Products, es kann jedoch sein, das auf erster Stufe z.B ein part und zwei Products stehen usw. also muss eigentlich ein Mischbetrieb funktionieren. Nameskonventionen kann ich nicht verwenden, da das ganze variabel bleiben soll. Also nicht auf ein product fixiert.

------------------
Wenn alle Stricke reissen, nehm ich ein Drahtseil

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

dr
Mitglied
CAD-/PLM-Entwickler und -Berater


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

Beiträge: 87
Registriert: 30.10.2001

erstellt am: 21. Jul. 2006 11: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 Nur für Timberwolve 10 Unities + Antwort hilfreich

Nein, das Beispiel zeigt auch Parts an.
Sollte es jedenfalls...

Man kann sich ein Part als ein Product ohne
Kinder vorstellen...

------------------
--
Danny Reinhold
Reinhold Software Services

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

dr
Mitglied
CAD-/PLM-Entwickler und -Berater


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

Beiträge: 87
Registriert: 30.10.2001

erstellt am: 21. Jul. 2006 11:20    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 Timberwolve 10 Unities + Antwort hilfreich

Habe es gerade getestet.
Lief nicht, das es keine Methode GetPartNumber gibt. 

Ich habe das Beispiel oben jetzt korrigiert - läuft nun
und zeight auch Parts an.

Für einen Blindflug war die erste Version aber schon
gar nicht mal schlecht 

------------------
--
Danny Reinhold
Reinhold Software Services

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

Timberwolve
Mitglied



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

Beiträge: 233
Registriert: 21.07.2006

erstellt am: 21. Jul. 2006 11:34    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

Habe es auch getestet, musst jedoch nicht die Methode .Name benutzen. Geht auch einfach .PartNumber. ist sicherer.

Mmh ja das könnte so funktionieren. hab nur das Problem mit den Productstufen. das kann ja beliebig verschachtelt sein

------------------
Wenn alle Stricke reissen, nehm ich ein Drahtseil

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

dr
Mitglied
CAD-/PLM-Entwickler und -Berater


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

Beiträge: 87
Registriert: 30.10.2001

erstellt am: 21. Jul. 2006 11: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 Nur für Timberwolve 10 Unities + Antwort hilfreich

Zitat:
Mmh ja das könnte so funktionieren. hab nur das Problem mit den Productstufen. das kann ja beliebig verschachtelt sein


Welches Problem meinst Du?

------------------
--
Danny Reinhold
Reinhold Software Services

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

Timberwolve
Mitglied



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

Beiträge: 233
Registriert: 21.07.2006

erstellt am: 21. Jul. 2006 11:51    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


Strukturbaum.jpg

 
Dein Makro sucht die Parts bzw. Products nacheinander ab, ich kann jedoch nicht feststellen auf welcher Strukturebene ich mich befinde.
Schau dir das Bild an das ich angehängt habe.
Ich muss dann später eigentlich so vorgehen das ich sage:

1. Auslesen der Products bzw. Parts auf der ersten Stufe, dann die jeweiligen Knoten im TreeView erzeugen.
2. Auslesen der Unterstrukturen usw.

Das Ganze kann ja beliebig sein.

------------------
Wenn alle Stricke reissen, nehm ich ein Drahtseil

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

dr
Mitglied
CAD-/PLM-Entwickler und -Berater


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

Beiträge: 87
Registriert: 30.10.2001

erstellt am: 21. Jul. 2006 11:55    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 Timberwolve 10 Unities + Antwort hilfreich

Das kannst Du auf verschiedene Arten erreichen,
am einfachsten vermutlich so:

Code:

Option Base 1
Sub CATMain()
On Error Resume Next

' Some variable declarations
Dim doc As Document
Dim rootProduct As Product

Set doc = CATIA.ActiveDocument
If doc Is Nothing Then
  MsgBox "Please load a product - THEN activate this function!"
  Return
End If


Set rootProduct = doc.Product

visitProduct rootProduct, nothing, 1

End Sub


Sub visitProduct(prod As Product, parent as product, level as integer)

On Error Resume Next

Dim children As Products
Set children = prod.Products

Dim i As Integer
Dim child As Product
Dim number As String

rem hier befinden wir uns in ebene "level"
rem das parent des aktuellen produkt ist
rem entweder "nothing" (dann befinden wir
rem uns gerade auf oberster ebene) oder "parent".
rem das aktuelle kind is prod
rem An dieser Stelle kannst Du also einfach den aktuellen
rem Knoten an die richtige Stelle im TreeView
rem einbauen...

  number = prod.Name
  MsgBox visiting " & number

For i = 1 To children.Count
  Set child = children.Item(i)

  visitProduct child, prod, level+1
Next

End Sub



Noch einfacher ist es übrigens, wenn Du anstelle des "parent"
Products einfach den aktuellen Knoten des TreeViews übergibst (nehme
ich jedenfalls an).
Dann muss man gar nicht mehr überlegen, wo man den
aktuellen Knoten einbauen muss.

Die Struktur wird übrigens nicht einfach "der Reihe nach"
durchwühlt. Die Struktur ist implizit durch die
Rekursiven aufrufe von "visitProduct" durchaus noch
vorhanden.
Die Übergabe von Zusatzinformationen (wie hier beispielsweise
"level" und "parent") macht die Struktur wieder explizit
greifbar.

Das von Dir beschriebene Vorgehen bezeichnet man übrigens
als "Breitensuche", da man zunächst einmal alle Objekte einer
Ebene besucht und erst dann tiefer steigt.
In der Regel ist es bei CAD-Systemen aber einfacher eine
sogenannte Tiefensuche durchzuführen (das macht auch mein
Code oben). Man muss dann halt nur etwas rekursiver
denken - aber Code und Speicherverbrauch sind in der
Regel kürzer, kleiner und einfacher...

Poste doch mal Deinen aktuellen TreeView Code...

------------------
--
Danny Reinhold
Reinhold Software Services

[Diese Nachricht wurde von dr am 21. Jul. 2006 editiert.]

[Diese Nachricht wurde von dr am 21. Jul. 2006 editiert.]

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

Timberwolve
Mitglied



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

Beiträge: 233
Registriert: 21.07.2006

erstellt am: 21. Jul. 2006 12: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

Ok danke ich werds mal versuchen. Steh grad ehrlich gesagt ein bischen auf dem Schlauch aber hat mir zumindest schonmal ziemlich weitergeholfen.

------------------
Wenn alle Stricke reissen, nehm ich ein Drahtseil

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

Timberwolve
Mitglied



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

Beiträge: 233
Registriert: 21.07.2006

erstellt am: 21. Jul. 2006 12: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

Das ist der Quellcode des Treeview bisher. Jedoch ist hier noch nichts variabel, ich bin mit dem TreeView noch nicht sehr vertraut, deswegen wollte ich es erstmal von Hand befüllen. er erstellt jetzt erstmal 5 Vorzugsknoten und durch Schleifen dann jeweils 3 Unterknoten. Jetzt muss ich dein Makro nur noch darauf adaptieren.
----------------------------------------------------------------

Private Sub Form_Load()
    Dim nItem As Long
    Dim nKey As String
    Dim i As Integer
   
    Me.Show
    With trvCATIA.Nodes
        For nItem = 1 To 5
            nKey = Chr$(64 + nItem)
            .Add(, , nKey, nKey).Expanded = True
            For i = 1 To 3
                zAddSubNodes nKey, nKey & i, 2
            Next 'i
        Next
    End With
End Sub

Private Sub zAddSubNodes(ParentKey As String, ThisKey As String, Depth As Integer)
    Dim i As Integer
   
    trvCATIA.Nodes.Add(ParentKey, tvwChild, ThisKey, ThisKey).Expanded = True
    If Depth Then
        For i = 1 To 3
            zAddSubNodes ThisKey, ThisKey & i, Depth - 1
        Next 'i
    End If
End Sub

------------------
Wenn alle Stricke reissen, nehm ich ein Drahtseil

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

dr
Mitglied
CAD-/PLM-Entwickler und -Berater


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

Beiträge: 87
Registriert: 30.10.2001

erstellt am: 21. Jul. 2006 12: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 Timberwolve 10 Unities + Antwort hilfreich

Ich möchste Dich nicht um das Vergnügen bringen, selbst
eine Lösung zu finden, aber so könnte man's machen:

Code:

Option Base 1

Sub CATMain()

On Error Resume Next

Dim f As UserForm1
Dim tree As TreeView

Set f = New UserForm1
Set tree = f.TreeView1

' Some variable declarations
Dim doc As Document
Dim rootProduct As Product

Set doc = CATIA.ActiveDocument
If doc Is Nothing Then
  MsgBox "Please load a product - THEN activate this function!"
  Return
End If

Set rootProduct = doc.Product

visitProduct rootProduct, "", tree

f.Show

End Sub

Sub visitProduct(prod As Product, parentKey As String, ByRef tree As TreeView)

On Error Resume Next

Dim children As Products
Set children = prod.Products

Dim i As Integer
Dim child As Product
Dim key As String
Dim label As String

label = prod.Name
key = parentKey & "###" & prod.Name

' MsgBox "key: " & key & "  parent: " & parentKey

If parentKey = "" Then
  tree.Nodes.Add(, , key, label).Expanded = True
Else
  tree.Nodes.Add(parentKey, tvwChild, key, label).Expanded = True
End If


For i = 1 To children.Count
  Set child = children.Item(i)

  visitProduct child, key, tree
Next

End Sub


------------------
--
Danny Reinhold
Reinhold Software Services

[Diese Nachricht wurde von dr am 21. Jul. 2006 editiert.]

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

Timberwolve
Mitglied



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

Beiträge: 233
Registriert: 21.07.2006

erstellt am: 21. Jul. 2006 13:05    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

Respekt, funktioniert einwandfrei.
Weisst du vielleicht wo es eine gute Dokumentation zum Tree-View selbst gibt??
Hab im Netz bisher nichts gescheites gefunden.

Danke für die Hilfe

------------------
Wenn alle Stricke reissen, nehm ich ein Drahtseil

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

dr
Mitglied
CAD-/PLM-Entwickler und -Berater


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

Beiträge: 87
Registriert: 30.10.2001

erstellt am: 21. Jul. 2006 13:13    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 Timberwolve 10 Unities + Antwort hilfreich

Hmmm... Ich habe in die MSDN geguckt.
Aber viel steht da eigentlich auch nicht drin.

Vielleicht helfen Dir ja diese Links (habe nur
oberflächlich raufgesehen):
http://www.developerfusion.co.uk/show/77/ (Englisch) http://www.activevb.de/tipps/vb6tipps/tipp0282.html http://www.aboutvb.de/khw/artikel/khwtreeviewcontents.htm http://vb-tec.de/tvwnodes.htm http://btmtz.mvps.org/treeview/ (Englisch)

------------------
--
Danny Reinhold
Reinhold Software Services

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

Timberwolve
Mitglied



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

Beiträge: 233
Registriert: 21.07.2006

erstellt am: 21. Jul. 2006 13:46    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

jetzt hab ich ein unerklärliches Problem.

Das Programm habe ich als Exe kompiliert. und wollte es eigentlich über ein "CATScript" aus CATIA heraus starten.
Dies hat so lang funktioniert bis ich die Routine mit dem TreeView eingebaut habe, nun startet es nicht mehr und CATIA stürzt ab. Hab es auch schon mit einem VBA versucht. geht auch nicht.

Das seltsame ist, wenn ich CATIA geöffnet habe und starte das Programm aus dem Explorer heraus mit doppelklick funktioniert es wunderbar. ???????????????

Jetzt bin ich mit meinem Latein am ende

------------------
Wenn alle Stricke reissen, nehm ich ein Drahtseil

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

dr
Mitglied
CAD-/PLM-Entwickler und -Berater


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

Beiträge: 87
Registriert: 30.10.2001

erstellt am: 21. Jul. 2006 13:54    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 Timberwolve 10 Unities + Antwort hilfreich

Lass doch mal den Quelltext sehen.
(Oder poste das gezippt Projekt...)

Meine Vermutung:
Irgendwo im Programm musst Du Dir ja das "Catia" Objekt
holen.

Ich nehme an, dass Du dafür "GetObject" verwendest.
Wenn ein Catia aus Deinem Programm heraus gestartet werden
muss, musst Du aber "CreateObject" benutzen...

------------------
--
Danny Reinhold
Reinhold Software Services

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

Timberwolve
Mitglied



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

Beiträge: 233
Registriert: 21.07.2006

erstellt am: 21. Jul. 2006 14:16    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

Wie gesagt ohne TreeView hat es gefunzt. Ich will jedoch nicht das VB CATIA startet, soll auch nicht notwendig sein, da der Anwender das Programm über ein Symbol in CATIA selbst starten soll und nicht vom Explorer aus. Deswegen will und brauch ich auch kein CreateObject.

Private Sub Form_Load()

On Error Resume Next

Dim CATIA As Object
Set CATIA = GetObject(, "CATIA.Application")

If CATIA Is Nothing Then

    MsgBox "Keine CATIA Sitzung gefunden", vbInformation, "Keine CATIA Sitzung"
    Unload Me
Else

'Hier kommt dann die TreeView Operation
End If

End Sub


------------------
Wenn alle Stricke reissen, nehm ich ein Drahtseil

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

dr
Mitglied
CAD-/PLM-Entwickler und -Berater


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

Beiträge: 87
Registriert: 30.10.2001

erstellt am: 21. Jul. 2006 14:21    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 Timberwolve 10 Unities + Antwort hilfreich

Ok, dann fehlt vermutlich eine DLL.
Sind in dem Verzeichnis, in dem die .EXE erstellt wird,
irgendwelche DLLs vorhanden?

Falls ja, füge das Verzeichnis doch mal Deiner PATH
Umgebungsvariable hinzu und starte Catia dann nochmal neu.

Ich weiss jetzt nicht, in welcher DLL die TreeView
Komponente liegt, aber ich nehme an, dass diese DLL
gefunden wird, wenn Du die .exe direkt im Explorer
startest und eben nicht, wenn Du über ein CATScript startest...

Das deutet wie gesagt, darauf hin, dass eine DLL gesucht
wird, die direkt im Verzeichnis der .exe liegt.

------------------
--
Danny Reinhold
Reinhold Software Services

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

Timberwolve
Mitglied



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

Beiträge: 233
Registriert: 21.07.2006

erstellt am: 21. Jul. 2006 14: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

Funzt auch nicht. Hab die comctl32.dll und comctl32.ocx in das Verzeichnis der Anwendung gestellt. Passiert jedoch nicht mehr als zuvor. mmh ärgerlich

------------------
Wenn alle Stricke reissen, nehm ich ein Drahtseil

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

dr
Mitglied
CAD-/PLM-Entwickler und -Berater


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

Beiträge: 87
Registriert: 30.10.2001

erstellt am: 01. Aug. 2006 12:24    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 Timberwolve 10 Unities + Antwort hilfreich

Hi,

Hast Du das Problem mittlerweile lösen können?

Ist immer interessant mögliche Ursachen für solche Probleme zu kennen (hilft vor allem dann, wenn technisch etwas unbedarftere Anwender Supportanfragen der Art 'Läuft nicht - was soll ich machen?' stellen)...

------------------
--
Danny Reinhold
Reinhold Software Services

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

Timberwolve
Mitglied



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

Beiträge: 233
Registriert: 21.07.2006

erstellt am: 01. Aug. 2006 13: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

Naja lösen nicht unbedingt,

Starte das Programm nun aus einem *.catvba Projekt heraus.
Da funktioniert es mit dem glitzegleichen Code ohne Probleme.
Aber warum es aus dem CatScript nicht startet ist mir leider immernoch ein Rätsel.

Beim CatScript scheint die Exe erst loszulauffen wenn ich dann das hängen gebliebene CATIA über den Task-Manager kille.

Aber warum das passiert weiss ich nicht genau.

------------------
Wenn alle Stricke reissen, nehm ich ein Drahtseil

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

Timberwolve
Mitglied



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

Beiträge: 233
Registriert: 21.07.2006

erstellt am: 02. Aug. 2006 08: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

Ups stimmt ja gar nicht was ich da gelesen habe.
Das neue Script läuft mit einem Shell Befehl. Mit Catvba und dem ExecuteProcessus Befehl hat das ganze auch nicht gefunzt.

Das nur als Info

------------------
Wenn alle Stricke reissen, nehm ich ein Drahtseil

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

weissda
Mitglied
ingenieur


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

Beiträge: 48
Registriert: 04.08.2006

erstellt am: 07. Aug. 2006 11:19    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 Timberwolve 10 Unities + Antwort hilfreich


SpecTree.JPG

 
Hallo

Habe eure Diskussion mitverfolgt und frecherweise den Navigations-Code für den CATIA-Strukturbaum auch ausprobiert. Mein Problem allerdings ist, dass der Code für das Produkt keine 'Children' findet, d.h. er bleibt beim Produkt stehen und sucht den rest des Baumes gar nicht ab. Woran das wohl liegen könnte??
Ich habe ein Bild meines Baums angehängt

Gruss, Daniel.

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

dr
Mitglied
CAD-/PLM-Entwickler und -Berater


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

Beiträge: 87
Registriert: 30.10.2001

erstellt am: 07. Aug. 2006 12: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 Nur für Timberwolve 10 Unities + Antwort hilfreich

Hallo Daniel,

Zitat:
Original erstellt von weissda:
Mein Problem allerdings ist, dass der Code für das Produkt keine 'Children' findet, d.h. er bleibt beim Produkt stehen und sucht den rest des Baumes gar nicht ab. Woran das wohl liegen könnte??

Das liegt daran, dass wir über verschiedene Dinge reden.
Mein Makro traversiert die Produktstruktur, also die Beziehung von Products zu Subproducts und Parts.

Das, was Du scheinbar machen möchtest, ist eine Analyse des Featurebaums.
Das macht man anders.

Leider habe ich momentan etwas wenig Zeit und kann daher nicht mit einem Beispiel aufwarten. Vielleicht kann ich aber nachher noch was basteln...

Ich bin ja immer neugierig... Wofür brauchst Du eine solche Analyse denn?

------------------
--
Danny Reinhold
Reinhold Software Services

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

weissda
Mitglied
ingenieur


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

Beiträge: 48
Registriert: 04.08.2006

erstellt am: 10. Aug. 2006 13: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 Timberwolve 10 Unities + Antwort hilfreich

Hallo Danny

Ich möchte versuchen die Parameter und wenn möglich die Historie der Parts aus dem CATIA-Strukturbaum rauszulesen. Ich hatte ja ebenfalls eine Frage wegen der Wahl von CAA oder VB für diese Aufgabe gepostet.
Ich habe inzwischen rausgefunden, dass die parameter des gesamten Produktes mit VB eingelesen werden können und da auch grad der 'Pfad', bzw. die Struktur des Baumes enthalten ist - das hilft schon weiter. Im Moment muss ich prüfen ob dies schon ausreicht oder ob ich noch zusätzliche Infos brauche.
Danke für die Antwort.

Gruss, Daniel.

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

weissda
Mitglied
ingenieur


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

Beiträge: 48
Registriert: 04.08.2006

erstellt am: 10. Aug. 2006 13: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 Nur für Timberwolve 10 Unities + Antwort hilfreich

P.s. wenn du irgendwann mal dazu kommst, mir trotzdem noch ein Bsp. für die Analyse des Feature-Baumes zu schicken, bin ich natürlich nach wie vor dankbar... :-)

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

dr
Mitglied
CAD-/PLM-Entwickler und -Berater


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

Beiträge: 87
Registriert: 30.10.2001

erstellt am: 11. Aug. 2006 14:03    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 Timberwolve 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von weissda:
P.s. wenn du irgendwann mal dazu kommst, mir trotzdem noch ein Bsp. für die Analyse des Feature-Baumes zu schicken, bin ich natürlich nach wie vor dankbar... :-)

Ich werde mal sehen, ob ich Anfang der nächsten Woche etwas Zeit finde.
Momentan muss ich leider viel tun, damit ich mal wieder einige Rechnungen schreiben kann. Ist aber ja auch nicht das schlechteste... 

------------------
--
Danny Reinhold
Reinhold Software Services

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

Avallyn
Mitglied
Auszubildende Fachinformatikerin AE

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

Beiträge: 1
Registriert: 17.09.2008

Win XP, CATIA V5 R18

erstellt am: 17. Sep. 2008 14:30    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 Timberwolve 10 Unities + Antwort hilfreich

Hallo an alle hier,

da ich mich im Rahmen meiner Ausbildung in letzter Zeit auch mit dem Auslesen des Strukturbaums beschäftigen musste, waren mir die bisherigen Beiträge eine große Hilfe.

Danke! :-)

Mittlerweile habe ich eine Code-sparendere Variante entwickelt, die aber genau das Gleiche macht (Ich hoffe es fühlt sich jetzt niemand auf den Schlips getreten, will nur helfen Code zu sparen, muss ja auch jeder für sich selbst wissen):

Code:

Private Sub Form_Load()

    On Error Resume Next

    'Erzeugen des Ankerobjekts
    Dim CATIA As INFITF.Application
    Set CATIA = GetObject(, "CATIA.Application")
   
    If CATIA Is Nothing Then
      MsgBox "Keine CATIA Sitzung gefunden", vbInformation, _
      "Keine CATIA Sitzung"
      Unload Me
    Else
      Call CreateTreeView(CATIA.ActiveDocument.Product, _
      TreeViewCATIA) 'TreeViewCATIA ist meine zu erzeugende TreeView
    End If

End Sub

Private Sub CreateTreeView(p As Product, ByRef tree As TreeView, _
                          Optional parentKey As String)

    On Error Resume Next

    If (tree.Nodes.Count = 0) Then
        'Die RootNode anlegen
        Call tree.Nodes.Add(, , p.Name, p.PartNumber & " " & p.Name)
    Else
        'Die SubNode oder SubSubNode anlegen
        Call tree.Nodes.Add(parentKey, tvwChild, p.Name, _
                            p.PartNumber & " " & p.Name)
    End If

    Dim i As Integer
    For i = 1 To p.Products.Count
        Call CreateTreeView(p.Products.Item(i), tree, p.Name)
    Next i

End Sub
 


Ich hoffe ich kann damit auch allen Nachfolgenden mit gleichem Problem helfen.

Viele Grüße :-)

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