Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Excel steuert Solid Works

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
  
Zusammenspiel zwischen DraftSight und SOLIDWORKS
Autor Thema:  Excel steuert Solid Works (5816 mal gelesen)
TobiasMuehling
Mitglied


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

Beiträge: 4
Registriert: 10.12.2004

erstellt am: 22. Dez. 2004 17:03    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,

mit Eurer Hilfe bin ich in meinem Problem sicherlich einen Schritt weiter, doch auch schon wieder beim nächsten Problem angelangt. Zur Erinnerung: Ich will Solid Works über ein Makro in Excel steuern. Dazu soll dieses bei click eines Buttons ausgeführt werden. (bestimmte Datei öffnen und dort Arbeitsschritte ausführen). Dazu bin ich bisher bei folgendem VBA Code für einen kleinen Test:

Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Dim FeatureData As Object
Dim Feature As Object
Dim Component As Object

Private Sub CommandButton1_Click()

Dateiname = ActiveWorkbook.Path & "\" & Cells(1, 1)
Erweiterung = LCase(Right(Cells(1, 1), 7))

If Erweiterung = ".sldprt" Then
Shell "C:\Programme\SolidWorks\SLDWORKS.exe " & ActiveWorkbook.Path & "\" & Cells(1, 1), 3
End If


Set swApp = CreateObject("SldWorks.Application")

Set Part = swApp.ActiveDoc

swApp.ActiveDoc.ActiveView.FrameState = 1
boolstatus = Part.Extension.SelectByID("Punkt1@Ursprung", "EXTSKETCHPOINT", 0, 0, 0, False, 0, Nothing)
boolstatus = Part.Extension.SelectByID("Ebene vorne", "PLANE", 0, 0, 0, False, 0, Nothing)
Part.InsertSketch2 True
Part.ClearSelection2 True
Part.SketchRectangle 0, 0, 0, 0.03441029143898, 0.04896092896175, 0, 1
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID("Line4", "SKETCHSEGMENT", 0.03480355191257, 0.03519681238616, 0, False, 0, Nothing)

Set Annotation = Part.AddDimension2(0.0603655, 0.0214327, 0)

Part.ClearSelection2 True
Part.Parameter("D1@Skizze1").SystemValue = 0.05
boolstatus = Part.Extension.SelectByID("Line3", "SKETCHSEGMENT", 0.01632030965392, 0.04974744990893, 0, False, 0, Nothing)

Set Annotation = Part.AddDimension2(0.0163203, 0.0796352, 0)

Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID("D1@Skizze1@Teil2.SLDPRT", "DIMENSION", 0, 0, 0, False, 0, Nothing)
Part.Parameter("D2@Skizze1").SystemValue = 0.1
Part.ClearSelection2 True
Part.InsertSketch2 True
Part.ShowNamedView2 "*Trimetrisch", 8
Part.ClearSelection2 True
boolstatus = Part.Extension.SelectByID("Skizze1", "SKETCH", 0, 0, 0, False, 0, Nothing)
Part.FeatureManager.FeatureExtrusion True, False, False, 0, 0, 0.01, 0.01, False, False, False, False, 0.01745329251994,  0.01745329251994, False, False, False, False, 1, 1, 1
Part.SelectionManager.EnableContourSelection = 0

End Sub

Dieser steht nun innerhalb des Buttons in Excel. Betätige ich aber den Button in Excel, so meldet er mir folgenden Fehler:

Objektvariable oder With-Blockvariable nicht festgelegt

Dazu verweist der Debugger auf die Zeile mit dem Argument: swApp.ActiveDoc.ActiveView.FrameState = 1

Leider habe ich keine wirklich Ahnung von VBA und weiß nun nicht wie ich das Problem beheben kann.
Vielleicht kann mir ja jemand helfen.

Danke Tobias

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

Strolch
Mitglied
Entwicklungsingenieur


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

Beiträge: 26
Registriert: 05.07.2004

derzeit SWX2006 mit SP2
Nutzung für mittelgroße Baugruppen mit Zeichnungen, Ausbrüchen, Details, Explosionszeichungen etc. Bezüge, Toleranzen, Konfigurationen, Tabellen, Stücklisten.
Simulationen, Cosmos ...

erstellt am: 22. Dez. 2004 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 TobiasMuehling 10 Unities + Antwort hilfreich

Hallo Tobias
Zitat:
Original erstellt von TobiasMuehling:

Dim swApp As Object
Dim Part As Object

Excel weiß ja nichts von Solidworks, Das Object kann ja alles mögliche sein! Versuchs mal damit:

Dim swApp                  As SldWorks.SldWorks
Dim swCurrentDoc            As SldWorks.ModelDoc2
Dim swCurrentView          As SldWorks.View
Dim swCurrentSheet          As SldWorks.Sheet
Dim swCurrentConfig        As SldWorks.Configuration
Dim swDrawModel            As SldWorks.ModelDoc2


Natürlich vorher den Verweis auf Solidworks ins VBA-Projekt aufnehmen

Ciao Marco

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

TobiasMuehling
Mitglied


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

Beiträge: 4
Registriert: 10.12.2004

erstellt am: 22. Dez. 2004 18: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

Danke Marco,

hab es gleich ausprobiert. Leider meldet er mir einen Fehler beim Kompilieren...
und wie soll ich den Verweis auf Solidworks ins VBA-Projekt aufnehmen?
Sorry für dumme fragen...


Tobias

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: 22. Dez. 2004 20:33    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 TobiasMuehling 10 Unities + Antwort hilfreich

Aheu Tobias,

es ist ganz einfach. Als erstes startest Du SolidWorks mit dem Shell Aufruf. Danach benutzt Du dann aber CreateObject, welches ebenfalls ein SolidWorks startet (anscheinend bei Dir im Hintergrund), sonst hättest Du's schon bemerkt. Du hast jetzt zwei Möglichkeiten:

1) Anstatt CreateObject nimmst Du

Code:

Set swApp = GetObject(, "SldWorks.Application")

2) Schmeiß den Shell Befehl raus, bleibe bei CreateObject und benutze dann swApp.OpenDoc6 (genaue Syntax siehe API-Hilfe).

Ich rate Dir zur zweiten Lösung, denn falls Du schon ein SolidWorks offen hast, dann weisst Du mit CreateObject genau an welchem Dein Excel-Makro dranhängt (im Gegensatz zu zwei laufenden - eins durch den Shell-Befehl). Wenn Du sehen willst was es so macht (denn es scheint bei Dir im Huntergrund zu laufen (guck mal in den TaskManager), dann pack nach CreateObject noch folgendes hinzu.

Code:

swApp.Visible = True

Damit solltest Du auf jeden Fall weiter kommen. Den Rest von Deinem Code hab ich mir nicht weiter angeschaut. Wenn Du den Rat von Marco befolgst (auch wenn er mit Deinem Problem nichts zu tun hat), dann musst Du im Excel-VBA-Editor unter Extras/Verweise die SolidWorks Bibliotheken mit einbeziehen. Ist ganz nützlich, da VBA dann die vorhanden Methoden und Eigenschaften für Deine Befehle anzeigt und das vielleicht hier und da ganz nützlich ist bzw. verschafft sogar noch einen Zeitvorteil wenn man sich an die automatische Vervollständigung mit STRG-Leertaste gewöhnt hat.

Ich wünsche noch frohes schaffen und viel Erfolg. Wenn's wieder klemmt einfach fragen. Wenn ich Zeit habe versuch ich immer zu helfen.SolidWorks und Excel Makros sind mittlerweile 'ne Art Steckenpferd von mir.

Edit: Rechtschreibfehler behoben und Kleinigkeiten ergänzt 

Bis dann,
Kalle

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

[Diese Nachricht wurde von Kalle am 22. Dez. 2004 editiert.]

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

TobiasMuehling
Mitglied


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

Beiträge: 4
Registriert: 10.12.2004

erstellt am: 05. Jan. 2005 15:03    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 nochmal...

also ich war fleißig und hab mich mit euren vorschlägen bereichert und es ausprobiert...
doch egal was ich ändere es bleibt immernoch bei der alten fehlermeldung: blockvariable oder with-blockvariable nicht definiert...

vielleicht fällt euch doch noch was dazu ein...ich bin ratlos...

trotzdem hier schonmal vielen dank für die hilfen!!!

tobias

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

Lutz Federbusch
Ehrenmitglied V.I.P. h.c.
Dipl.-Ing. Maschinenbau



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

Beiträge: 3094
Registriert: 03.12.2001

alle SW seit 97+
AutoCAD2016-2022
ERP ProAlpha + CA-Link
Intel Core i7-7820K 32GB
Win10x64 Quadro K5000
SpacePilot

erstellt am: 06. Jan. 2005 11:19    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 TobiasMuehling 10 Unities + Antwort hilfreich


EXCELSW.xls.txt

 
Teste mal. ob das Makro in dieser Excel-Tabelle (Dateiendung umbenennen!) geht. Bei mir läufts jedenfalls...

------------------
Lutz Federbusch

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

PASCAM
Mitglied
Diplom Informatiker


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

Beiträge: 67
Registriert: 25.11.2002

erstellt am: 10. Jan. 2005 07:27    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 TobiasMuehling 10 Unities + Antwort hilfreich

Hallo Tobias,

Deine Shell-Anweisung geht so nicht. Denn diesser Befehl startet zwar SWXSolidWorks, aber wartet nicht bis es wirklich geladen ist. Das Createobject startet daher eine zweite Instanz von SWXSolidWorks, nicht sichtbar, wo Dein Teil dann auch nicht geladen hat.
Aendere Dein Code ungefaehr wie folgt ab, und es muesste klappen:
'If Erweiterung = ".sldprt" Then
'Shell "d:\Programme\SolidWorks2005\SLDWORKS.exe " & Dateiname
'End If


Set swApp = CreateObject("SldWorks.Application")
swApp.Visible = True
swApp.opendoc6 dateiname, 1, 0, "", MyErr, MyWarn

D.h., es reicht ein Createobject, Das visible setzen und dann eben nich Dein Dokument laden.

Gruss, Ralph

------------------
PASCAM Ralph Müller
Softwareentwicklung

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