| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
 | myCADtools , eine App
|
Autor
|
Thema: API: Variable für Hintergrundeinstellung gesucht (2688 mal gelesen)
|
businessbert Mitglied Konstruktion, Projektleitung, CadAdmin
 
 Beiträge: 225 Registriert: 30.04.2009 SolidWorks Premium 2015 SP4 - SNL Windows 7 Prof. 64-bit Intel Xeon CPU E5-1620 3.50GHz NVIDIA Quadro K4200 16GB Ram Samsung SSD SM84 512GB
|
erstellt am: 11. Feb. 2011 09:23 <-- editieren / zitieren --> Unities abgeben:         
Schönen Freitag Morgen! Screenshots mache ich gerne mit weißem Hintergrund. Daher ist bei mir beim einfarbigen Hintergrund weiß deffiniert, ansonsten arbeite ich mit verlaufendem Hintergrund. Mit den folgenden Zeilen (vom Makro-Editor aufgezeichnet) kann man das auch einfach und schnell umstellen: Zitat:
Sub main()Dim swApp As Object Set swApp = Application.SldWorks 'Hintergrund auf einfärbig umstellen boolstatus = swApp.SetUserPreferenceIntegerValue(swUserPreferenceIntegerValue_e.swColorsBackgroundAppearance, swColorsBackgroundAppearance_e.swColorsBackgroundAppearance_Plain) 'Hintergrund auf verlaufend stellen boolstatus = swApp.SetUserPreferenceIntegerValue(swUserPreferenceIntegerValue_e.swColorsBackgroundAppearance, swColorsBackgroundAppearance_e.swColorsBackgroundAppearance_Gradient) End Sub
Damit ich das jetzt in eine Makro unterbringen kann muss ich noch den aktuellen Zustand auslesen. Weiß jemand wie ich das korrekt abfragen kann? ------------------ Gruß Robert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)

 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: 11. Feb. 2011 09:43 <-- editieren / zitieren --> Unities abgeben:          Nur für businessbert
Hallo Robert, das sind ja alles Uservariablen, alles, was du mir SetUserPreferenceIntegerValue setzen kannst kannst du vorher auch mit GetUserPreferenceIntegerValue abfragen und dir in einer Variablen merken. Also vorher merken, dann einfarbig setzen, damit irgendwas tun, dann auf den gemerkten Wert zurücksetzen:
Code: Sub main() Dim swApp As Object Dim boolstatus As Boolean Dim OldBG As Integer Set swApp = Application.SldWorks ' alten Hintergrund merken OldBG = swApp.GetUserPreferenceIntegerValue(swUserPreferenceIntegerValue_e.swColorsBackgroundAppearance) 'Hintergrund auf einfärbig umstellen boolstatus = swApp.SetUserPreferenceIntegerValue(swUserPreferenceIntegerValue_e.swColorsBackgroundAppearance, swColorsBackgroundAppearance_e.swColorsBackgroundAppearance_Plain) MsgBox "Jetzt ist einfarbig" 'Hintergrund auf vorherigen Stand zurückstellen boolstatus = swApp.SetUserPreferenceIntegerValue(swUserPreferenceIntegerValue_e.swColorsBackgroundAppearance, OldBG) End Sub
Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Stefans SolidWorks Blog Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
businessbert Mitglied Konstruktion, Projektleitung, CadAdmin
 
 Beiträge: 225 Registriert: 30.04.2009 SolidWorks Premium 2015 SP4 - SNL Windows 7 Prof. 64-bit Intel Xeon CPU E5-1620 3.50GHz NVIDIA Quadro K4200 16GB Ram Samsung SSD SM84 512GB
|
erstellt am: 11. Feb. 2011 12:54 <-- editieren / zitieren --> Unities abgeben:         
Hallo Stefan, Dankeschön, so gehts! Eine Frage hab ich noch: Damit sich der Hintergrund dann tatsächlich umstellt muss ich noch einen Bildneuaufbau machen. Herr Google und die API-Hilfe haben mir beigebracht dass das der Befehl "GraphicsRebuild" ist. Aber so sehr ich es auch probier, das bekomm ich nciht zum laufen. Hast du da auch noch einen Tipp für mich? ------------------ Gruß Robert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GDawg Ehrenmitglied V.I.P. h.c. Teamleiter FEM Simulation

 Beiträge: 2622 Registriert: 12.07.2004 SolidWorks_2o2o SP3.o Win10_x64, Quadro_P2ooo. VisualStudio_2o19_Pro. FEM: Forge_NxT_HPC, ANSYS_WB. 3D-Printer: Ultimaker_2, Tinker_Gnome.
