Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Web html per Knopfdruck aus Solid Works erstellen

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
Autor Thema:   Web html per Knopfdruck aus Solid Works erstellen (731 mal gelesen)
xilefotto
Mitglied
Ingenieur


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

Beiträge: 19
Registriert: 20.06.2016

SW19, ED Pro 19

erstellt am: 18. Jan. 2019 10:57    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,

hat jmd. bereits versucht ein web html (neu Edrawings Pro 2019) direkt über Solid Works API zu erstellen?
Folgender Ablauf ist gewünscht:

Baugruppe/Part geöffnet in Solid Works
Knopfdruck (Solid Works Makro Button) -> startet Makro -> Web html der Baugruppe im gleichen Ordner der in SW geöffneten Baugruppe/ des Parts wird erstellt. (Name.html)

Ich nutze die Makkrofunktion z. B. um pdfs zu erstellen.
Leider fehlt mir der Transfer um Edrawings anzuzapfen und um mitzuteilen, dass genau das gleiche Teil/ die gleiche Baugruppe geöffnet und als web html gespeichert werden soll.
Ein Tipp wäre super. Besten Dank im Voraus.

Anbei mein Skript zum Erstellen von pdfs:

Dim swApp As Object
Dim Part As Object
Dim Component As Object
Dim saveFileName As String
Dim response As Long

Sub main()
On Error GoTo ErrorHandler
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc

swApp.ActiveDoc.ActiveView.FrameState = 1
swApp.ActiveDoc.ActiveView.FrameState = 1
Part.EditSketch

If (swApp.ActiveDoc.GetPathName = "") Then          'Abfrage ob Name vergeben wurde
    MsgBox ("Bitte zuerst Zeichnung speichern!")
    Exit Sub
End If

If Dir(Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + "_Fertigung1.pdf") = "" Then
    saveFileName = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + "_Fertigung1.pdf"
Part.SaveAs2 saveFileName, 0, True, False

'Speichern als PDF - Auschnitt - _Fertigung1 wenn noch nicht vorhanden


Else
    If Dir(Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + "_Fertigung2.pdf") = "" Then
    saveFileName = Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + "_Fertigung2.pdf"
    Part.SaveAs2 saveFileName, 0, True, False
  
    ' Speichern als PDF - Auschnitt - _Fertigung2 wenn noch nicht vorhanden

    Else
    response = MsgBox(prompt:="_Fertigung1 und _Fertigung2 existieren bereits wenn diese gelöscht werden sollen: OK", buttons:=vbOKCancel)
    If response = vbOK Then
        Kill (Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + "_Fertigung1.pdf")
        Kill (Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + "_Fertigung2.pdf")
        Else
        End If
    'swApp.ActiveDoc.ActiveView.FrameState = 1
    'Applicaiton.OnKey "{ENTER}"
    End If
End If
Exit Sub
ErrorHandler:  ' Error-handling routine.
         MsgBox ("PDF Reader schließen eine Datei ist in Benutzung")
     
End Sub


------------------
Es gibt nichts Gutes außer man tut es

[Diese Nachricht wurde von xilefotto am 19. Jan. 2019 editiert.]

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

CAD-Maler
Mitglied
Konstrukteur / CAD-Admin / Mädchen für alles


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

Beiträge: 581
Registriert: 17.01.2007

SWX 2017 SP5
AutoCAD 2016
Win 8.1 64 bit
Intel Xeon 3,2GHz
16GB RAM
Nvidia Quadro K2200
SWx EPDM

erstellt am: 18. Jan. 2019 11:42    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 xilefotto 10 Unities + Antwort hilfreich

Hallo!

Die API-Hilfe für eDrawings findest du hier.

Um SolidWorks-Dateien in eDrawing zu öffnen, habe ich bisher immer die shell-Funktion genutzt:

Code:

'Pfad mit Argumenten basteln
TEMP = Chr(34) & "C:\Program Files\SOLIDWORKS Corp 2017\eDrawings\EModelViewer.exe" & Chr(34) & " " & Chr(34) & "Dateipfad" & Chr(34) & " " & Chr(34) & "Dateiverzeichnis" & Chr(34) & " " & Chr(34) & FileID & Chr(34) & " " & Chr(34) & "17" & Chr(34) & " " & Chr(34) & "0" & Chr(34)

Shell TEMP, vbNormalFocus


