| |
| KISTERS 3DViewStation: 3D-Visualisierung für After Sales, Service und Ersatzteile, eine Pressemitteilung
|
Autor
|
Thema: Verzeichnis aus Tools-Optionen auslesen (2827 mal gelesen)
|
Bertel Mitglied
Beiträge: 300 Registriert: 03.04.2002 CATIA V5 R26SP3HF21 Win10 Lenovo P52 Intel Xenon 16GB Ram NVIDIA Quadro P2000 EUKLID V14 ViCADo 2015
|
erstellt am: 13. Jan. 2011 11:25 <-- editieren / zitieren --> Unities abgeben:
|
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: 13. Jan. 2011 12:44 <-- editieren / zitieren --> Unities abgeben: Nur für Bertel
|
Bertel Mitglied
Beiträge: 300 Registriert: 03.04.2002 CATIA V5 R26SP3HF21 Win10 Lenovo P52 Intel Xenon 16GB Ram NVIDIA Quadro P2000 EUKLID V14 ViCADo 2015
|
erstellt am: 13. Jan. 2011 12:48 <-- editieren / zitieren --> Unities abgeben:
|
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 13. Jan. 2011 15:05 <-- editieren / zitieren --> Unities abgeben: Nur für Bertel
Es müsste (Dassault entscheidet sich oft anders) dennoch gehen über Code:
CATIA.SettingControllers()
allerdings brauchst Du hier den genauen Namen. :-( Vielleicht fällt mir aber noch etwas ein. Installiere gerade mein CATIA neu, versuch einmal: Code:
CATIA.SettingControllers("CATDrwDraftingSettingCtrl")
Ansonsten habe wir das Problem, dass sich Daniel eigentlich nie irrt und Dassault gerne ein paar Sachen sperrt. :-) Interessant ist schon einmal, dass ich diese TabPage auch nicht aus dem, CATIA exportieren kann. ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bertel Mitglied
Beiträge: 300 Registriert: 03.04.2002 CATIA V5 R26SP3HF21 Win10 Lenovo P52 Intel Xenon 16GB Ram NVIDIA Quadro P2000 EUKLID V14 ViCADo 2015
|
erstellt am: 13. Jan. 2011 16:07 <-- editieren / zitieren --> Unities abgeben:
Hallo Henry, Danke für die Info. Probiere nun schon eine Weile erfolglos rum. Hast du vielleicht ein Bsp., wie man mit SettingControllers in einem CATScript umgeht? Letztendlich benötige ich ja den String, der in dem Feld eingetragen ist! Habe noch keinen Plan, wie ich da hin kommen sollte. Gruß Bertel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 13. Jan. 2011 16:36 <-- editieren / zitieren --> Unities abgeben: Nur für Bertel
Sobald/wenn mir etwas einfällt, bekommst Du natürlich den Code-Schnippsel. :-) Ich muss nur schauen, ob da ein Weg rein führt. ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing 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: 14. Jan. 2011 08:26 <-- editieren / zitieren --> Unities abgeben: Nur für Bertel
Hallo, das Problem bei der von Henry genannten Setting Reference ist, das sie sich ausschließlich auf die Options-TabPage -> Administration bezieht. Der Aufbau respektive die Vorgehensweise mit den Setting Controllern ist folgende: Die Cellection CATIA.SettingControllers beinhaltet alle Optionen welche durch DS eine API haben. Sprich alle in der Collection befindlichen Controller können maipuliert bzw- ausgelesen werden. Jeder SettingController (welcher über die Collection mit Hilfe des jeweiligen Strings ausgelesen wird) will über seinen expliziten Namen (String) angesprochen werden und liefert das Objekt selbst zurück. Jeder Setting Controller stellt sozusagen eine explizite TabPage (Registerkarte) in den jeweiligen Optionen dar. In den Options -> Mechanical Deisgn -> Drafting kann nur die Administration Registerkarte angesprochen werden da diese die einzige ist die einen Eintrag in der SettingControllers Collection besitzt. Eventuell wäre es jedoch möglich das Ganze über Windows API´s auszulesen (sprich UserKlicks zu simulieren). Oder es gibt einen nicht dokumentierten String welcher die Referenz für die besagte Registerkarte darstellt (dieser wird aber schwer zu finden sein...da hilft nur Try&Error ) Da fällt mir ein das es heute auch möglich wäre über eine Cloud zu suchen. Hier schafft man ungefähr 50.000 String/S und könnte somit einen BruteForce machen um den String zu finden (ACHTUNG IRONIE )
------------------ MFG Daniel Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 14. Jan. 2011 14:18 <-- editieren / zitieren --> Unities abgeben: Nur für Bertel
Leider hat Daniel vollkommen Recht. :-) BruteForce bringt auch nicht viel, da viel zu wenige Controller drin sind. :-( Hinzu kommt noch, dass selbst die CATIA-Funktion nicht in der Lage ist für den Tab die Settings zu exportieren. ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bertel Mitglied
Beiträge: 300 Registriert: 03.04.2002 CATIA V5 R26SP3HF21 Win10 Lenovo P52 Intel Xenon 16GB Ram NVIDIA Quadro P2000 EUKLID V14 ViCADo 2015
|
erstellt am: 14. Jan. 2011 14:33 <-- editieren / zitieren --> Unities abgeben:
|
EmilioSanchez Mitglied
Beiträge: 78 Registriert: 02.11.2003 Intel I7 4700MQQ 24GB Win10 Pro 64-Bit Catia V5 R19/R26/28/29/30/32
|
erstellt am: 17. Jan. 2011 10:53 <-- editieren / zitieren --> Unities abgeben: Nur für Bertel
Hallo, wenn es nur um's auslesen geht kann man die CatSettings nach XML exportieren und den Wert aus der XML Datei lesen: shelltext = Chr(34) & CATIA.SystemService.Environ("CATDLLPATH") & _ "\CATBatGenXMLSet.exe" & Chr(34) & " " & Chr(34)& _ "C:\Catia_V5_Makros" & Chr(34) & " " & Chr(34) & _ "DraftingOptions" & Chr(34) Im Ordner "C:\Catia_V5_Makros" wird hierdurch die Datei DraftingOptions.xml erzeugt. Da die Shell-Funktion nicht wartet bis CATBatGenXMLSet.exe die XML geschrieben hat muss man eine andere Routine einsetzen die auf die Fertigstellung wartet: Start = ShellX(shelltext, vbHide) ' Funktion ShellX siehe Modul ModShellX Jetzt kann die XML Datei gelesen und ausgewertet werden.
Hier das Modul ShellX von VB-Tec.de:
Private Declare Function CloseHandle Lib "kernel32" ( _ ByVal hObject As Long) As Long Private Declare Function GetExitCodeProcess Lib "kernel32" ( _ ByVal hProcess As Long, lpExitCode As Long) As Long Private Declare Function OpenProcess Lib "kernel32" ( _ ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _ ByVal dwProcessId As Long) As Long ' ©2002 by Jost Schwider, http://vb-tec.de/ Public Function ShellX( _ ByVal PathName As String, _ Optional ByVal WindowStyle As Long = vbMinimizedFocus, _ Optional ByVal Events As Boolean = True _ ) As Long
'Deklarationen: Const STILL_ACTIVE = &H103& Const PROCESS_QUERY_INFORMATION = &H400& Dim ProcId As Long Dim ProcHnd As Long
'Prozess-Handle holen: ProcId = Shell(PathName, WindowStyle) ProcHnd = OpenProcess(PROCESS_QUERY_INFORMATION, True, ProcId) 'Auf Prozess-Ende warten: Do If Events Then DoEvents GetExitCodeProcess ProcHnd, ShellX Loop While ShellX = STILL_ACTIVE 'Aufräumen: CloseHandle ProcHnd End Function Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bertel Mitglied
Beiträge: 300 Registriert: 03.04.2002 CATIA V5 R26SP3HF21 Win10 Lenovo P52 Intel Xenon 16GB Ram NVIDIA Quadro P2000 EUKLID V14 ViCADo 2015
|
erstellt am: 17. Jan. 2011 13:04 <-- editieren / zitieren --> Unities abgeben:
Hallo Emilio, vielen Dank für die umfangreiche Antwort. Ich muss allerdings zugeben, das ist für mich zu viel "böhmische Dörfer". Hier mal kurz umrissen mein eigentliches Problem: Ich habe mehrere Makros und Startmodelle zentral auf einem Server liegen. Teilweise rufen die Makros sich gegenseitig auf, bzw. greifen auf Startmodelle zu. Deshalb ist in vielen Makros der Pfad zum Server enthalten. Das funktioniert bisher hier am Standort problemlos. Nun soll die ganze Geschichte auch an anderen Standorten verwendet werden, die keinen Zugriff auf unseren Server haben. Deshalb hatte ich die Idee, dass sich die Makros den Pfad aus den Optionen holen könnten!?!? Das scheint nun leider nicht ganz trivial zu sein. Habe nun als Lösung eine kleine Textdatei direkt in "C:\Pfad.txt", die den Pfad zum Makro-Verzeichnis enthält plaziert. Alle Makros, die einen Pfad benötigen müssen nun diese Datei öffnen und sich den Pfad holen. Falls die Datei nicht existiert, gebe ich einen entspr. Hinweis mit einer msgbox aus. Das funktioniert. Damit das am anderen Standort funktioniert, muß nur die Textdatei mit dem richtigen Standort-Server-Pfad vorhanden sein. Ich denke, mit dieser Lösung können wir leben. Trotzdem nochmal vielen Dank. Gruß Bertel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian.O Mitglied Konstrukteur
Beiträge: 1212 Registriert: 17.07.2009
|
erstellt am: 17. Jan. 2011 13:16 <-- editieren / zitieren --> Unities abgeben: Nur für Bertel
Servus, Zitat: Original erstellt von Bertel: Habe nun als Lösung eine kleine Textdatei direkt in "C:\Pfad.txt", die den Pfad zum Makro-Verzeichnis enthält plaziert. Alle Makros, die einen Pfad benötigen müssen nun diese Datei öffnen und sich den Pfad holen. Falls die Datei nicht existiert, gebe ich einen entspr. Hinweis mit einer msgbox aus. Das funktioniert.Bertel
in dieser Richtung könnte man auch eine Umgebungsvariable in Windows erzeugen. Start -> RMT auf Arbeitsplatz -> Registerkarte "Erweitert" -> Button "Umgebungsvariablen" -> Button "Neu" -> Variablem mit Pfad erzeugen. Anbei mein Makro zum Aufrufen der restlichen Makros. Ist im Endeffeckt genau das gleiche wie dein Textfile. ------------------ Mit freundlichen Grüßen aus Tirol Christian Obholzer 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: 17. Jan. 2011 13:47 <-- editieren / zitieren --> Unities abgeben: Nur für Bertel
|
Christian.O Mitglied Konstrukteur
Beiträge: 1212 Registriert: 17.07.2009
|
erstellt am: 17. Jan. 2011 13:51 <-- editieren / zitieren --> Unities abgeben: Nur für Bertel
Servus Daniel, du hast natürlich recht. Bis jetzt hatte ich damit noch keine Probleme. Wollte nur aufzeigen, dass es auch ncoh diese Variante gibt. ------------------ Mit freundlichen Grüßen aus Tirol Christian Obholzer Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bertel Mitglied
Beiträge: 300 Registriert: 03.04.2002 CATIA V5 R26SP3HF21 Win10 Lenovo P52 Intel Xenon 16GB Ram NVIDIA Quadro P2000 EUKLID V14 ViCADo 2015
|
erstellt am: 17. Jan. 2011 14:05 <-- editieren / zitieren --> Unities abgeben:
Hallo, @Christian: Danke für deine Lösung. Nach dem Hinweis von Daniel bleibe ich nun bei der Lösung mit der Textdatei. Das provoziert glaube ich weniger Rückfragen. Gruß Bertel [Diese Nachricht wurde von Bertel am 17. Jan. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 17. Jan. 2011 16:30 <-- editieren / zitieren --> Unities abgeben: Nur für Bertel
Also wirklich! :-) Im Jahre 2011 sollte das schon eine XML-Datei sein. :-D Aber sie haben alle Recht. ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bertel Mitglied
Beiträge: 300 Registriert: 03.04.2002 CATIA V5 R26SP3HF21 Win10 Lenovo P52 Intel Xenon 16GB Ram NVIDIA Quadro P2000 EUKLID V14 ViCADo 2015
|
erstellt am: 13. Dez. 2017 16:56 <-- editieren / zitieren --> Unities abgeben:
|
C.Samer Mitglied CAD Administrator
Beiträge: 72 Registriert: 03.05.2017
|
erstellt am: 15. Dez. 2017 11:32 <-- editieren / zitieren --> Unities abgeben: Nur für Bertel
Hey, du könntest stattdessen das Userverzeichnis nehmen. Sieh mal wie ich es beim Company-Logo mache: Code: Dim fso As FileSystemObject Set fso = CreateObject("Scripting.FileSystemObject") If Not fso.FileExists(sPicturePath) Then sPicturePath = "C:\Users\" & sUsername & "\Documents\CATIA\MasterSettings\Pictures\LOGO.jpg" If Not fso.FileExists(sPicturePath) Then MsgBox "Company logo not found." & vbCrlf & "Please copy the company logo to:" & vBCrLf & vBCrLf & sPicturePath,vbOKOnly Or vbCritical, "Error" Exit Sub End If End If
wobei Code: sUsername = CATIA.SystemService.Environ("LOGNAME") If sUsername = "" Then sUsername = CATIA.SystemService.Environ("USERNAME") End If
Grüße, Christoph [Diese Nachricht wurde von C.Samer am 15. Dez. 2017 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: 15. Dez. 2017 13:30 <-- editieren / zitieren --> Unities abgeben: Nur für Bertel
Servus Du könntest im Environment einfach eine weitere Variable hinzufügen. zB Code: CATMacroPath=L:\Makros
und diese per Makro abfragen. zB Code: MsgBox CATIA.SystemService.Environ("CATMacroPath")
Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |