| |
| KISTERS 3DViewStation: Effektiver Know-how-Schutz von sensiblen Produktdaten, eine Pressemitteilung
|
Autor
|
Thema: CATIA CONTEXT LINK auslesen (9363 mal gelesen)
|
alias Mitglied CAD Betreuer
Beiträge: 282 Registriert: 25.09.2003
|
erstellt am: 09. Apr. 2010 11:04 <-- editieren / zitieren --> Unities abgeben:
Hallo, bin eigentlich in der Smarteam Ecke zu Hause, benötige aber dazu eine CATIA Info: Gibt es eine Möglichkeit (Programmtechnisch) in CATIA in einem Produkt vorhandene Context Links auszulesen ? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Ehrenmitglied V.I.P. h.c. Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 09. Apr. 2010 12:44 <-- editieren / zitieren --> Unities abgeben: Nur für alias
|
tomtom1972 Mitglied dipl ing maschinenbau
Beiträge: 608 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 12. Apr. 2010 07:18 <-- editieren / zitieren --> Unities abgeben: Nur für alias
Hallo alias, du kannst die Context Links sehr wohl per Script über die dafür vorgesehene Schnittstelle zu Smarteam (die CAIEngine) auslesen; diesbezüglich ist leider nicht viel in der Doku zu finden. Wenn du darüber hinaus Fragen hast, melde dich. Der u.s. Code sollte das Prinzip veranschaulichen. Selektiere das entsprechende Part (mit den Context-Links) in der geladenene Product-Struktur und starte das Script. Sub CATMain() Set oAD = Catia.ActiveDocument Set oSelection = oAD.Selection Set oSel = oSelection.Item(1).Value Set oPart = oSel.ReferenceProduct.Parent Set oStiEngine = Catia.GetItem("CAIEngine") Set oStiDBItem = oStiEngine.GetStiDBItemFromAnyObject(oPart) Set oDoc = oStiDBItem.GetDocument Set oStiDBChildren = oStiDBItem.GetChildren() oNbChildren = oStiDBChildren.Count For i = 1 To oStiDBChildren.Count sChildLinkType = oStiDBChildren.LinkType(i) Msgbox "Link " & i & " vom Typ " & sChildLinkType Set oStiDBItem2 = oStiDBChildren.Item(i) Set oDoc2 = oStiDBItem2.GetDocument Msgbox "Verlinktes Dokument: " & oDoc2.Name Msgbox "Pfad: " & oDoc2.FullName Next End Sub ------------------ tomtom1972 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Ehrenmitglied V.I.P. h.c. Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 12. Apr. 2010 07:38 <-- editieren / zitieren --> Unities abgeben: Nur für alias
|
alias Mitglied CAD Betreuer
Beiträge: 282 Registriert: 25.09.2003
|
erstellt am: 12. Apr. 2010 07:41 <-- editieren / zitieren --> Unities abgeben:
|
tomtom1972 Mitglied dipl ing maschinenbau
Beiträge: 608 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 12. Apr. 2010 08:02 <-- editieren / zitieren --> Unities abgeben: Nur für alias
Hallo alias, es muss nichts gespeichert sein, sondern nur angelegt bzw. geöffnet (in CATIA), im Smarteam muss gar nichts erfolgen / passiert sein. Die Links lassen sich eben nur über die Schnittstelle zu Smarteam auslesen, unabhängig davon ob man mit Smarteam arbeitet. Sofern du neue Modelle anlegst (in CATIA) bekommst du (ohne das sie gespeichert wurden) eben nur keine Pfadangabe zurück, d.h. der Fullname entspricht dem Modellnamen. Wenns dir speziell ums Einlesen in Smarteam geht findest du recht viel Code-Beispiel im US-Forum www.coe.org Gruß TomTom ------------------ tomtom1972 [Diese Nachricht wurde von tomtom1972 am 12. Apr. 2010 editiert.] [Diese Nachricht wurde von tomtom1972 am 12. Apr. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
alias Mitglied CAD Betreuer
Beiträge: 282 Registriert: 25.09.2003
|
erstellt am: 12. Apr. 2010 11:32 <-- editieren / zitieren --> Unities abgeben:
Nochmals vielen Dank, das Script arbeitet genau so wie ich brauche !!! Darf ich so frech sein und fragen, ob es so was auch zum Auffinden von Part - Part Links (CCP) gibt, bzw. wo ich Doku zur CAIEngine finden kann, um das ev. umzusetzen ? LG Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tomtom1972 Mitglied dipl ing maschinenbau
Beiträge: 608 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 12. Apr. 2010 12:53 <-- editieren / zitieren --> Unities abgeben: Nur für alias
Hallo, es werden eigentliche alle Links aufgelistet, egal welcher Art. Wenn du dein Part mit dem CCP-Link in einem eigenen Fenster geöffnet hast und das Script wie folgt anpasst: ... ' Set oSelection = oAD.Selection ' Set oSel = oSelection.Item(1).Value ' Set oPart = oSel.ReferenceProduct.Parent Set oStiEngine = Catia.GetItem("CAIEngine") Set oStiDBItem = oStiEngine.GetStiDBItemFromAnyObject(oAD) ... bekommst du den CCP Link angezeigt. Anpassen musst du also nur immer das "drumherum" entsprechend. Eine Doku gibts nicht / ist mir nicht bekannt. Wenn du im VB-Editor unter den Verweisen die CATSmarTeamIntegInterfaces Object Library anziehst kannst du dir im Objektkatalog den Aufbau (Properties, Methoden etc.) der "CATIAStiEngine" ansehen. Der Rest ist dann Try-And-Error oder Nachfragen. Gruß ------------------ tomtom1972 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tomtom1972 Mitglied dipl ing maschinenbau
Beiträge: 608 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 12. Apr. 2010 13:06 <-- editieren / zitieren --> Unities abgeben: Nur für alias
|
alias Mitglied CAD Betreuer
Beiträge: 282 Registriert: 25.09.2003
|
erstellt am: 12. Apr. 2010 14:14 <-- editieren / zitieren --> Unities abgeben:
|
C-R Mitglied Dipl.-Ing. Maschinenbau-Konstruktion
Beiträge: 8 Registriert: 16.07.2009 CATIA V5 R18 64bit CATIA V5 R21 64bit Visual Studio C++ 2005 Windows 7 Pro 64bit
|
erstellt am: 15. Mai. 2010 00:25 <-- editieren / zitieren --> Unities abgeben: Nur für alias
Moin, wo hast du denn die Information gefunden, dass "CAIEngine" in Zitat:
Set oStiEngine = Catia.GetItem("CAIEngine")
der Parameter für GetItem ist und nicht z.B. "StiEngine" oder ähnliches? Die Quelle könnte interessant sein, um an andere Objecte anderer Librarys zu kommen. Bis jetzt habe ich noch keine Liste finden können, welche Parameter GetItem alles kennt und auch im Object Browser scheint es nichts dafür zu geben oder? Gruß C-R Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
roccat Mitglied Konstrukteur
Beiträge: 172 Registriert: 19.02.2010 WinXP/Win7 Office XP/2007 Catia V5 R16-R19, VB6.0, VBA, BASCOM-AVR VB .Net 2010
|
erstellt am: 23. Jul. 2010 13:12 <-- editieren / zitieren --> Unities abgeben: Nur für alias
Hallo, @tomtom1972 wollte nur "Danke sagen" für diesen genialen Hinweis mit der ("CAIEngine"). Danach habe ich schon ewig gesucht. Dafür gibts alle mal 10 Units. Hab damit endlich mal was zur "GhostLink" suche schreiben können. Was kann man mit der Smartteam Schnittstelle noch so Interessantes machen? mfG Mario Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MC-Virus Mitglied
Beiträge: 24 Registriert: 27.03.2013
|
erstellt am: 21. Jun. 2013 11:51 <-- editieren / zitieren --> Unities abgeben: Nur für alias
Hallo, ich muss diesen Thread noch mal reaktivieren. Ich habe gerade versucht das oben angegebene Makro zu starten, allerdings in VB.Net. Wenn ich die Zeile "Set oSel = oSelection.Item(1).Value" müsste doch das Objekt oSel ein String sein oder? Dann kann ich aber nicht mehr die Zeile "Set oPart = oSel.ReferenceProduct.Parent" ausführen, was ja auch richtig ist. Ich würde diesen Vorgang gerne auf alle Elemente eines Produktes ausführen. Habe schon versucht CATIA.ActiveDocument durch die zu analysierenden Dokumente zu ersetzten, leider klappt das nicht. Die Selection ist immer nur bei dem CATIA.ActiveDocument gefüllt und sonst leer. Hat einer ne Idee wie man das ändern kann? Hier mal mein Code, vieleicht mache ich ja auch was anderes falsch.
Code: Dim oAD As Document = CATIA.ActiveDocument Dim oSelection As Selection = oAD.Selection If (oSelection.Count2 > 0) Then Dim oSel As AnyObject = oSelection.Item(1).Value Dim oPart As AnyObject = oSel.ReferenceProduct.Parent Dim oStiEngine As StiEngine = CATIA.GetItem("CAIEngine") Dim oStiDBItem As StiDBItem = oStiEngine.GetStiDBItemFromAnyObject(oAD) Dim oDoc As Document = oStiDBItem.GetDocument Dim oStiDBChildren As StiDBChildren = oStiDBItem.GetChildren() Dim oNbChildren As Integer = oStiDBChildren.Count For i = 1 To oStiDBChildren.Count Dim sChildLinkType As String = oStiDBChildren.LinkType(i) System.Console.WriteLine("Link " & i & " vom Typ " & sChildLinkType) Dim oStiDBItem2 As Object = oStiDBChildren.Item(i) Dim oDoc2 As Document = oStiDBItem2.GetDocument System.Console.WriteLine("Verlinktes Dokument: " & oDoc2.Name) System.Console.WriteLine("Pfad: " & oDoc2.FullName) Next End If
Gruß MC-Virus[Diese Nachricht wurde von MC-Virus am 21. Jun. 2013 editiert.] [Diese Nachricht wurde von MC-Virus am 21. Jun. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 12005 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 21. Jun. 2013 13:03 <-- editieren / zitieren --> Unities abgeben: Nur für alias
Servus ggf wäre es einfachsten für dich, wenn du diese Methode entweder auf jedes geöffnete Dokument anwendest oder zB bei einem Product auf alle Products (CATIA.ActiveDocument.Product.products.item(i)) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MC-Virus Mitglied
Beiträge: 24 Registriert: 27.03.2013
|
erstellt am: 21. Jun. 2013 13:10 <-- editieren / zitieren --> Unities abgeben: Nur für alias
Danke für den Tipp, das mit den Dokumenten hatte ich schon versucht, aber leider geht das nicht. Die Selection ist dabei immer leer. Ich habe irgendwie das Gefühl, das man die Dokumente erst "aktivieren" muss, da wenn ich diese in einem eigenem Fenster öffne, auch die Selection gefüllt ist. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 12005 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 21. Jun. 2013 13:23 <-- editieren / zitieren --> Unities abgeben: Nur für alias
Servus Warum sillst du den Umweg über die Selection gehen? Über das Document sollte es so gehen (ungetestet): Code:
Dim oDoc as Document Dim oStiEngine As StiEngine = CATIA.GetItem("CAIEngine")for each RootDoc in CATIA.Documents Dim oStiDBItem As StiDBItem = oStiEngine.GetStiDBItemFromAnyObject(RootDoc) Dim oDoc As Document = oStiDBItem.GetDocument Dim oStiDBChildren As StiDBChildren = oStiDBItem.GetChildren() Dim oNbChildren As Integer = oStiDBChildren.Count For i = 1 To oStiDBChildren.Count Dim sChildLinkType As String = oStiDBChildren.LinkType(i) System.Console.WriteLine("Link " & i & " vom Typ " & sChildLinkType) Dim oStiDBItem2 As Object = oStiDBChildren.Item(i) Dim oDoc2 As Document = oStiDBItem2.GetDocument System.Console.WriteLine("Verlinktes Dokument: " & oDoc2.Name) System.Console.WriteLine("Pfad: " & oDoc2.FullName) Next next
oder über eine Schleife über die Products:Code: dim RootProduct as ProductDocument Set RootProduct as ProductDocument Dim oProduct as Productfor i = 1 to RootProduct.product.products.count Set oProduct = RootProduct.product.products.item(1) 'weiterer Code next
Gruß Bernd------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MC-Virus Mitglied
Beiträge: 24 Registriert: 27.03.2013
|
erstellt am: 21. Jun. 2013 14:47 <-- editieren / zitieren --> Unities abgeben: Nur für alias
Perfekt, damit gehts fast so wie ich das haben will. Danke dir. Nur die Zeile muss angepasst werden. Dann ist es unabhängig vom LinkType.
Code: Dim oStiDBItem2 As Object = oStiDBChildren.Item(i) wird zuDim oStiDBItem2 As StiDBItem = oStiDBChildren.Item(i)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Face Mitglied Bachelor of Science
Beiträge: 10 Registriert: 29.11.2012 CATIA V5 R19 Win. 7
|
erstellt am: 10. Nov. 2018 21:53 <-- editieren / zitieren --> Unities abgeben: Nur für alias
Hallo zusammen, auch ich bin an der Programmierung in CATIA interessiert und über dieses Thema gestolpert. Das klingt durchaus interessant! Leider funktioniert der oben angegebene Link von TomTom nicht mehr. Kann mir jemand die Informationen geben oder gibt es eine andere Seite? Viele Grüße CAD-Face ------------------ Und Hände kamen aus den Weiten des Computer-Da-seins und schufen CAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 12005 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 11. Nov. 2018 20:10 <-- editieren / zitieren --> Unities abgeben: Nur für alias
|
CAD-Face Mitglied Bachelor of Science
Beiträge: 10 Registriert: 29.11.2012 CATIA V5 R19 Win. 7
|
erstellt am: 17. Nov. 2018 18:30 <-- editieren / zitieren --> Unities abgeben: Nur für alias
Hallo bgrittmann, ja das habe ich mir schon angeschaut. Den Code habe ich auch getestet und bin jetzt aber an dem Punkt, dass ich wissen möchte was noch alles möglich ist. Mir wird zum Beispiel nicht angezeigt, ob es sich beispielsweise um einen MML-Link handelt. In Sachen UUID und Ghostlinks wollte ich auch mal nachschauen. Da kam der oben genannte Link ganz passend. Die Hilfe gibt leider auch nicht ganz so viel preis. Das kann ich allerdings erst Montag auf der Arbeit noch einmal kontrollieren. Grüße CAD-Face ------------------ Und Hände kamen aus den Weiten des Computer-Da-seins und schufen CAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 12005 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 17. Nov. 2018 20:29 <-- editieren / zitieren --> Unities abgeben: Nur für alias
Servus Eine Übersicht welche Links unterschieden werden: siehe Doku unter StiDBChildren. UUID und Ghostlink werden wohl so nicht gehen. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |