Autor
|
Thema: Was ist die MasterShape? (2814 mal gelesen)
|
logan Mitglied MSc Distributed Computing Systems Engineering Dipl.-Ing. (FH) Softwaretechnik
Beiträge: 111 Registriert: 07.02.2005 NX 8.0.1.5 WinXP 32 Bit / WinXP 64 Bit Dell Precision M4500 / HP Z400 4GB / 12GB Nvidia Quadro 512MB / Nvidia Quadro 4000
|
erstellt am: 08. Okt. 2008 08:49 <-- editieren / zitieren --> Unities abgeben:
Hallo, eine Part Instanz im Visualisierungs-Mode hat eine Shape des Parts und kann noch weitere Shapes beinhalten. Die Shape des Parts ist die Default Shape (siehe Funktion "Manage Representations"). Ist nun die Master Shape Representation immer das Part oder kann in diesem Fall auch ein z.B. CGR-File die Master Shape Representation sein? Ich versuche mit diesem Wissen endlich zu verstehen ob ich mich im aktiven Product im Design oder Visualisierungs-Modus befinde. Vielen Dank für alle Rückmeldungen, Logan
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens Hansen Mitglied Senior Consult
Beiträge: 1055 Registriert: 05.08.2000 Win7 CATIA V5 R19 VB.Net C#
|
erstellt am: 08. Okt. 2008 10:45 <-- editieren / zitieren --> Unities abgeben: Nur für logan
|
Florian Held Mitglied Teamleiter CAD-Solutions
Beiträge: 81 Registriert: 07.09.2006
|
erstellt am: 09. Okt. 2008 11:21 <-- editieren / zitieren --> Unities abgeben: Nur für logan
Hi, wenn ich dich richtig Verstehe geht es dir um den Chache-Modus (Ist ein Part als CGR im Darstellungsmodus oder wirklich komplett geladen im Entwurfsmodus). Hier kannst du beim Mastershape nicht ansetzen, da beide Varianten HasAMasterShapeRepresentation = True haben. Oder möchtest du auf etwas anderes hinaus ^^? ------------------ MfG, Florian Held Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens Hansen Mitglied Senior Consult
Beiträge: 1055 Registriert: 05.08.2000 Win7 CATIA V5 R19 VB.Net C#
|
erstellt am: 09. Okt. 2008 11:26 <-- editieren / zitieren --> Unities abgeben: Nur für logan
Hallo, ob ein Part im Design Modus ist, lässt sich nur über den Umweg der Teilenummer herausfinden. Kann im Produkt die Teilenummer direkt abgefragt werden bzw. lässt sich sich über die Instanz die Part-Eigenschaft zuweisen, dann befindet disch das Bauteil im Design Modus. Andrfalss tritt hierbei ein Fehler auf und das Bauteil muss über StartCommand in den design Modus versetzt werden. SG Jens Hansen ------------------ Inoffizielle CATIA-Hilfeseite Private Seite Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tomtom1972 Mitglied dipl ing maschinenbau
Beiträge: 605 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 09. Okt. 2008 14:32 <-- editieren / zitieren --> Unities abgeben: Nur für logan
Hallo, @logan: Du warst eigentlich schon auf dem richtigen Weg. Alles, was Geometrie enthält, hat erst mal eine MasterShapeRepresentaion, also sowohl ein .cgr, ein .model, ein sonstwas. Die Eigenart eines .CATParts, welches im VisMode geladen wurde, ist nun, das CATIA eigenständig temporäre cgr-files unterhalb eines bestimmten (CATIA-) System-Ordners anlegt, der in den Tools Options eingestellt wird: der CACHE-Path. Über einen Vegleich des Pfades der MasterShapeRepresentaion mit dem des CACHEs kannst du nun feststellen, ob sich ein Model im VisMode befindet. @ Jens Hansen: Zum wechseln in den DesignMode benötigst du keinen StartCommand, dafür gibts eine eigene Methode. U.s. Code als Bsp.: das Script scant rekursiv eine Produktstruktur, überprüft für jeden Knoten im Baum, ob es Geometrie gibt, ob diese im VisMode geladen ist und (wenn ja) ob in den DesignMode gewechselt werden soll; Abbruch/Abort bricht ab. Zur Veranschaulichung werden die Knoten selektiert (ansonsten besteht für die Selektion keine Notwendigkeit). Hoffe das bringt Licht ins Dunkel. Gruß TomTom Public sLocCachePath As String Public oSel Public bAbort as Boolean Sub CATMain() '---Cache-Pfad auslesen Set oSetContr = Catia.SettingControllers Set oCacheSet = oSetContr.Item("CATSysCacheSettingCtrl") sLocCachePath = oCacheSet.LocalPath Set oRoot = Catia.ActiveDocument Set oSel = oRoot.Selection oSel.Clear Set oProduct = oRoot.Product Set oProducts = oProduct.Products FUNC_Scan oProducts End Sub Function FUNC_Scan(oProducts) For Each oItem In oProducts If Not bAbort Then If oItem.HasAMasterShapeRepresentation Then If FUNC_IsVisMode(oItem) Then oSel.Add (oItem) iMsg = MsgBox ( oSel.Item(1).Value.Name & " ist nur im VisMode geladen", 67, " In DesignMode wechseln ?") If iMsg = 6 Then oItem.ApplyWorkMode DESIGN_MODE ElseIf iMsg = 2 Then oSel.Clear bAbort = true Exit Function End if oSel.Clear End If End If If oItem.Products.Count > 0 Then FUNC_Scan oItem.Products End If End if Next End Function Function FUNC_IsVisMode(oItem) As Boolean Set oMSR = oItem.GetMasterShapeRepresentation(False) '--- die MasterShapeRepresentation anziehen ohne in Design Mode zu wechseln (deshalb False) If InStr(1, oMSR.FullName, sLocCachePath, vbTextCompare) Then FUNC_IsVisMode = True End If End Function ------------------ tomtom1972 [Diese Nachricht wurde von tomtom1972 am 09. Okt. 2008 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens Hansen Mitglied Senior Consult
Beiträge: 1055 Registriert: 05.08.2000 Win7 CATIA V5 R19 VB.Net C#
|
erstellt am: 09. Okt. 2008 15:55 <-- editieren / zitieren --> Unities abgeben: Nur für logan
|
logan Mitglied MSc Distributed Computing Systems Engineering Dipl.-Ing. (FH) Softwaretechnik
Beiträge: 111 Registriert: 07.02.2005
|
erstellt am: 09. Okt. 2008 17:49 <-- editieren / zitieren --> Unities abgeben:
Hallo, @tomtom1972: Dann muss ich den Pfad des local cache und den Pfad des released cache prüfen. In meiner Umgebung haben wir ein EDM System, welches *.cgr Dateien bereitstellt. Diese sind jedoch unabhängig vom Modus der CATIA Sitzung. Leider kann ich genau das gerade nicht testen. Da die *.cgr Dateien jedoch nicht erst beim Wechsel in den Visualisierungs-Modus erstellt werden, nehme ich an der Ansatz funktioniert dann nicht (OK, testen muß ich natürlich). Gerade habe ich noch einen ganz einfachen Test durchgeführt: 1. Ein Product mit einer Part Instanz 2. Folgendes (primitive) Makro Dim products1 As Products Set products1 = product1.Products Dim product2 As Product Set product2 = products1.Item("QGDAGE0106132_4_1") MsgBox (product2.GetMasterShapeRepresentationPathName) 3. Ergebnis war unabhängig vom Zustand Design/Visu immer der Pfad des CATParts. Da hätte ich etwas anderes erwartet. Das muß doch ein wenig einfacher gehen? @Jens Hansen: Habe Dein Buch schon bestellt. Das könnte ja ein Thema für die zweite Ausgabe werden. Viele Grüße, Logan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tomtom1972 Mitglied dipl ing maschinenbau
Beiträge: 605 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 10. Okt. 2008 05:40 <-- editieren / zitieren --> Unities abgeben: Nur für logan
Hallo logan, ich vermute mal euer EDM System erzeugt "physikalische" cgr-Dateien, also echte files, wie du sie in CATIA mit SaveAs erstellst. CATIA erzeugt (bei Einstellung CACHE-Modus in den ToolsOptions, und nur dann) temopäre cgrs im CACHE (z.B. Test.CATPart.2008-08-11-13.04.04.cgr), sofern die Modelle im VisMode geladen sind. Beim Laden des Modells wird der Zeitstempel des cgrs im CACHE mit dem Zeitstempel des "echten" CATParts verglichen. Sofern das CATPart nicht neueren Datums ist (also seit dem letzten Darstellen nicht verändert wurde) verwendet CATIA die im CACHE vorhandene cgr Datei, ansonsten wird der cgr zuerst angelegt. Das ist auch der Grund dafür, warum das erste Laden/Öffnen einer Produktstruktur im CACHE Modus auf einem PC (bei lokalen CACHE-Pfad) länger (!) dauert als ohne CACHE. Ob dein EDM-System einen Pfad für die Dateien zurückgibt kann ich dir hingegen nicht sagen. Gruß TomTom ------------------ tomtom1972 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
logan Mitglied MSc Distributed Computing Systems Engineering Dipl.-Ing. (FH) Softwaretechnik
Beiträge: 111 Registriert: 07.02.2005
|
erstellt am: 15. Okt. 2008 17:41 <-- editieren / zitieren --> Unities abgeben:
Hallo, melde mich leider erst jetzt da ich sehr viel zu tun hatte. @tomtom1972: Der Pfad vom EDM System liegt in CATIA V5 im Tools/Options->Infrastructure->Product Structure->Cache Management->Path to the released cache. Anders kann CATIA V5 die CGRs nicht finden. @Jens Hansen: Meine Tests haben ergeben, dass man zwischen einem Part im Visualisierungs-Modus und einem Instance Link der auf ein nichtexistentes Part per Scripting nicht unterscheiden kann. In beiden Fällen sind die folgenden Eigenschaften nicht vorhanden: PartNumber, ReferenceProduct, Source, UserRefProperties. Leider kann die Verfügbarkeit dieser Eigenschaften kann nur per Error Handling (On Error Resume Next...) überprüft werden. Durch einen Anruf eines Anwenders bin ich auf eine pragmatische Lösung gekommen. Ein Anwender, der mit Visualisierungs-Modus (DMU Settings) startet, hat selten alle Bauteile im Design Modus geladen. In diesem Fall melde ich dem Anwender mit Design-Modus Settings zu starten: ' ich bin *.catvba... Dim oSetCtrls As SettingControllers Set oSetCtrls = CATIA.SettingControllers Dim oSetCrtl As SettingController Set oSetCtrl = oSetCtrls.Item("CATSysCacheSettingCtrl") If (oSetCtrl.ActivationMode) Then MsgBox ("Hey Visu!") Else MsgBox ("Hey Design!") End If Damit löse ich mein ursächliches Problem nicht perfekt, d.h. ich prüfe nicht Design vs. Visu für jedes Product, aber kann generell jeden Anwender über die Auswahl der richtigen Settings zu einer Fehlervermeidung führen. Viele Grüße, Logan
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jens Hansen Mitglied Senior Consult
Beiträge: 1055 Registriert: 05.08.2000 Win7 CATIA V5 R19 VB.Net C#
|
erstellt am: 15. Okt. 2008 17:49 <-- editieren / zitieren --> Unities abgeben: Nur für logan
|
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 16. Okt. 2008 00:02 <-- editieren / zitieren --> Unities abgeben: Nur für logan
Hallo logan, Deine Aussage kann ich leider nicht nachvollziehen! Um zwischen einem Part im Visu-Mode und einem Instance-Link auf ein nicht existierendes Part zu unterscheiden, brauche ich doch nur auf die physikalische Existenz des Parts zu testen. Existiert eine entsprechende Datei, ist es der Visu-Mode; existiert sie nicht, dann ist es der Link auf das nicht existierende Part! Oder habe ich hier einen Denkfehler? mfg. Lusilnie
------------------ Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!! frei nach größeren Geistern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tomtom1972 Mitglied dipl ing maschinenbau
Beiträge: 605 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 16. Okt. 2008 06:57 <-- editieren / zitieren --> Unities abgeben: Nur für logan
Hallo Lusilnie, wie willst du die Existenz überprüfen? Den "Instance-Link auf ein nicht existierendes Part" interpretiere ich mal als "kaputten" Knoten im Baum. D.h. du bekommst keine Information zu diesem Knoten zurück. Wie also die "Verbindung" zu einem File überprüfen, sprich: Nach der Existenz von was soll den gesucht werden (Pfad o.ä.)? Gruß tomtom ------------------ tomtom1972 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Junior Konstruktionsingenieur / CAD-Konstrukteur (m/w/d) | Seit über 50 Jahren bringen wir Menschen mit dem zusammen, was sie begeistert. In unseren sechs Fachbereichen Maschinen- und Anlagenbau, Fahrzeugtechnik, Energietechnik, Elektrotechnik sowie Bauwesen & TGA bringen unsere Mitarbeiter ihr Know-How genau dort ein, wo es gebraucht wird - in abwechslungsreichen Engineering-Projekten. Werden auch Sie Teil des Teams und verbinden Sie das klassische Ingenieurwesen mit der digitalen Zukunft.... | Anzeige ansehen | Konstruktion, Visualisierung |
|
logan Mitglied MSc Distributed Computing Systems Engineering Dipl.-Ing. (FH) Softwaretechnik
Beiträge: 111 Registriert: 07.02.2005
|
erstellt am: 22. Okt. 2008 13:45 <-- editieren / zitieren --> Unities abgeben:
Hallo, @Jens Hansen: Die Unterscheidung per Error Handling ist ein funktionierender Weg. Automatisch in den Design Modus zu wechseln ist für mich leider keine Option, da sonst ggf. CATIA V5 zu viel Speicher benötigen würde und abstürzt. Das muß ich dem Anwender überlassen. Vielleicht sollte das Thema der Diskussion geändert werden: "Auf Design Modus einer Part Instanz prüfen" @Lusilnie: Bei meinem Versuch per oProd.ReferenceProduct.Parent auf das CATPart zuzugreifen ist in beiden Fällen die Prozedur "ReferenceProduct" fehlgeschlagen. Ich spekuliere auf Denkfehler, lasse mich jedoch gerne eines Besseren überzeugen. Viele Grüße, Logan
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |