| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| Innovationstag mit SolidCAM und Plogmann bei HEDELIUS in Meppen |
Autor
|
Thema: GetCurrentSheet bring nur Fehler 438 :-( (1938 mal gelesen)
|
koehlerax Mitglied Systemadmin
Beiträge: 25 Registriert: 11.11.2002 Dell Precision 350 (P4 3,06GHz HT aktiv) PNY FX5900Ultra 256MB RAM 1GB HD IDE 80GB WinXP SP1 SWX 2001Plus SP4.1 Netz 100MBit
|
erstellt am: 14. Mrz. 2003 11:08 <-- editieren / zitieren --> Unities abgeben:
Also ich bekomme das mit der aktuellen Blattnummer einfach nicht hin. Schon der Befehl "GetCurrentSheet" bringt nur Fehler und ich weiss echt nicht wieso? :-( So sieht es aus: Set swApp = CreateObject("SldWorks.Application") Set PartActive = swApp.ActiveDoc MsgBox PartActive.GetCurrentSheet() Dann kommt der Fehler: Laufzeitfehler '438' Objekt unterstüzt diese Eigenschaft oder Methode nicht Eigentlich hatte ich ja die aktuelle Blattnummer erwartet so wie man auch bei: MsgBox PartActive.GetSheetCount() die Gesamtzahl an Seiten bekommt. Gruß KoehlerAx
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)
Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 14. Mrz. 2003 12:59 <-- editieren / zitieren --> Unities abgeben: Nur für koehlerax
Hallo KoehlerAx, ich verstehe nicht genau, was du möchtest (ich meine, ich verstehe nicht, was du unter Blattnummer meinst ). Aber warum du den Fehler bekommst kann ich dir erklären: mit GetCurrentSheet bekommst du als Rückgabewert ein Objekt (genauer einen Objektpointer), MsgBox braucht als Parameter aber einen String. Das du etwas anderes (nämlich ein Zahl?) erwartet hast wundert mich etwas, in der API Hilfe steht das genau so drin ... Ich hoffe zumindest schon mal die Fehlermeldung aufgeklärt zu haben, vielleicht kann ich noch weiter helfen, wenn ich verstehe, was du mit Blattnummer meinst. Ciao, Stefan
------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
koehlerax Mitglied Systemadmin
Beiträge: 25 Registriert: 11.11.2002 Dell Precision 350 (P4 3,06GHz HT aktiv) PNY FX5900Ultra 256MB RAM 1GB HD IDE 80GB WinXP SP1 SWX 2001Plus SP4.1 Netz 100MBit
|
erstellt am: 14. Mrz. 2003 13:03 <-- editieren / zitieren --> Unities abgeben:
Ja OK ich habe das auch gelesen in der API Hilfe. Aber wie bekomme ich denn das was ich im SWX mit dieser Zeile machen kann im VB hin? $PRP:"SW-Aktuelles Blatt(Current Sheet)" Also einfach welches Blatt im Moment aktiv ist (bei einem mehrblättrigen Drawing) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Thomas Rolf Mitglied Dipl.-Ing. / CAD-Admin
Beiträge: 189 Registriert: 02.07.2001 SWX 2015 SP4.0
|
erstellt am: 14. Mrz. 2003 13:06 <-- editieren / zitieren --> Unities abgeben: Nur für koehlerax
Hallo KoehlerAx; Getcurrentsheet gibt einen Verweis auf das Sheet-Objekt zurück. Ein Objekt kann aber mit einem Msgbox... nicht ausgegeben werden. Versuch doch mal: Set swApp = CreateObject("SldWorks.Application") Set PartActive = swApp.ActiveDoc MsgBox PartActive.GetCurrentSheet.getname Vielleicht bringt das das gewünschte Ergebnis. Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)
Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 14. Mrz. 2003 13:21 <-- editieren / zitieren --> Unities abgeben: Nur für koehlerax
Hallo KoehlerAx, ah ja, jetzt verstehe ich was du meinst. Das ist etwas komplizierter, dafür gibt es AFAIK keine direkte Abfrage. Du musst wie Thomas gezeigt hat den Namen des Blattes holen und merken, dann über alle Blattnamen drüberlaufen und mitzählen, wann du das Blatt erwischt hast, dass genauso heißt wie dein aktives Blatt. Das sieht dann so aus:
Code:
Sub main() Dim swApp As Object Dim DrawingDoc As Object Dim SheetCount As Long Dim SheetNames As Variant Dim ActiveSheetName As String Dim i, BlattNummer As Long Set swApp = CreateObject("SldWorks.Application") Set DrawingDoc = swApp.ActiveDoc SheetCount = DrawingDoc.GetSheetCount SheetNames = DrawingDoc.GetSheetNames ActiveSheetName = DrawingDoc.GetCurrentSheet.GetName For i = 1 To SheetCount If SheetNames(i - 1) = ActiveSheetName Then BlattNummer = i Next i MsgBox BlattNummer End Sub
Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
koehlerax Mitglied Systemadmin
Beiträge: 25 Registriert: 11.11.2002 Dell Precision 350 (P4 3,06GHz HT aktiv) PNY FX5900Ultra 256MB RAM 1GB HD IDE 80GB WinXP SP1 SWX 2001Plus SP4.1 Netz 100MBit
|
erstellt am: 14. Mrz. 2003 13:31 <-- editieren / zitieren --> Unities abgeben:
|