Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API - Alle offenen Dateien anzeigen?

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
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS
  
Performance steigern von großen Baugruppen und Zeichnungen mit SOLIDWORKS 2024
Autor Thema:  API - Alle offenen Dateien anzeigen? (1886 mal gelesen)
Bruggmann
Mitglied
Konstrukteur (& Nachdiplomstudium Software-Engineering)


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

Beiträge: 85
Registriert: 17.03.2004

Workstation:
Fujitsu Siemens P4 3.2GHz
2.0 GB RAM
Win XP SP1 - SW2005 SP0.1
(PDM: Smarteam)<P>Laptop:
Compaq Evo 800w P4 2GHz
500MB RAM
WinXP SP2 - SW2005 SP0.1
(PDM: ec-Manager, eigenes Tool..)

erstellt am: 15. Mrz. 2005 08:28    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

hi all

wie kann ich über die API alle offenen dateien anzeigen lassen?

ich rufe ein fenster auf und will alle offenen dateien mit: retval = model.Lock() sperren.

oder soll ich das so oder so anders angehen?

gruss stefan

------------------
----------
encom GmbH

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

Kalle
Mitglied
Student


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

Beiträge: 706
Registriert: 14.04.2002

erstellt am: 15. Mrz. 2005 08:31    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 Bruggmann 10 Unities + Antwort hilfreich

Aheu Stefan,

versuchs mal mit

retval = SldWorks.EnumDocuments2 ( )

Näheres dazu in der API-Hilfe.

Bis dann,
Kalle

------------------
-----------------------------------------
Es gibt immer mehr Lösungen als Probleme.

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

Bruggmann
Mitglied
Konstrukteur (& Nachdiplomstudium Software-Engineering)


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

Beiträge: 85
Registriert: 17.03.2004

Workstation:
Fujitsu Siemens P4 3.2GHz
2.0 GB RAM
Win XP SP1 - SW2005 SP0.1
(PDM: Smarteam)<P>Laptop:
Compaq Evo 800w P4 2GHz
500MB RAM
WinXP SP2 - SW2005 SP0.1
(PDM: ec-Manager, eigenes Tool..)

erstellt am: 15. Mrz. 2005 08:38    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

ahhh danke!!
genau das hatte ich gesucht aber nicht gefunden 

------------------
----------
encom GmbH

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

Jens S.
Mitglied
Dipl.-Ing.


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

Beiträge: 55
Registriert: 23.02.2005

erstellt am: 17. Mrz. 2005 16:52    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 Bruggmann 10 Unities + Antwort hilfreich

Hallo Zusammen,

genau das brauche ich auch. :-) Wenn ich das richtig verstanden habe, soll "EnumDocuments2()" mir alle "offenen" Dokumente (geladene Dokumente von SldWorks) liefern?! Allerdings weiss ich nicht, was für ein Typ der retval sein soll? Object wegen POINTER (laut API)?

Wenn ich den so setze, bekomme ich eine Fehlermeldung:
Lesen ist wegen der Eigenschaft nur Schreiben nicht möglich!

Also echt ... jeden Tag ein neues Problem :-)

Möchte einmal erleben, dass der schei... Rechner sagt:
Jens, überhaupt KEIN Problem! :-)

Lg JENS

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

Kalle
Mitglied
Student


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

Beiträge: 706
Registriert: 14.04.2002

erstellt am: 17. Mrz. 2005 17: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 Bruggmann 10 Unities + Antwort hilfreich

Aheu Jens,

füge

Dim retval As SldWorks.EnumDocuments2

in Deinen Deklarationsblock ein und schon geht's.

Bis dann,
Kalle

------------------
-----------------------------------------
Es gibt immer mehr Lösungen als Probleme.

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

Kalle
Mitglied
Student


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

Beiträge: 706
Registriert: 14.04.2002

erstellt am: 17. Mrz. 2005 17:56    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 Bruggmann 10 Unities + Antwort hilfreich

Aheu Jens,

ich glaub ich führ das mal noch etwas mehr aus, sonst kommt gleich die nächste Frage, da die API-Hilfe was das angeht ziemlich für'n Eimer ist (da gehört ein ordentliches Beispiel rein).
Hier mal eins was die nacheinander eine MessageBox mit dem Titel der ersten zwei Teile ausgibt:

Dim swApp As SldWorks.SldWorks
Dim ListOfDocuments As SldWorks.EnumDocuments2
Dim swModel As SldWorks.ModelDoc2
Dim lngDummy As Long
Sub main()

Set swApp = Application.SldWorks
Set ListOfDocuments = swApp.EnumDocuments2()
ListOfDocuments.Next 1, swModel, lngDummy
MsgBox swModel.GetTitle
ListOfDocuments.Next 1, swModel, lngDummy
MsgBox swModel.GetTitle
End Sub

ListOfDocuments.Next kriegt als ersten Parameter die Anzahl der Documente (Objekte), die es in ein Array von eben dieser Größe (der zweite Parameter) schreibt. Im Normalfall wird's wohl bei 1 und der normalen swModel Deklaration bleiben. In lngDummy wird dann noch reingeschrieben wieviele Documente übergeben worden sind (Du könntest ja mehr angeben als eigentlich offen sind). Neben Next gibt's da auch noch Skip (Elemente überspringen), Reset (die Liste wieder an den Anfang zurücksetzen) und Clone (was wohl kaum jemand brauchen wird).

Ich hoffe Du kannst hiermit ein bisschen was anfangen.

Bis dann,
Kalle

------------------
-----------------------------------------
Es gibt immer mehr Lösungen als Probleme.

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

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



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

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: 18. Mrz. 2005 07: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 Bruggmann 10 Unities + Antwort hilfreich

Hallo zusammen,

ich mach in solchen Fällen einfach einen Loop über alle offenen Dokumente mit SldWorks.GetFirstDocument und dann im Loop ModelDoc.GetNext

Beispiel ist in der MakroMania im Makro Alle offenen Dateien speichern

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite
http://solidworks.cad.de

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

Jens S.
Mitglied
Dipl.-Ing.


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

Beiträge: 55
Registriert: 23.02.2005

erstellt am: 18. Mrz. 2005 09:56    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 Bruggmann 10 Unities + Antwort hilfreich

Hallo Jungs,

danke Kalle, für den QuellText. :-)
Wenn ich das richtig verstanden habe (wahrscheinlich NEIN! :-)), dann ist "ListOfDocuments.Next 1, swModel, lngDummy" bzw. "ListOfDocuments" ein Zeiger, der auf die Liste der offenen Dokumente zeigt?! Und durch die Anweisung .Next1 "einfach" dazu gebracht wird auf das nächste Dokument zu zeigen!? Richtig?!

"lngDummy" habe ich noch nicht so recht verstanden! :-) Ich denke aber, dass es etwas mit "wieviele Elemete schon übergeben worden bzw. noch nicht übergeben worden sind" zutun hat. Fakt ist jedenfalls, dass wenn lngDummy = 0 ist, alle Dokumente "angezeigt" worden sind.

Da ich natürlich an allen Dokumenten interessiert bin, habe ich, man möge mir für meine fachliche Inkompetenz in Visual Basic verzeihen (bin erst seit einigen Wochen dabei), ein Beispiel für die Abfrage ALLER (Hallo, Stefan Berlitz :-)) Dokumente erstellt, was mir aber etwas sehr umständlich erscheint :-)

Das geht doch bestimmt vieeell einfacher?!

Dim swApp As SldWorks.SldWorks
Dim ListOfDocuments As SldWorks.EnumDocuments2
Dim swModel As SldWorks.ModelDoc2
Dim lngDummy As Long

Sub main()

Set swApp = Application.SldWorks
Set ListOfDocuments = swApp.EnumDocuments2()

If swApp.EnumDocuments2() Is Nothing Then
MsgBox ("Es ist kein Dokument geöffnet!")
Exit Sub
Else
Do
ListOfDocuments.Next 1, swModel, lngDummy
MsgBox (lngDummy)
If lngDummy = 0 Then
MsgBox ("Es wurden alle Dokumente ausgegeben!")
Exit Sub
End If
MsgBox swModel.GetTitle
Loop While lngDummy <> 0
End If
End Sub


Man beachte die Loop While Anweisung, da hätte ich auch HundKatzeMaus reinschreiben können :-)

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)2024 CAD.de | Impressum | Datenschutz