Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API: Variable für Hintergrundeinstellung gesucht

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
  
myCADtools , eine App
Autor Thema:  API: Variable für Hintergrundeinstellung gesucht (2688 mal gelesen)
businessbert
Mitglied
Konstruktion, Projektleitung, CadAdmin


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

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 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

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)



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: 11. Feb. 2011 09:43    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 businessbert 10 Unities + Antwort hilfreich

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


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

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 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 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



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

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 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 businessbert 10 Unities + Antwort hilfreich

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


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

Beiträge: 706
Registriert: 06.06.2000

erstellt am: 11. Feb. 2011 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 Nur für businessbert 10 Unities + Antwort hilfreich

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


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

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 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 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


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

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 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 businessbert 10 Unities + Antwort hilfreich

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 Object

Const 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



Anzeige:Infos zum Werbeplatz >>

speedyPDM CAD APP für Andere, Datenaustausch, Allgemeine Werkzeuge

speedyPDM ist das führende technische Dokumenten- und Produktdatenmanagementsystem für Solidworks, Solid Edge, Inventor, AutoCAD, ZWCAD, BricsCAD, Office und Email inklusive Revisionsmanagement.

mkkk
Mitglied



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

Beiträge: 105
Registriert: 04.03.2005

erstellt am: 16. Feb. 2011 09: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 businessbert 10 Unities + Antwort hilfreich

swColorsGradientPartBackground ist laut API-Hilfe veraltet.

Stattdessen sollen die Konstanten in swColorsBackgroundAppearance_e verwendet werden.

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