| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| EMV Wechselrichtersimulation mit CST Studio Suite® |
Autor
|
Thema: einzelne Einträge Combobox ausblenden (2010 mal gelesen)
|
Joshua63 Mitglied Maschinenbautechniker
Beiträge: 371 Registriert: 08.11.2006 W10 SP1 Intel i7 8700K Quatro P4000 32GB RAM SW 2021 SP4.1 SWX PDM Professional 2021
|
erstellt am: 25. Sep. 2015 13:18 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, Frage: ist es möglich einzelne Einträge für eine Combobox in Makro auszublenden, bezogen auf den Text in einem anderen Textfeld ? Mein Fall: Ich habe eine Combobox in der man die Oberflächenbearbeitung auswählen kann. Es kommt jetzt des öffteren vor, das die falsche Oberflächenbearbeitung ausgewählt wird. Dumm gelaufen wenn z.B. bei einem Stahlteil eloxiert gewählt wird. Ich möchte einen Bezug zum eingetragenen Material herstellen. Wenn Alu verwendet wird, sollen alle Einträge die nur für Stahl gehen nicht zur Auswahl stehen. ciao ------------------ Viele Wege führen zum Ziel .......... und ich will alle wissen ! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Metallica88 Mitglied Konstrukteur; CAD Admin
Beiträge: 379 Registriert: 01.04.2009 Win7 Pro 64bit SolidWorks 2015 SP5 MaxxDB 2015 Fujitsu Celsius M470-2 / M720 Quadro 2000 / Quadro K2000 Intel Xeon W3690 6x3,46GHz (3,73GHz) / Intel Xeon E5-1650 6x3,2GHz (3,8GHz) 12GB RAM / 16GB RAM 120GB SSD
|
erstellt am: 27. Sep. 2015 13:15 <-- editieren / zitieren --> Unities abgeben: Nur für Joshua63
|
AlexSchaaf Mitglied
Beiträge: 21 Registriert: 23.09.2014 SWX 2014 SP5
|
erstellt am: 28. Sep. 2015 10:23 <-- editieren / zitieren --> Unities abgeben: Nur für Joshua63
Hallo, das geht eigentlich ganz einfach: Als erstes musst du natürlich das aktuelle Material einlesen. Ich weiß nicht wieviele verschiedene Materialien ihr einstellen könnt, aber du müsstest im Makro dann eine händische Zuordnung machen.
Im folgenden Beispiel siehst du schonmal, wie man das Material ausliest: http://help.solidworks.com/2012/English/api/sldworksapi/Get_Material_Property_Names_Example_VB.htm Die Folgende Prozedur müsstest du dann im Userform_Initialize Sub ausführen:
Material einlesen Auswerten zu welcher Klasse es gehört (Stahl, Aluminium,...) Checkboxen einblenden/ausblenden. (Einfach Me.Checkboxname.Show=False) Falls du weitere Tips benötigst, wäre zunächst mal interessant, ob ihr eine eigene Materialdatenbank benutzt und wie diese Aufgebaut ist. Mfg
Alex Schaaf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Joshua63 Mitglied Maschinenbautechniker
Beiträge: 371 Registriert: 08.11.2006 W10 SP1 Intel i7 8700K Quatro P4000 32GB RAM SW 2021 SP4.1 SWX PDM Professional 2021
|
erstellt am: 28. Sep. 2015 17:51 <-- editieren / zitieren --> Unities abgeben:
Hallo Ihr beiden, Metallica88 --> Die Box wird mit der Liste die im Makro steht befüllt. Kommt etwas dazu wird die Liste von mir erweitert. Alex --> Ich lese das Material schon aus, steht in einem Textfeld. Wir haben eine eigene Datenbank, die den gleichen Aufbau hat wie die SWX-Datenbank. Ich dachte man kann die Einträge in der Makroliste irgendwie mit einer Option versehen. Das mit den 2 Boxen wäre dann auch meine Lösung gewesen. Ciao
------------------ Viele Wege führen zum Ziel .......... und ich will alle wissen ! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andi Beck Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 2572 Registriert: 02.10.2006 Firma: SW 2023-4.0 + PDM Prof. Windows 10 Pro 64bit, i9-11900 32 GbRAM, Quadro P2200 Home: SW 2022-5.0 Passungstabelle von Heinz Windows 11 Pro 64bit, i7-12700K, 32 GbRAM, GeForce GTX 1050Ti Samsung C34H892, 3440x1440 Pixel
|
erstellt am: 28. Sep. 2015 21:35 <-- editieren / zitieren --> Unities abgeben: Nur für Joshua63
Hallo, also mit 2 Boxen musst du nicht arbeiten. Du kannst auch einfach eine Abfrage bei dem füllen der Combobox einfügen. Beispiel: Private Sub UserForm_Initialize() Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc Dim Part As SldWorks.PartDoc Dim Database As String Dim MaterialName As String Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc Set Part = swModel MaterialName = Part.GetMaterialPropertyName(Database) cmbSfOberfläche.AddItem "perlstrahlen" Select Case MaterialName Case "3.1645 (EN AW-2007)", _ "3.3547 (EN-AW 5083)", _ "EN AW-6060": _ cmbSfOberfläche.AddItem "eloxieren" cmbSfOberfläche.AddItem "perlstr.-elox." cmbSfOberfläche.AddItem "polieren-elox." End Select cmbSfOberfläche.AddItem "verzinken" cmbSfOberfläche.AddItem "polieren" cmbSfOberfläche.AddItem "lackieren" End Sub So wird zwischen "perlstrahlen" und "verzinken" drei weitere Varianten von "eloxieren" eingefügt, vorausgesetzt, es ist das richtige Material. Materialvarianten gibst du in der Case Anweisung an. Die genaue Schreibweise kannst du dir mit Debug.Print " Material = " & MaterialName holen. Aber evtl. solltest du dir lieber beim beenden des Makros eine Abfrage einbauen und eine Msg-Box aufpoppen lassen, wenn da unverträgliche Einträge vorhanden sind. Grüße, Andi ------------------ Hast du kein Problem? Such dir eins. ( Und löse es ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Joshua63 Mitglied Maschinenbautechniker
Beiträge: 371 Registriert: 08.11.2006 W10 SP1 Intel i7 8700K Quatro P4000 32GB RAM SW 2021 SP4.1 SWX PDM Professional 2021
|
erstellt am: 29. Sep. 2015 11:37 <-- editieren / zitieren --> Unities abgeben:
Hallo Andi, mal sehen ob ich das verstanden habe: das ist die variable fürs Material: MaterialName = Part.GetMaterialPropertyName(Database) Holst du dir den Materialnamen aus der Datenbank oder dem Teil ? Ich schreibe das Material schon in ein Textfeld (evaluierte Wert), das könnte ich auch verwenden, oder ? > cmbSfOberfläche.AddItem "perlstrahlen" Select Case MaterialName Case "3.1645 (EN AW-2007)", _ "3.3547 (EN-AW 5083)", _ "EN AW-6060": _ cmbSfOberfläche.AddItem "eloxieren" cmbSfOberfläche.AddItem "perlstr.-elox." cmbSfOberfläche.AddItem "polieren-elox." End Select cmbSfOberfläche.AddItem "verzinken" cmbSfOberfläche.AddItem "polieren" cmbSfOberfläche.AddItem "lackieren" > Das sind die Einträge für die combobox, den ersten setzt du normal und mit "SelectCase" trägst du materialbedingte Einträge fest. Die letzten 3 sind dann wieder normal gesetzt. Kann ich "SelectCase" auch mit "If" verwenden ? Wenn das Material ALU ist sollen auch nur Einträge für ALU drin stehen. Für Stahl gilt dann das gleiche. Das Ganze muss ich dann dort einfügen wo ich die Daten aus dem Teil auslese. Die Liste für die combobox, die ich jetzt im Makro stehen habe fällt dann weg, oder ? Danke für die Info....
------------------ Viele Wege führen zum Ziel .......... und ich will alle wissen ! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3189 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 29. Sep. 2015 13:40 <-- editieren / zitieren --> Unities abgeben: Nur für Joshua63
Zitat: Original erstellt von Joshua63: ... Kann ich "SelectCase" auch mit "If" verwenden ? ...
??? wenn du "SelectCase" hast, wozu möchtest du dann noch "if"? case a1, a2, a3 ... "aluliste" case st1, st2, st3 ... "stahlliste" ist doch das gleiche wie if material=a1 or material=a2 or material=a3 .... if material=st1 or material=st2 or material=a3 ... nur viel kürzer ... wenn da nichts allgemeingültig bleibt, kann das wohl wegbleiben ... oder hab ich da was falsch verstanden? Gruß, Christian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Joshua63 Mitglied Maschinenbautechniker
Beiträge: 371 Registriert: 08.11.2006 W10 SP1 Intel i7 8700K Quatro P4000 32GB RAM SW 2021 SP4.1 SWX PDM Professional 2021
|
erstellt am: 29. Sep. 2015 14:30 <-- editieren / zitieren --> Unities abgeben:
Hi, Ich habe 3 Kategorien von Oberflächenbearbeitungen: Alu, Stahl und Materialunabhängig. ich dache ich kann mir die Stahlliste ersparen (bestimmt mindestens 70 Sorten). Wir haben nicht mehr als 10 Alusorten im Einsatz, bei Stahl sieht das schon viel schlimmer aus. Ich dachte an sowas wie: wenn alu dann nimm die Aluliste, sonst nimm die anderen Einträge für Stahl. als letztes dann ganz normal die Einträge die Materialunabhängig sind und immer drin stehen. Strukturbeispiel: cmbSfOberfläche.AddItem "--- keine ---" if Case.........(ALU) dann cmbSfOberfläche.AddItem "eloxieren" cmbSfOberfläche.AddItem "perlstr.-elox." cmbSfOberfläche.AddItem "polieren-elox." else (für Stahl) cmbSfOberfläche.AddItem "oxidieren" cmbSfOberfläche.AddItem "härten" cmbSfOberfläche.AddItem "brünieren" end if (materialunabhängig) cmbSfOberfläche.AddItem "lackieren" cmbSfOberfläche.AddItem "pulvern" ENDE nur mal so die Struktur dargestellt, ist das verständlich ? Gruß
------------------ Viele Wege führen zum Ziel .......... und ich will alle wissen ! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christian_W Ehrenmitglied V.I.P. h.c. Konstrukteur (Dipl-Ing)
Beiträge: 3189 Registriert: 04.04.2001 CSWP 12/2015<P>SWX2021sp5 Win10/11 (SWX2016, SWX2012) proAlpha6.2e00/calinkV9 (Tactonworks) (Medusa7, NesCAD2010, solidEdge19)
|
erstellt am: 29. Sep. 2015 17:40 <-- editieren / zitieren --> Unities abgeben: Nur für Joshua63
Hallo, habe jetzt nicht in die DIN oder in deine Materialnamensliste geschaut, aber viellicht mit "like" ? (oder ähnlichem) if Material like "3.*" then' Alu oder kommt man auch an die Materialkategorie? Dann muss die Liste im Makro nicht nachgepflegt werden. Gruß, Christian
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Joshua63 Mitglied Maschinenbautechniker
Beiträge: 371 Registriert: 08.11.2006 W10 SP1 Intel i7 8700K Quatro P4000 32GB RAM SW 2021 SP4.1 SWX PDM Professional 2021
|
erstellt am: 30. Sep. 2015 10:42 <-- editieren / zitieren --> Unities abgeben:
Hi, so was in der Richtung hab ich mir auch gedacht. Da ich das Material eh schon in einem Textfeld habe, könnte ich die ersten beiden Buchstaben "AL" als Kriterium abfragen und müsste die Liste auch nicht nachpflegen. Werde mal ein wenig probieren........ Danke für die Anregungen an alle. ciao ------------------ Viele Wege führen zum Ziel .......... und ich will alle wissen ! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |