Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API Aufruf Material Dialog-Box

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
  
Innovationstag mit SolidCAM und Plogmann bei HEDELIUS in Meppen
Autor Thema:  API Aufruf Material Dialog-Box (2136 mal gelesen)
Ian Malcom
Mitglied
Konstruktion


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

Beiträge: 45
Registriert: 27.11.2002

Win7 x64 Pro SP1
2x Xeon(R) E5-2620 v3
32 GB Ram
Quadro K4200

erstellt am: 16. Jun. 2016 12:55    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 suche verzweifelt nach einer Möglichkeit in VBA (Makro) die Material Dialog-Box aufzurufen um ein Material auszuwählen.

Bin für jeden Tipp oder Codeschnipsel dankbar!

Gruß, IanMalcom

------------------
"Auf der Schachtel stand WIN98, WIN2000 oder besser. Also habe ich mir einen MAC besorgt ..."

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

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



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

Beiträge: 2675
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
------------------
Zuletzt beruflich:
- SWX2020 SP5;
- SAP/PLM+ECTR;
- DriveWorks Pro;
- Programmierung:
VBA, aktuell Visual Studio 2022/VB.Net
------------------
ab 2024 (privat):
Onshape und anderes

erstellt am: 16. Jun. 2016 13:12    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 Ian Malcom 10 Unities + Antwort hilfreich

Hmm.. da würde ich mir überlegen, einen eigenen, vereinfachten Dialog zu erzeugen, der Originaldialog ist ja für die reine Auswahl total überfrachtet.

Die SolidWorks-Materialdatenbank ist ja keine Datenbank, sondern nur eine XML-Datei, aus der du deine Materialnamen auslesen kannst.

Die kannst du dann in einer einfachen Listbox zur Auswahl stellen.
Und dann mit

Code:
Part.SetMaterialPropertyName2 <Konfig-Name>, <Pfad zur Materialdatei *.sldmat>, <Name des Materials>

deinem Teil zuweisen.
Würde ich jedenfalls so machen.

------------------
Klaus

www.al-ko.com | mein Gästebuch

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

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 16. Jun. 2016 13: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 Ian Malcom 10 Unities + Antwort hilfreich

Hallo,

um deine Frage zu beantworten, also einen direkten API-Call zum öffnen des "Material bearbeiten"-Dialog gibt es wahrscheinlich nicht, hab zumindest auf die schnelle keinen gefunden. Du könntest aber mit Hilfe der CommandID den Befehl ausführen.

Code:
Option Explicit

Dim swApp As Object
Dim swModel As Object
Dim swModelDocExt As Object
Dim boolstatus As Boolean

Sub main()

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swModelDocExt = swModel.Extension

swModelDocExt.RunCommand swCommands_EditMaterial, "Open Material Dialog"

End Sub


So funktioniert es bei mir zumindest, aber ist schon sehr quick 'n dirty   .

Ich würde mich dann doch eher Klaus seinem vorgehen anschließen und eine eigene Listbox zum auswählen erzeugen.

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete  

[Diese Nachricht wurde von bk.sc am 16. Jun. 2016 editiert.]

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

Ian Malcom
Mitglied
Konstruktion


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

Beiträge: 45
Registriert: 27.11.2002

Win7 x64 Pro SP1
2x Xeon(R) E5-2620 v3
32 GB Ram
Quadro K4200

erstellt am: 16. Jun. 2016 13:29    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 Klaus,

ich würde das Rad ungerne neu erfinden wollen 

Falls es jedoch keine andere Möglichkeite gibt werde ich diesen Weg wohl in Betracht ziehen müssen.

Gruß, IanMalcom

------------------
"Auf der Schachtel stand WIN98, WIN2000 oder besser. Also habe ich mir einen MAC besorgt ..."

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

Ian Malcom
Mitglied
Konstruktion


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

Beiträge: 45
Registriert: 27.11.2002

Win7 x64 Pro SP1
2x Xeon(R) E5-2620 v3
32 GB Ram
Quadro K4200

erstellt am: 16. Jun. 2016 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

Hallo Bernd,

das sieht doch nett aus  ... werd ich mal ausprobieren.

Gruß und danke!

------------------
"Auf der Schachtel stand WIN98, WIN2000 oder besser. Also habe ich mir einen MAC besorgt ..."

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

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



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

Beiträge: 2675
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
------------------
Zuletzt beruflich:
- SWX2020 SP5;
- SAP/PLM+ECTR;
- DriveWorks Pro;
- Programmierung:
VBA, aktuell Visual Studio 2022/VB.Net
------------------
ab 2024 (privat):
Onshape und anderes

erstellt am: 16. Jun. 2016 14:37    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 Ian Malcom 10 Unities + Antwort hilfreich

"swModelDocExt.RunCommand" cool, wieder was gelernt.
bei den Optionen zu dem Befehl wird's aber wieder undurchsichtig..da hat es einen Haufen Parameter dabei, die nicht wirklich selbsterklärend sind.

Aber für diesen speziellen Fall geht das gut. Ist zugegebener Maßen einfacher als meine Lösung.

Hat aber den Nachteil, dass du u.U. ein Versionsproblem bekommen könntest, wenn du mit mehreren SWX-Versionen unterwegs bist.

Zitat:
Zitat aus der API-Hilfe:
Before using this method, you must add a reference to SolidWorks version Commands type library to access the SolidWorks commands. (Substitute the actual SolidWorks version number for version).

------------------
Klaus

www.al-ko.com | mein Gästebuch

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

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 16. Jun. 2016 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 Ian Malcom 10 Unities + Antwort hilfreich

Zitat:
Hat aber den Nachteil, dass du u.U. ein Versionsproblem bekommen könntest, wenn du mit mehreren SWX-Versionen unterwegs bist.

Hallo Klaus,

deswegen ja meine Aussage das es quick 'n dirty ist.
Aber hier und da kann man das schon mal gebrauchen auch wenn ich es eher benutze um den richtigen Begriff zu finden in dem ich die CommandID mit logge und dann in der Commandlsit den command hinter dem ausgegebenen Integer suche. 

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

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: 17. Jun. 2016 08:07    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 Ian Malcom 10 Unities + Antwort hilfreich


29631_konstanten-finden.png

 
Hallo zusammen,

mit den Verweise ist auch nicht so gefährlich, das einzige was man braucht ist die Nummer aus der swcommands Typenbibliothek. Diese Konstanten kann man sich auch selber machen: statt die (versionsabhängige) "Solidworks XXXX Commands Type Library" einzubinden deklariert man gezielt die eine Konstante selbst oder verwndet direkt den Wert (was ich ausdrücklich nicht empfehle, das die Lesbarkeit doch sehr abnimmt).

Also oben in Bernds Beispiel einfach noch eine Zeile im Headerbereich:

Code:
Const swCommands_EditMaterial = 501

und die Verweise sind nicht mehr nötig. Das Hauptproblem bei den Commands-Werten ist eigentlich das Heraustüfteln, welche Konstante mit welcher Dialogbox verbunden ist - meist ist das klar über den Konstantennamen zu Erkennen, aber manchmal ...   

Zu finden sind diese ganzen Konstanten im Objektviewer (F2) im VBA-Editor, in der MakroMania hab ich auch zumindest bis zur Version 2013 noch Module zum Runterladen, dort ist auch ein Kochrezept zum Selbermachen.

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de

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

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 17. Jun. 2016 08:39    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 Ian Malcom 10 Unities + Antwort hilfreich


log_CommandID.swp.txt

 
Hallo Stefan,

Zitat:
...verwendet direkt den Wert (was ich ausdrücklich nicht empfehle, das die Lesbarkeit doch sehr abnimmt).

Genau so war mein Posting vor dem editieren, aber ich dachte mir der sprechende Name ist besser geeignet wie der reine Zahlenwert.

Im Anhang ein Macro zum mitloggen der command ID's falls es jemanden interessiert, hier wird die Command ID beim Starten und beim Beenden eines Befehls geloggt.
Hier ist zu beachten das auch commands wie "du hast gerade eine Propertymanagerpage mit OK/Cancel beendet" das Ergebnis sein kann, d.h. nicht hinter jeder geloggten commandID hängt auch tatsächlich ein Befehl. 

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete  

[Diese Nachricht wurde von bk.sc am 17. Jun. 2016 editiert.]

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

KMassler
Ehrenmitglied V.I.P. h.c.
CAD Admin + Mädchen für Alles...



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

Beiträge: 2675
Registriert: 06.11.2000

SolidWorks Start 1999
** CSWP 01/2008 **
------------------
Zuletzt beruflich:
- SWX2020 SP5;
- SAP/PLM+ECTR;
- DriveWorks Pro;
- Programmierung:
VBA, aktuell Visual Studio 2022/VB.Net
------------------
ab 2024 (privat):
Onshape und anderes

erstellt am: 17. Jun. 2016 12:17    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 Ian Malcom 10 Unities + Antwort hilfreich

Cool,
Danke! 

------------------
Klaus

www.al-ko.com | mein Gästebuch

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

Ian Malcom
Mitglied
Konstruktion


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

Beiträge: 45
Registriert: 27.11.2002

Win7 x64 Pro SP1
2x Xeon(R) E5-2620 v3
32 GB Ram
Quadro K4200

erstellt am: 28. Jun. 2016 11:00    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


LoesungDialog.jpg

 
Hallo zusammen,

ja ja ....  Erstens kommt es anders, zweitens als man denkt und Murphy ist ein ...

Nach dem ich recht intensive mit dem API rumgespielt habe … hab ich für mich festgestellt das ich so nicht zu meinem Ziel komme.
Ich muss dazu sagen, ich wollte NICHT einem Part ein Material zuweisen (Materialeigenschaften), sondern  nur eine Auswahlmöglichkeit erhalten in der ich einen Materialnamen wählen kann.
Ja … eben das funktioniert NUR in Parts, in allen anderen Konstellationen wird der API-Aufruf der Dialogbox ignoriert.

Ich habe nun den schon von Klaus angedeuteten Weg beschritten … einen eigenen Dialog dazu programmiert.
Ergebnis hab ich mal als Bild hochgeladen.

Nochmals Gruß und Danke an alle!
IanMalcom

------------------
"Auf der Schachtel stand WIN98, WIN2000 oder besser. Also habe ich mir einen MAC besorgt ..."

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