Hot News aus dem CAD.de-Newsletter:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  SolidWorks Makro

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:   SolidWorks Makro (433 mal gelesen)
HADI-AT
Mitglied
Kostruktion


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

Beiträge: 43
Registriert: 06.09.2019

SolidWorks 2019

erstellt am: 02. Okt. 2019 15: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

Hallo zusammen, ich möchte gerne ein einfaches Makro schreiben "Modell speichern"

Bei folgenden Punkten bräuchte ich Hilfe:
Ausblenden der Skizzen
Ausblenden der Ebenen

Klar gibt es die Anzeigeoption, aber soweit ich weiß werden nicht konkret die Ebenen bzw. Skizzen ausgeblendet sondern nur die Erscheinung nicht mehr gezeigt. Also meine Kollegen würden die Ebenen, Skizzen trotzdem sehen wenn sie die Datei öffnen.

Kennt wer einen Trick dafür?

Gruß,
Hadi

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: 2238
Registriert: 18.07.2012

-Solid Works 2019 SP3
-Pro Engineer WF 3

erstellt am: 02. Okt. 2019 16: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 HADI-AT 10 Unities + Antwort hilfreich

Hallo Hadi,

schau mal hier in den Thread, sollta das selbe Thema sein und ist auch erst paar Tage alt. https://ww3.cad.de/foren/ubb/Forum2/HTML/032364.shtml

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

HADI-AT
Mitglied
Kostruktion


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

Beiträge: 43
Registriert: 06.09.2019

SolidWorks 2019

erstellt am: 03. Okt. 2019 09:51    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 für den Link! Das erledigt es einwandfrei. Entschuldige, dass es ein neuer Thread geworden ist.

Bei einem anderen Makro hätte ich auch ein Problem.
Ich bin dem programmieren leider nicht mächtig, deswegen nutze ich bisher immer die Aufnehmen Funktion wo man nciht viel mit dem Code zu tun hat.

Makro funktioniert bisher so weit
- Auf Blatt 1 springen (4x auf voriges Blatt springen - ausgelegt auf max. 5 Blätter) - läuft
- in Blatt zoomen - läuft
- Baustruktur schließen (funktioniert nicht)
- Neuaufbau der Ansichten (funktioniert nicht)
- abspeichern (funktioniert nicht)

ohne großes Wissen scheint es mir, dass SWX die Befehle gar nicht aufnimmt. Hier einmal der Code. Ich kann leider wenig entziffern.

Dim swApp As Object

Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc
Dim myModelView As Object
Set myModelView = Part.ActiveView
myModelView.FrameState = swWindowState_e.swWindowMaximized
Part.SheetPrevious

' Zoom To Fit
Part.ViewZoomtofit2
Part.ClearSelection2 True
Part.SheetPrevious

' Zoom To Fit
Part.ViewZoomtofit2
Part.SheetPrevious

' Zoom To Fit
Part.ViewZoomtofit2
Part.SheetPrevious

' Zoom To Fit
Part.ViewZoomtofit2

' Zoom To Sheet
Part.Extension.ViewZoomtoSheet

' Zoom To Fit
Part.ViewZoomtofit2
End Sub

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

Winni-two
Mitglied
Ing. Maschb.


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

Beiträge: 121
Registriert: 12.03.2010

SW 2018 SP5
Intel Xenon W2135 @3.7GHz
Win 10 64 bit
Graka: Nvidia Quadro P4000
32 GB Ram

erstellt am: 03. Okt. 2019 10:04    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 HADI-AT 10 Unities + Antwort hilfreich

Hallo Hadi,

willst du nun die Skizzen und Ebenen im Teil oder in der Zeichnung per Makro ausblenden?

Gruss Winni

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

HADI-AT
Mitglied
Kostruktion


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

Beiträge: 43
Registriert: 06.09.2019

SolidWorks 2019

erstellt am: 03. Okt. 2019 10: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

Ebenen, Skizzen ausblenden im Teil.
Das Makro aus dem Link den Bernd geschickt hat funktioniert einwandfrei.

Der zweite Post ist über ein anderes Makro womit ich Probleme habe. Das was ich damit bezwecken möchte habe ich hereingeschrieben. - Zwei unterschiedliche Makros. Sollte ich dafür vielleicht einen neuen Thread öffnen?

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

Winni-two
Mitglied
Ing. Maschb.


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

Beiträge: 121
Registriert: 12.03.2010

SW 2018 SP5
Intel Xenon W2135 @3.7GHz
Win 10 64 bit
Graka: Nvidia Quadro P4000
32 GB Ram

erstellt am: 03. Okt. 2019 11: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 Nur für HADI-AT 10 Unities + Antwort hilfreich


Sheets.zip

 
Hallo Hadi,

versuch mal Makro im Anhang.

Gruss Winni

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

HADI-AT
Mitglied
Kostruktion


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

Beiträge: 43
Registriert: 06.09.2019

SolidWorks 2019

erstellt am: 03. Okt. 2019 13: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

Danke danke! 
Wenn es jetzt noch speichert wäre das das I-Tüpfelchen!

Darf ich einmal spekulieren? Bzw. würdest du ergänzen was da passiert?

Sub main()
?
Set swApp = Application.SldWorks
Set Model = swApp.ActiveDoc

Erfassen, zählen der Blätter?
Set swSheet = Model.GetCurrentSheet
SheetNames = Model.GetSheetNames
AnzahlBl = Model.GetSheetCount

Gehe zu Blatt 1 und zoom?
For j = AnzahlBl - 1 To 0 Step -1
Model.ActivateSheet (SheetNames(j))
Model.ViewZoomtofit2
Next j

Modellaufbau und schließen vom Baum?
Model.ForceRebuild3 (False)
SendKeys "{ESC}"
SendKeys "+{C}"

End Sub

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

Winni-two
Mitglied
Ing. Maschb.


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

Beiträge: 121
Registriert: 12.03.2010

SW 2018 SP5
Intel Xenon W2135 @3.7GHz
Win 10 64 bit
Graka: Nvidia Quadro P4000
32 GB Ram

erstellt am: 03. Okt. 2019 13:24    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 HADI-AT 10 Unities + Antwort hilfreich

Versuchs mal folgendes for EndSub einzufügen:

Dim boolstatus          As Boolean
Dim lErrors            As Long
Dim lWarnings          As Long

boolstatus = Model.Save3(swSaveAsOptions_Silent, lErrors, lWarnings)

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

HADI-AT
Mitglied
Kostruktion


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

Beiträge: 43
Registriert: 06.09.2019

SolidWorks 2019

erstellt am: 03. Okt. 2019 13:32    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, bist Held des Tages 

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

HADI-AT
Mitglied
Kostruktion


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

Beiträge: 43
Registriert: 06.09.2019

SolidWorks 2019

erstellt am: 03. Okt. 2019 14: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

Eine Sache noch... das Makro schaltet den Numblock aus??? ^^

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

Winni-two
Mitglied
Ing. Maschb.


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

Beiträge: 121
Registriert: 12.03.2010

SW 2018 SP5
Intel Xenon W2135 @3.7GHz
Win 10 64 bit
Graka: Nvidia Quadro P4000
32 GB Ram

erstellt am: 03. Okt. 2019 14:50    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 HADI-AT 10 Unities + Antwort hilfreich

+ Numlock:

Dim swApp As Object
Dim Model As Object
Dim AnzahlBl As Long
Dim swSheet  As SldWorks.Sheet
Dim SheetNames As Variant
Dim j As Long
Dim boolstatus          As Boolean
Dim lErrors            As Long
Dim lWarnings          As Long

Sub main()

Set swApp = Application.SldWorks
Set Model = swApp.ActiveDoc

    If Model Is Nothing Then
        MsgBox ("Kein Modell geöffnet")
        End
    End If
   
    If Model.GetType <> 3 Then 'Zeichnung
        MsgBox ("Nur für Zeichnungen sinnvoll")
        End
    End If


Set swSheet = Model.GetCurrentSheet
SheetNames = Model.GetSheetNames
AnzahlBl = Model.GetSheetCount


For j = AnzahlBl - 1 To 0 Step -1
Model.ActivateSheet (SheetNames(j))
Model.ViewZoomtofit2
Next j

Model.ForceRebuild3 (False)
SendKeys "{ESC}", True
SendKeys "+{C}", True
SendKeys "{NUMLOCK}", True

boolstatus = Model.Save3(swSaveAsOptions_Silent, lErrors, lWarnings)
If boolstatus = False Then MsgBox "Zeichnung wurde nicht gespeichert"

End Sub

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

HADI-AT
Mitglied
Kostruktion


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

Beiträge: 43
Registriert: 06.09.2019

SolidWorks 2019

erstellt am: 03. Okt. 2019 15:06    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

Da funktioniert es nicht mehr. Bleibt bei speichern oder so hängen.

Ich habe es jetzt so aus den Steinen zusammengebastelt, dann funkts.

Dim swApp As Object
Dim Model As Object
Dim AnzahlBl As Long
Dim swSheet  As SldWorks.Sheet
Dim SheetNames As Variant
Dim j As Long

Sub main()

Set swApp = Application.SldWorks
Set Model = swApp.ActiveDoc


Set swSheet = Model.GetCurrentSheet
SheetNames = Model.GetSheetNames
AnzahlBl = Model.GetSheetCount


For j = AnzahlBl - 1 To 0 Step -1
Model.ActivateSheet (SheetNames(j))
Model.ViewZoomtofit2
Next j


Model.ForceRebuild3 (False)
SendKeys "{ESC}"
SendKeys "+{C}"
SendKeys "+{NUMLOCK}", True

Dim boolstatus          As Boolean
Dim lErrors            As Long
Dim lWarnings          As Long

boolstatus = Model.Save3(swSaveAsOptions_Silent, lErrors, lWarnings)

End Sub

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: 627
Registriert: 17.01.2007

SWX 2017 SP5
AutoCAD 2016
Win 10 pro 64 bit
Intel Xeon 3,6GHz
64GB RAM
Nvidia Quadro M5000
SWx EPDM

erstellt am: 07. Okt. 2019 09:24    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 HADI-AT 10 Unities + Antwort hilfreich

Was hat mich damals dieses Sch*?$%§ Sendkeys an Nerven gekostet... 

Das Problem ist, dass jeder (!) Sendkeys-Aufruf eine zufällige Wahrscheinlichkeit hat, den Numlock aus- oder auch wieder einzuschalten. Will heißen, weder die Anzahl der Sendkeys-Befehle im Code noch die Anzahl der Makro-Ausführungen insgesamt haben einen Einfluß, ob am Ende das Lämpchen leuchtet.

Zum Glück geht das nicht nur mir so.

Wie dem auch sei, dieser Code funktioniert bei mir und meinen Kollegen mittlerweile zuverlässig.

Viel Spaß damit. Anm.: Ich hab 2x SendKeys drin. 

Gruß, Jens 

Code:
Dim swApp              As SldWorks.SldWorks
Dim Part                As SldWorks.ModelDoc2

Dim keys(0 To 255)      As Byte

Dim o                  As OSVERSIONINFO

Dim ReadOnlyState      As Boolean
Dim bNumLockState      As Boolean

'**********************************************************************************
'Deklarationen für NUM-Lock
'**********************************************************************************
' Declare Type for API call:
Private Type OSVERSIONINFO
  dwOSVersionInfoSize As Long
  dwMajorVersion As Long
  dwMinorVersion As Long
  dwBuildNumber As Long
  dwPlatformId As Long
  szCSDVersion As String * 128  '  Maintenance string for PSS usage
End Type

' API declarations:
Private Declare PtrSafe Function GetVersionEx Lib "Kernel32" Alias "GetVersionExA" (lpVersionInformation As OSVERSIONINFO) As Long
Private Declare PtrSafe Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwflags As Long, ByVal dwExtraInfo As Long)
Private Declare PtrSafe Function GetKeyboardState Lib "user32" (pbKeyState As Byte) As Long
Private Declare PtrSafe Function SetKeyboardState Lib "user32" (lppbKeyState As Byte) As Long

' Constant declarations:
Const VK_NUMLOCK = &H90
Const VK_SCROLL = &H91
Const VK_CAPITAL = &H14
Const KEYEVENTF_EXTENDEDKEY = &H1
Const KEYEVENTF_KEYUP = &H2
Const VER_PLATFORM_WIN32_NT = 2
Const VER_PLATFORM_WIN32_WINDOWS = 1

Sub main()
   
    Set swApp = Application.SldWorks
    Set Part = swApp.ActiveDoc
   
    bNumLockState = IsNumLockOn()

'Hier Makro-Code mit Sendkeys

'***********************************************************************
'NUM-Lock wieder einschalten
'***********************************************************************
If IsNumLockOn() <> bNumLockState Then
o.dwOSVersionInfoSize = Len(o)
GetVersionEx o
GetKeyboardState keys(0)

  If o.dwPlatformId = VER_PLATFORM_WIN32_WINDOWS Then  '=====Win95
keys(VK_NUMLOCK) = Abs(Not keys(VK_NUMLOCK))
SetKeyboardState keys(0)
  ElseIf o.dwPlatformId = VER_PLATFORM_WIN32_NT Then  '=====WinNT
  'Simulate Key Press
keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY Or 0, 0
  'Simulate Key Release
keybd_event VK_NUMLOCK, &H45, KEYEVENTF_EXTENDEDKEY _
  Or KEYEVENTF_KEYUP, 0
  End If
End If

End Sub

Function IsNumLockOn() As Boolean
o.dwOSVersionInfoSize = Len(o)
GetVersionEx o
GetKeyboardState keys(0)
IsNumLockOn = keys(VK_NUMLOCK)
End Function


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

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