|
erstellt am: 11. Feb. 2011 12:59 <-- editieren / zitieren --> Unities abgeben:          Nur für businessbert
Der Tip ist, versuche es mal mit dem Makro-Recorder  Code:
boolstatus = Part.EditRebuild3() '[CTRL]+B boolstatus = Part.ForceRebuild3(True) '[CTRL]+Q
EDIT: Oder vielleicht kurz weg-zoomen und wieder zurück...?! [Diese Nachricht wurde von GDawg am 11. Feb. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Oberparleiter Mitglied Konstrukteur
  
 Beiträge: 706 Registriert: 06.06.2000
|
erstellt am: 11. Feb. 2011 13:26 <-- editieren / zitieren --> Unities abgeben:          Nur für businessbert
Hallo, Part.EditRebuild() reicht aus, das praktizieren wir schon lange so. Was noch zu überlegen ist wären folgende Einstellungen: Prüfen ob Ebenen ein oder ausgeblendet sind. Prüfen ob der Ursprung ein oder ausgeblendet ist. Prüfen ob temporäre Achsen ein oder ausgeblendet sind. Prüfen welche Konfiguration aktiv ist (sofern mehrere vorhanden). Und dann z.B. die Isometrische Ansicht und ein voller Zoom damit das ganze Bild auch mit dem Teil/BG ausgefüllt ist. Was mit dann noch aufgefallen ist wäre wenn man einen Widescreen hat wandert das Teil auf der Grafik nach rechts. Beheben kann man das mit der Fenstergröße beschränken und die Featuremanagerbreite auf 0 setzen. Dann ist alles absolut Zentral. Wir arbeiten mit dem Grafik erstellen schon lange so. Nach dem wir Widescreens bekommen haben trat dieses Problem erst auf und ich musste das Programm anpassen.
------------------ Gruss Frank O. www.google.de/ig Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
businessbert Mitglied Konstruktion, Projektleitung, CadAdmin
 
 Beiträge: 225 Registriert: 30.04.2009 SolidWorks Premium 2015 SP4 - SNL Windows 7 Prof. 64-bit Intel Xeon CPU E5-1620 3.50GHz NVIDIA Quadro K4200 16GB Ram Samsung SSD SM84 512GB
|
erstellt am: 15. Feb. 2011 16:56 <-- editieren / zitieren --> Unities abgeben:         
Hallo, mit Part.EditRebuild() bin ich nicht ganz glücklich gewesen und hab deswegen noch ein bisschen herumgegoogelt. Die Lösung ist dann recht simpel ausgefallen und das Makro deckt nun unseren Bedarf. Einfach nur von Einfärbigem auf verlaufenden Hintergrund umschalten und anders herum. Der Makel den ich nach Steffans Vorschlag noch hatte war, dass der Hintergrund sich erst aktualisiert hat wenn ich mit der Maus geklickt, oder den Spacepilot bewegt habe. part.WindowRedraw war hier des Rätsels Lösung. Einen Neuaufbau brauch / will ich an dieser Stelle gar nicht. Im schlechtesten Fall würde das nämlich bedeuten dass ich gerade Stress habe, ein paar Screenshots machen will, und dann behindert mich plötzlich ein Rebuild.
Zitat: Sub Main() Dim swApp As Object Dim boolstatus As Boolean Dim OldBG As Integer Dim part As Object Set swApp = Application.SldWorks Set part = swApp.ActiveDoc ' alten Hintergrund auslesen OldBG = swApp.GetUserPreferenceIntegerValue(swUserPreferenceIntegerValue_e.swColorsBackgroundAppearance) If OldBG = 1 Then 'Hintergrund auf einfärbig umstellen boolstatus = swApp.SetUserPreferenceIntegerValue(swUserPreferenceIntegerValue_e.swColorsBackgroundAppearance, swColorsBackgroundAppearance_e.swColorsBackgroundAppearance_Plain) part.WindowRedraw Else 'Hintergrund auf vorherigen Stand zurückstellen 'boolstatus = swApp.SetUserPreferenceIntegerValue(swUserPreferenceIntegerValue_e.swColorsBackgroundAppearance, OldBG) boolstatus = swApp.SetUserPreferenceIntegerValue(swUserPreferenceIntegerValue_e.swColorsBackgroundAppearance, swColorsBackgroundAppearance_e.swColorsBackgroundAppearance_Gradient) part.WindowRedraw End If End Sub
Danke für euer aller Hilfe! ------------------ Gruß Robert Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
u.clemens Mitglied Konstrukteur
  
 Beiträge: 964 Registriert: 04.07.2000 engineer's law o cheap o fast o good check only two !
|
erstellt am: 16. Feb. 2011 09:20 <-- editieren / zitieren --> Unities abgeben:          Nur für businessbert
hallo, wir haben seit Jahren diese Variante im Einsatz, die wohl noch etwas einfacher ist:
Code:
' ****************************************************************************** ' ToogleBackGround ' ------------------------------------------------------------------------------ ' macro recorded on 04/20/06 by u.clemens ' ****************************************************************************** Dim swApp As Object Dim Part As ObjectConst swColorsGradientPartBackground = 68 Sub main() Set swApp = Application.SldWorks Set Part = swApp.ActiveDoc stat = swApp.GetUserPreferenceToggle(swColorsGradientPartBackground) swApp.SetUserPreferenceToggle swColorsGradientPartBackground, Not (stat) Part.WindowRedraw End Sub
------------------ mfg uc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
mkkk Mitglied
 
 Beiträge: 105 Registriert: 04.03.2005
|
erstellt am: 16. Feb. 2011 09:36 <-- editieren / zitieren --> Unities abgeben:          Nur für businessbert
|