Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API: Eingebettete Datei öffnen möglich?

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
  
Bechtle Competence Days | Online
Autor Thema:  API: Eingebettete Datei öffnen möglich? (2196 mal gelesen)
bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



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

Beiträge: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 16. Jul. 2015 07:16    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

Hallo zusammen,

ich schreibe gerade ein Macro das beim auslösen eine Art Status-Protokoll (Word oder Excell) befüllt, dieses würde ich gern in der Datei (Zeichnung) im Konstruktionsordner eingebettet haben. Leider hab ich nichts gefunden wie man diese Datein im Konstruktionsordner anlegen oder noch viel wichtiger diese Datei öffnen und ggf. ändern kann. Hat hier jemand von euch eine Idee ob das anlegen / öffnen per API überhaupt möglich ist.

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete 

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: 16. Jul. 2015 10:11    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 bk.sc 10 Unities + Antwort hilfreich


28542_kommentar-funktion.png

 
Hallo Bernd,

mir ist leider auch kein Weg bekannt, wie man die verschiedenen Anhänge im Konstruktionsjournal (design binder) auch nur auflisten, geschweige denn öfnnen/bearbeiten/aktualisieren könnte. Entweder fehlen dafür einfach die APIs oder wir könne sie beide nicht finden  

Wie wäre es denn, wenn du so ein Statusprotokoll statt dessen in einen Kommentar reinschreibst? Das geht mit allen Dokumenttypen, ist immer ganz oben in Featurebaum zu sehen, du kannst den immer gleich benennen und relativ leicht per API einzufügen (Stichworte: CommentFolder::AddComment, Comment::Text Comment::Name, Comment.Delete)

Ciao,
Stefan

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

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

HenryV
Mitglied
Konstrukteur, Engineering


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

Beiträge: 813
Registriert: 18.05.2005

SolidWorks 2022 x64 SP5.0
Dell Precision 5820
Intel Xeon W-2125 4x4GHz
NVIDIA Quadro P2000 5GB
32GB RAM
2x Dell U2412M, 24" TFT
Windows 10 Enterprise x64 22H2
Microsoft 365 E5
Microsoft Visual Studio Enterprise 2022

erstellt am: 16. Jul. 2015 10:39    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 bk.sc 10 Unities + Antwort hilfreich

Hallo Bernd

Mir ist auch keine API-Methode bekannt, um die im Konstruktionsordner eingebetteten Dokumente zu bearbeiten.

In der API-Hilfe findest du einige Methoden mit dem Suchbegriff "Attachments".
Es gib aber nur Hinzufügen, Auflisten, Zählen und Löschen.

Gruss Andreas

------------------
21 ist nur die halbe Antwort.

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

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



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

Beiträge: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 16. Jul. 2015 13:26    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

Hallo zusammen,

Danke Stefan für die Idee mit dem Kommentar, hat ich garnicht auf dem Radar.

Danke auch Andreas, auf die Idee nach "Attachments" zu suchen bin ich garnicht gekommen habe nur nach "EMBED" "EMBEDLINKDOC" oder "JOURNAL" gesucht gehabt, nur nichts brauchbares endeckt.

Dann werd ich mal schauen wie ich meinen Wunsch umgesetzt bekomme.

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete 

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

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



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

Beiträge: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 17. Jul. 2015 06:41    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

Hallo zusammen,

habe einen Weg gefunden per API an meine eingebettete Excel Tabelle zu kommen und diese auch zu öffnen und zu bearbeiten.
Das vorgehen ist aber glaube ich nicht so vorgesehen   .

Also ich hole mir erst alle OLE Objekte über "GetOLEObjects Method (IModelDocExtension)" und dann werte ich über eine Schleife zu jeden Objekt im enstandenen Array die "Clsid Property (ISwOLEObject)" (Klassen ID der zugeöhrigen Software) des OLE Objektes aus und wenn diese mit der vom gewünschten Dokumment (in meinem Fall Excel) übereinstimmt öffne ich das OLE Objekt mit der "SetActive Method (ISwOLEObject)".

Damit ich nicht versehentlich im falschen OLE-Dokument rumfuhrwerke habe ich in meinem Dokument noch eine art Marker gesetzt um das Dokument zu verifizieren.

Hierzu muss mann natürlich die Clsid von dem entsprechendem Programm vorher ermitteln, was ich leider noch nicht geschafft habe, daher ist bei mir die Clsid leider noch ein statischer Wert der nicht zur Laufzeit ermittelt wird.

Ach und auf die Idee, dass so zu machen bin ich gekommen indem ich einfach mal die Beispiel Determine if OLE Objects are Linked or Embedded Example (VBA) und "Get OLE Object Data Example (VBA)" laufen lassen hab und geschaut habe ob er die Objekte im Konstruktionsordner berücksichtigt und wie mann sieht tut SWX es.

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete  

[Diese Nachricht wurde von bk.sc am 17. Jul. 2015 editiert.]

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

JEsche
Mitglied


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

Beiträge: 2
Registriert: 26.08.2021

SWX
2019
SP5.0

erstellt am: 26. Aug. 2021 07:30    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 bk.sc 10 Unities + Antwort hilfreich

Hallo @Bernd

dies ist zwar ein recht alter Post, ich habe aber die Hoffnung hier Hilfe zu finden :-)
Ich stehe gerade vor dem selben Problem eine im Design Binder embedded Excel öffnen zu wollen.
Besteht ggf. die Möglichkeit, dass Du Deinen Code hier postest?
Ich habe Schwierigkeiten das swOleObj - Objekt zu setzten um SetActive(True) auszuführen:
Set xlObj = swOleObj.SetActive(True)

Ich würde mich sehr über eine Antwort freuen
Grüße Esche

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

Christian_W
Ehrenmitglied V.I.P. h.c.
Konstrukteur (Dipl-Ing)


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

Beiträge: 3189
Registriert: 04.04.2001

CSWP 12/2015<P>SWX2021sp5 Win10/11
(SWX2016, SWX2012)
proAlpha6.2e00/calinkV9
(Tactonworks)
(Medusa7, NesCAD2010,
solidEdge19)

erstellt am: 27. Aug. 2021 10:36    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 bk.sc 10 Unities + Antwort hilfreich

Moin,

die beiden genannten VBA Beispiele in der API-Hilfe von SWX hast du aber gefunden?
hier und da ...

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

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



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

Beiträge: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 30. Aug. 2021 13:05    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

Hallo,

leider hatte ich das Macro für meinen alten Arbeitgeber geschrieben, daher keinen Zugriff mehr darauf.

Evtl. könntest du posten was du schon an Code hast, evtl. kann ich dir dann besser helfen, weil lösbar ist das Problem  .

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete 

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

JEsche
Mitglied


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

Beiträge: 2
Registriert: 26.08.2021

SWX
2019
SP5.0

erstellt am: 30. Aug. 2021 18:37    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 bk.sc 10 Unities + Antwort hilfreich

Hallo

erst mal ganz herzlichen Dank an Christian und Bernd für Eure schnellen Antworten!

@Christian:
Ja ich kannte die Beispiele schon, hatte aber wegen einer falschen Deklaration (Dim xlObj As SldWorks.SwOLEObject anstatt As Object) immer einen Laufzeitfehler. Das passt nun soweit :-)

@Bernd:
Ich schaffe es nun auch das Excelfile aus dem DesignBinder zu öffnen (Excel öffnet in SWX und nicht in einer neuen Excel Instanz).
Soweit so gut. Nun habe ich aber das Problem, dass sich evtl. ebenso "Gauge Bending tables" und "Design Tables" im Modell befinden können.
vOleObjs(i).FileName liefert keinen Wert zurück und ich kann nur über die CLSID (wie Du ja bereits erwähnt hast) die Objekte ansprechen.
Damit muss ich alle *.xlsx öffnen, die im Modell embedded sind bis ich zum richtigen komme (Prüfung über Merkmale in der *.xlsx)...
Des weiteren haben z.B. *.xls und *.xlsx unterschiedliche CLSID's und ich weiß auch nicht, ob sich diese mit einer neuen Office Version verändern.

Ich habe rausgefunden, dass ich die CLSID über VBA aus der Registry auslesen kann (es gibt hier aber so viele Optionen, dass ich nicht weiß ob ich damit so richtig liege), wie gesagt, für *.xls sieht die CLSID schon anders aus und bei einer neuen Version bin ich auch nicht sicher, ob der richtige Wert zurück gegeben wird...

Dim wsh As Object
Set wsh = CreateObject("WScript.Shell")
MsgBox wsh.regread("HKLM\SOFTWARE\Classes\Excel.Sheet\CLSID\")


Hier mein Code zum öffnen der Excel aus dem Design Binder:

Option Explicit
Sub DesignBinder()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim xlObj As Object
Dim oleobjoptions As Long
Dim vOleObjs As Variant
Dim i As Integer

    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
   
    vOleObjs = swModel.Extension.GetOLEObjects(oleobjoptions)
   
  For i = 0 To UBound(vOleObjs)
      Debug.Print "  Class ID: " & vOleObjs(i).Clsid
        Debug.Print "  Is linked? " & vOleObjs(i).IsLinked
        Debug.Print "  Filename: " & vOleObjs(i).FileName
        If vOleObjs(i).Clsid = "{00020830-0000-0000-C000-000000000046}" Then 'xlsx Excel-Files
                    Set xlObj = vOleObjs(i).SetActive(True)
                'Some action here
            Set xlObj = vOleObjs(i).SetActive(False)
        End If
    Next i
End Sub


Ich habe ebenso versucht, das Problem über Attachements zu lösen:

...
vAttachments = swModel.Extension.GetAttachments(vLinks)

For i2 = 0 To UBound(vAttachments)
    If VBA.InStrRev(vAttachments(i), ".xlsx") > 0 Then
            file = vAttachments(i2)
            Debug.Print file
    End If
Next i2

Hier bekomme ich tatsächlich den Name des Attachments heraus, kann aber dann nichts weiter damit anstellen, da ich mit keiner Methode das Dokument programmtechnisch selektieren kann oder einem Objekt zuweisen kann... Es scheint kein Feature zu sein.

Für weitere Ideen oder Hinweise bin ich immer dankbar :-)

Grüße
Esche

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