Den Pfad und die Argumente musst du sicherlich anpassen. Alternativ kannst du auch

Code:

lRetVal = ShellExecute(0, "open", "C:\Program Files\SOLIDWORKS Corp 2017\eDrawings\EModelViewer.exe", "Dateipfad", "Dateiverzeichnis", SW_SHOWNORMAL)

versuchen. Mehr als Anzeigen habe ich aber bisher noch nicht gemacht.

Gruß, Jens

------------------
CSWE =)

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

xilefotto
Mitglied
Ingenieur


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

Beiträge: 19
Registriert: 20.06.2016

SW19, ED Pro 19

erstellt am: 18. Jan. 2019 12:12    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 Jens,

besten Dank für den Tipp zum Öffnen.
Hast du auch eine Idee wie man im Anschluss in edrawings die Datei als html abspeichert?

------------------
Es gibt nichts Gutes außer man tut es

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

CAD-Maler
Mitglied
Konstrukteur / CAD-Admin / Mädchen für alles


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

Beiträge: 581
Registriert: 17.01.2007

SWX 2017 SP5
AutoCAD 2016
Win 8.1 64 bit
Intel Xeon 3,2GHz
16GB RAM
Nvidia Quadro K2200
SWx EPDM

erstellt am: 18. Jan. 2019 13:25    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 xilefotto 10 Unities + Antwort hilfreich

Nicht wirklich. Hab ich noch nie benötigt. Das Problem wird dabei sein, dass du mit VBA die eDrawing-Applikation nicht gefangen bekommst.

Evtl. kannst du dir das Öffnen aber auch sparen, wenn du direkt mit der EModelViewer-Bibliothek arbeitest. Da gibts einen Save-Befehl

Gruß, Jens

------------------
CSWE =)

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

xilefotto
Mitglied
Ingenieur


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

Beiträge: 19
Registriert: 20.06.2016

SW19, ED Pro 19

erstellt am: 19. Jan. 2019 08: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

Hi Jens,

ich bin gerade dran deinen Code zu testen.

Wie unterscheidest du Dateipfad und Dateiverzeichnis im Shell?
Kannst du deinen Syntax beispielhaft füllen?

Vielen Dank für deine Rückmeldung im Voraus?

------------------
Es gibt nichts Gutes außer man tut es

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

xilefotto
Mitglied
Ingenieur


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

Beiträge: 19
Registriert: 20.06.2016

SW19, ED Pro 19

erstellt am: 19. Jan. 2019 10: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

Derzeit habe ich noch SW18 und arbeite deshalb mit .htm.
Leider bekomme ich Edrawings nicht geöffnet.
Der Fehler entsteht ab Progpfad. 

Anbei der code:

Dim swApp As Object
Dim Part As Object
Dim response As Long
Dim Progpfad As String 'Programmpfad bisher nicht in Benutzung
Dim Path As String 'Pfad der in Solidworks geöffneten Datei

Sub main()
On Error GoTo ErrorHandler

Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc

swApp.ActiveDoc.ActiveView.FrameState = 1
Part.EditSketch

If (swApp.ActiveDoc.GetPathName = "") Then
    MsgBox ("Bitte zuerstspeichern!")
    Exit Sub
End If

If Dir(Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + "_Fertigung.htm") = "" Then
MsgBox ("Check")
Path = swApp.ActiveDoc.GetPathName
MsgBox (Path) 'gibt teilpfad aus 'klappt bis hier

Progpfad = "eDrawings.exe, Path" 'hier entsteht der Fehler. Die File und Edrawings lassen sich nicht öffnen
MyAppID = Shell(Progpfad, 1)

Else
    response = MsgBox(prompt:="_Fertigung.htm existiert bereits soll diese gelöscht werden: OK", buttons:=vbOKCancel)
        If response = vbOK Then
        Kill (Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + "_Fertigung.htm")
        Else
        End If
End If
Exit Sub

ErrorHandler:  ' Error-handling routine.
        MsgBox ("Fehler!!!")
     

End Sub


------------------
Es gibt nichts Gutes außer man tut es

[Diese Nachricht wurde von xilefotto am 19. Jan. 2019 editiert.]

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

xilefotto
Mitglied
Ingenieur


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

Beiträge: 19
Registriert: 20.06.2016

SW19, ED Pro 19

erstellt am: 19. Jan. 2019 10: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

Hiermit lässt sich zumindest die exe öffnen:
Call Shell("C:\Program Files\SOLIDWORKS PDM\eDrawings\eDrawings.exe", vbNromalFocus)

------------------
Es gibt nichts Gutes außer man tut es

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

xilefotto
Mitglied
Ingenieur


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

Beiträge: 19
Registriert: 20.06.2016

SW19, ED Pro 19

erstellt am: 19. Jan. 2019 16:15    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

Schritt für Schritt gehts weiter...

Die Funktionen von Edrawings lassen sich vermutlich über EModelViewConrol per API in SW anzapfen.
Die Objektbibliothek ist eingebunden.

Edrawings lässt sich über SW öffnen.
Bei der OpenDoc Funktion komme ich aber leider nicht weiter. Hat jmd eine Idee an was es liegen könnte?
Vielen Dank für die Hilfe!

Anbei mein Code:

Code:

Dim swApp As Object
Dim Part As Object
Dim response As Long
Dim Path As String
Dim eModView As EModelViewControl

Sub main()
On Error GoTo ErrorHandler

Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc

swApp.ActiveDoc.ActiveView.FrameState = 1
Part.EditSketch

If (swApp.ActiveDoc.GetPathName = "") Then          'Abfrage ob Name vergeben wurde
    MsgBox ("Bitte zuerstspeichern!")
    Exit Sub
End If

Path = swApp.ActiveDoc.GetPathName 'gibt teilpfad aus

If Dir(Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + "_Fertigung.htm") = "" Then

Call Shell("C:\Program Files\SOLIDWORKS PDM\eDrawings\eDrawings.exe", vbNromalFocus)
Call Aufmachen
 
Else
    response = MsgBox(prompt:="_Fertigung.htm existiert bereits soll diese gelöscht werden: OK", buttons:=vbOKCancel)
        If response = vbOK Then
        Kill (Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + "_Fertigung.htm")
        Else
        End If
End If
Exit Sub

ErrorHandler:  ' Error-handling routine.
        MsgBox ("Fehler!!!")
End Sub


Sub Aufmachen()
MsgBox (Path)
eModView.OpenDoc Path, 1, 1, 1, ""
End Sub


Was funktioniert:
Die Übergabe des Pfads in die Untersub "Aufmachen"
Das Öffnen von Edrawings über die Shellfunktion

Was nicht funktioniert:
OpenDoc. Ich möchte hier den Pfad des geöffneten Dokumentes in Solidworks als String an Edrawings zum Öffnen und später zum "Speichern unter" innerhalb Edrawings übergeben.

------------------
Es gibt nichts Gutes außer man tut es

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

nahe
Mitglied



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

Beiträge: 1411
Registriert: 18.01.2001

arbeite mit:
HP Z440 Workstation
Xenon (12-Kern) 3.5GHz
32GB RAM
238GB SSD
------------------------
SWX-2016 SP5.0
DBWorks-R15 SP2.17
----------------
Windows 7 64 bit
----------------
VB
VBA
Lotus Notes Datenbanken
erste Schritte mit Swift

erstellt am: 20. Jan. 2019 10:44    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 xilefotto 10 Unities + Antwort hilfreich

Hallo,

ich vermute mal, dass Du eher mit CreateObject Zugriff auf die eDrawings API´s bekommen wirst

so ähnlich wie für SWX
Set swApp = CreateObject("SldWorks.Application")

mit dem Shell Befehl startest Du einfach nur eine Applikation und kannst
im Normalfall, die zu öffnende Datei übergeben und Startparameter die das Programm kennt.
Sonst nichts.

Da gerade nicht im Büro bin, kann ich Dir leider nicht den genauen Befehl für CreateObject sagen.

------------------
Grüße
Heinz

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: 2144
Registriert: 04.04.2001

SWX 2016sp5 WIN7-64
proAlpha6.2e/calinkV9
(Tactonworks)
(Medusa7, NesCAD2010,
solidEdge19) CSWP 12/2015

erstellt am: 21. Jan. 2019 00:23    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 xilefotto 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von CAD-Maler:
Um SolidWorks-Dateien in eDrawing zu öffnen, habe ich bisher immer die shell-Funktion genutzt ...

Hallo Jens,

hast du dabei schon mal auf schreibgeschützt stellen können?
beim "opendoc" kann man das wohl einstellen, aber über shell hatte ich das mal nicht geschafft .. 

Gruß, Christian

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

xilefotto
Mitglied
Ingenieur


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

Beiträge: 19
Registriert: 20.06.2016

SW19, ED Pro 19

erstellt am: 21. Jan. 2019 07: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

Grüß dich Heinz,

vielen Dank, dass du dir Gedanken machst.
Ich würde mich sehr über einen Object Code zum Ansteuern von EDrawings freuen.

Set swApp = CreateObject.. habe ich zum Ansteuern von Excel aus SW genutzt. Bei Edrawings hatte ich bisser keinen Erfolg mit der Methode.


------------------
Es gibt nichts Gutes außer man tut es

[Diese Nachricht wurde von xilefotto am 21. Jan. 2019 editiert.]

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

CAD-Maler
Mitglied
Konstrukteur / CAD-Admin / Mädchen für alles


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

Beiträge: 581
Registriert: 17.01.2007

SWX 2017 SP5
AutoCAD 2016
Win 8.1 64 bit
Intel Xeon 3,2GHz
16GB RAM
Nvidia Quadro K2200
SWx EPDM

erstellt am: 21. Jan. 2019 08:12    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 xilefotto 10 Unities + Antwort hilfreich


20190121_eDrawings.jpg

 
Was ich bisher schon erfolgreich programmiert habe:

Eine Userform mit integriertem eDrawings Viewer. ->

Die Steuerung wird der Werzeugsammlung mit "Weitere Steuerelemente" hinzugefügt und dann auf einer Userform platziert. Geladen wird diese Userform bei mir, wenn der Nutzer auf ein Vorschaubild im Hauptfenster klickt.

Hier der Code dazu:

Code:

Private Sub Image1_Click()

    UserForm2.EModelViewControl1.Visible = True
    UserForm2.EModelViewControl1.ZOrder (msosendtoback)
    UserForm2.EModelViewControl1.OpenDoc Dateipfad, False, False, True, ""
    UserForm2.EModelViewControl1.ShowToolbar True
    UserForm2.EModelViewControl1.Refresh
    UserForm2.Repaint

    UserForm2.Show

End Sub


Rein theoretisch sollte man da auch den Save-Befehl einbauen können, getestet habe ich es noch nicht. Auch sollte das Ganze im hintergrund funktionieren, also ohne eine sichtbare Userform.

Zitat:
Original erstellt von xilefotto:
Wie unterscheidest du Dateipfad und Dateiverzeichnis im Shell?

Dateipfad = C:\Temp\blabla.exe
Dateiverzeichnis = C:\Temp

Gruß, Jens

------------------
CSWE =)

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

xilefotto
Mitglied
Ingenieur


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

Beiträge: 19
Registriert: 20.06.2016

SW19, ED Pro 19

erstellt am: 21. Jan. 2019 09:02    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 Jens,

das sieht super aus  vielen Dank für die Nachricht.
Wie hast du die Variablen deklaiert?
Was bedeutet:

"UserForm2.EModelViewControl1.ZOrder (msosendtoback)"

Errichtest du ein Objekt als UserForm2? Wenn ja wie?

------------------
Es gibt nichts Gutes außer man tut es

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

xilefotto
Mitglied
Ingenieur


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

Beiträge: 19
Registriert: 20.06.2016

SW19, ED Pro 19

erstellt am: 21. Jan. 2019 11:15    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


Unbenannt.PNG

 
eModView As Object
Path As String

Code:
Private Sub Aufmachen()
Set eModView = CreateObject("eDrawings.application")
MsgBox (Path)
    eModView.EModelViewControl.Visible = True
    eModView.EModelViewControl.OpenDoc Path, False, False, True, ""
    eModView.EModelViewControl.ShowToolbar True
    eModView.EModelViewControl.Refresh
    eModView.EModelViewControl.Show
End Sub


Leider kann das Progamm siehe Foto damit nichts anfangen.
Die Methode ist klar aber das Objekt der Methode ist verkehrt.

------------------
Es gibt nichts Gutes außer man tut es

[Diese Nachricht wurde von xilefotto am 21. Jan. 2019 editiert.]

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

CAD-Maler
Mitglied
Konstrukteur / CAD-Admin / Mädchen für alles


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

Beiträge: 581
Registriert: 17.01.2007

SWX 2017 SP5
AutoCAD 2016
Win 8.1 64 bit
Intel Xeon 3,2GHz
16GB RAM
Nvidia Quadro K2200
SWx EPDM

erstellt am: 21. Jan. 2019 13:00    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 xilefotto 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von xilefotto:
Wie hast du die Variablen deklaiert?

Gar nicht.  Das early binding macht bei mir i.d.R. mehr Probleme, deswegen mach ich das nur, wenn es unbedingt sein muss (z.B. für einige PDM-Objekte).

Zitat:

Was bedeutet:

"UserForm2.EModelViewControl1.ZOrder (msosendtoback)"


Das verschiebt das Objekt in der Userform nach hinten. (Guckstu hier...) Frag mich jetzt bitte nicht, wofür ich das mache, ist schon ne Weile her und dokumentierter Code ist nur was für Angeber. 

Zitat:

Errichtest du ein Objekt als UserForm2? Wenn ja wie?

Ähmmmm ... Nein.

Durch das Einbetten des Control-Elements IN eine Userform wird das Objekt ja automatisch erzeugt und geladen. Ich habe eine Userform erstellt, das eDrawings-Dingens als Steuerelement reingeworfen und führe die Userform dann aus/ lasse sie anzeigen.

Gruß, Jens

------------------
CSWE =)

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

xilefotto
Mitglied
Ingenieur


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

Beiträge: 19
Registriert: 20.06.2016

SW19, ED Pro 19

erstellt am: 21. Jan. 2019 14:10    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

Ach veflixt 
Zitat:
Gar nicht.  Das early binding macht bei mir i.d.R. mehr Probleme, deswegen mach ich das nur, wenn es unbedingt sein muss (z.B. für einige PDM-Objekte).

Eigentlich möchte ich das Makro direkt über einen Button in der Solidworksumgebung starten (das hat bisher immer super funktioniert).
Deshalb brauche Ich vermutlich die Deklaration im Vorfeld.

Hast du irgend eine Idee an was es liegen könnte, dass die Objektinitialisierung nicht richtig funktioniert?
Die Bibliotheken sind eingebunden.

Kann es sein, dass die App falsch bezeichnet ist siehe:

Code:
Set eModView = CreateObject("eDrawings.application")

------------------
Es gibt nichts Gutes außer man tut es

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

CAD-Maler
Mitglied
Konstrukteur / CAD-Admin / Mädchen für alles


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

Beiträge: 581
Registriert: 17.01.2007

SWX 2017 SP5
AutoCAD 2016
Win 8.1 64 bit
Intel Xeon 3,2GHz
16GB RAM
Nvidia Quadro K2200
SWx EPDM

erstellt am: 21. Jan. 2019 14:59    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 xilefotto 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von xilefotto:
Ach veflixt  

Eigentlich möchte ich das Makro direkt über einen Button in der Solidworksumgebung starten (das hat bisher immer super funktioniert).
Deshalb brauche Ich vermutlich die Deklaration im Vorfeld.


Das eine hat mit dem anderen nix zu tun. Probiers doch einfach mal. Ich starte 95% meiner Makros über einen Button in SolidWorks und habe trotzdem nur das allernotwendigste vorher deklariert.

Zitat:

Hast du irgend eine Idee an was es liegen könnte, dass die Objektinitialisierung nicht richtig funktioniert?
Die Bibliotheken sind eingebunden.

Kann es sein, dass die App falsch bezeichnet ist siehe:

Code:
Set eModView = CreateObject("eDrawings.application")


Ja, so langsam habe ich einen Verdacht. Es scheint sich um einen klassischen PEBCAK-Fehler zu handeln. 

Die Bibliothek ist nur eine Schnittstelle, um ein Addin/Plugin/Was-auch-immer von eDrawings (ein eDrawings-Fenster) in eine Visual-Basic-Userform EINZUBETTEN.

Zitat:

Using the eDrawings ActiveX control

The eDrawings API is implemented as a Microsoft ActiveX control. This topic shows how to create Microsoft Visual Basic and C# Windows Forms applications that use this control to load eDrawings drawings.


D.h. du wirst nicht drumrum kommen, dir in deinem SWX-Makro eine Userform zu erstellen und dort das Steuerelement einzubinden. Was du dann mit der Userform machst, also ob du die versteckst oder anzeigst, ist dir überlassen. Aber einmal wirst du die zur Laufzeit des Makros laden müssen.

Gruß, Jens

------------------
CSWE =)

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

xilefotto
Mitglied
Ingenieur


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

Beiträge: 19
Registriert: 20.06.2016

SW19, ED Pro 19

erstellt am: 21. Jan. 2019 17:53    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


Unbenannt2.PNG

 
Zitat:
D.h. du wirst nicht drumrum kommen, dir in deinem SWX [SolidWorks] -Makro eine Userform zu erstellen und dort das Steuerelement einzubinden. Was du dann mit der Userform machst, also ob du die versteckst oder anzeigst, ist dir überlassen. Aber einmal wirst du die zur Laufzeit des Makros laden müssen.

Läuft  Danke Jens!
Jetzt muss ich nur noch das Abspeichern richten.
Sobald alles steht lade ich meine Code hier rein.

------------------
Es gibt nichts Gutes außer man tut es

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

xilefotto
Mitglied
Ingenieur


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

Beiträge: 19
Registriert: 20.06.2016

SW19, ED Pro 19

erstellt am: 21. Jan. 2019 18:40    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


Unbenannt3.png


Unbenannt4.png

 
So jetzt läuft die Kiste.        
SW 2019 bringt die Funktion mit.

Nach Einbindung des neuen Userform Steuerelements  "eDrawings 2019 Control" und Umstellung der Type auf HTML5 läuf alles wie gewünscht!    

Anbei der Code der Main:

Code:
Dim swApp As Object
Dim Part As Object
Dim response As Long
Dim Path As String

Sub main()
On Error GoTo ErrorHandler

Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc

swApp.ActiveDoc.ActiveView.FrameState = 1
Part.EditSketch

If (swApp.ActiveDoc.GetPathName = "") Then          'Abfrage ob Name vergeben wurde
    MsgBox ("Bitte zuerstspeichern!")
    Exit Sub
End If

Path = swApp.ActiveDoc.GetPathName 'gibt teilpfad aus

If Dir(Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + "_Fertigung.html") = "" Then

Call Aufmachen

Else
    response = MsgBox(prompt:="_Fertigung.htm existiert bereits soll diese gelöscht werden: OK", buttons:=vbOKCancel)
        If response = vbOK Then
        Kill (Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + "_Fertigung.html")
        Else
        End If
End If
Exit Sub

ErrorHandler:  ' Error-handling routine.
        MsgBox ("Fehler!!!")
     
End Sub


Sub Aufmachen()
MsgBox (Path)
UserForm1.Show
End Sub


Dann der Transfer zur Userform Dank Jens Hilfe:

Code:
Dim swApp As Object
Dim Path As String


Private Sub EModelViewControl1_OnComponentSelectionNotify(ByVal ComponentName As String, ByVal XCoordinate As Long, ByVal YCoordinate As Long)

End Sub

Private Sub UserForm_Activate()


Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc

    Path = swApp.ActiveDoc.GetPathName
    UserForm1.EModelViewControl1.Visible = True
    UserForm1.EModelViewControl1.ZOrder (msosendtoback)
    UserForm1.EModelViewControl1.OpenDoc Path, False, False, True, ""
    UserForm1.EModelViewControl1.ShowToolbar True
    UserForm1.EModelViewControl1.Refresh
    UserForm1.EModelViewControl1.Save Left(swApp.ActiveDoc.GetPathName, Len(swApp.ActiveDoc.GetPathName) - 7) + "_Fertigung.html", HTML5, ""
    UserForm1.Hide
  
   
End Sub



Was noch zu verbessern wäre:
Globale Variable -> Userform aus der Main

------------------
Es gibt nichts Gutes außer man tut es

[Diese Nachricht wurde von xilefotto am 21. Jan. 2019 editiert.]

[Diese Nachricht wurde von xilefotto am 22. Jan. 2019 editiert.]

[Diese Nachricht wurde von xilefotto am 22. Jan. 2019 editiert.]

[Diese Nachricht wurde von xilefotto am 22. Jan. 2019 editiert.]

[Diese Nachricht wurde von xilefotto am 22. Jan. 2019 editiert.]

[Diese Nachricht wurde von xilefotto am 22. Jan. 2019 editiert.]

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

xilefotto
Mitglied
Ingenieur


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

Beiträge: 19
Registriert: 20.06.2016

SW19, ED Pro 19

erstellt am: 23. Jan. 2019 08:57    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

Das Programm funktioniert auch komplett unabhängig von der
Main rein über die Userform.

------------------
Es gibt nichts Gutes außer man tut es

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