| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| AMB |
Autor
|
Thema: Solidworks Material mit VBA eintragen (1306 / mal gelesen)
|
Christoph Weise Mitglied Technischer Produktdesigner / Konstruktion / CAD-Admin
Beiträge: 204 Registriert: 22.03.2015 Dell 3650 Intel I7 11700k 32 GB RAM Nvidia RTX A4000 16GB Win 10 22H2 64-bit SolidWorks 2022SP5 QuickPress 6.3.3 PortaX 2.27 SAP ERP 6.0
|
erstellt am: 29. Mrz. 2017 16:16 <-- editieren / zitieren --> Unities abgeben:
Hallo CAD´ler, um bei uns den Prozess sicherer und einfacher zu machen suche ich eine Möglichkeit SolidWorks ein Material zuzuweisen. Mir geht es nur um den Materialnamen, die anderen Eigenschaften werden im späteren Verlauf nicht beachtet. Das Problem dabei ist das das Material nicht in der .sldmat Datenbank vorhanden ist.( Somit scheidet die SetMaterialPropertyName Funktion aus) Gibt es eine andere Funktion die keine Datenbank voraussetzt (was es wahrscheinlich nicht gibt, da immer andere Parameter hinterlegt werden müssen)? Oder gibt es eine Funktion von SolidWorks die ein neues Material in einer Datenbank anlegt? Gruß Christoph ------------------ Wer einen Fehler findet darf ihn behalten, wer zwei findet kann beide behalten, ab fünf Fehler gibs Rabatt :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
ThoMay Ehrenmitglied V.I.P. h.c. Konstrukteur
Beiträge: 5258 Registriert: 15.04.2007 SWX 2019 Windows 10 x64
|
erstellt am: 29. Mrz. 2017 22:38 <-- editieren / zitieren --> Unities abgeben: Nur für Christoph Weise
|
Christoph Weise Mitglied Technischer Produktdesigner / Konstruktion / CAD-Admin
Beiträge: 204 Registriert: 22.03.2015 Dell 3650 Intel I7 11700k 32 GB RAM Nvidia RTX A4000 16GB Win 10 22H2 64-bit SolidWorks 2022SP5 QuickPress 6.3.3 PortaX 2.27 SAP ERP 6.0
|
erstellt am: 30. Mrz. 2017 07:29 <-- editieren / zitieren --> Unities abgeben:
Hallo ThoMay, eine normale Materialdatenbank haben wir. In dieser stehen alle Werkstoffe in allen benötigten Ausführungen. Bei uns werden aber oft z.B. Zylinderstifte oder vorgefertigte eigene Bauteile als Ausgangswerkstoff verwendet. Eine Datenbank mit allen möglichen "Materialen" ist daher nicht erstellbar. Der Vorteil für uns wäre, das wenn das Material im SolidWorks vergeben ist, die Daten bei der Anlage im SAP-System übernommen werden. Ansonsten müssen die Materialien nach der Anlage im System nachgepflegt werden. Falls man dies vergisst (ca. 5% der Fälle, ansonsten ist ein normaler Werkstoff vergeben) steht am Ende kein Werkstoff auf der Zeichnung. Gruß Christoph ------------------ Wer einen Fehler findet darf ihn behalten, wer zwei findet kann beide behalten, ab fünf Fehler gibs Rabatt :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
HenryV Mitglied Konstrukteur, Engineering
Beiträge: 813 Registriert: 18.05.2005 SolidWorks 2022 x64 SP5.0 Dell Precision 5820 Intel Xeon W-2125 4x4GHz NVIDIA Quadro P2000 5GB 32GB RAM 2x Dell U2412M, 24" TFT Windows 10 Enterprise x64 22H2 Microsoft 365 E5 Microsoft Visual Studio Enterprise 2022
|
erstellt am: 30. Mrz. 2017 11:38 <-- editieren / zitieren --> Unities abgeben: Nur für Christoph Weise
Hallo Christoph Hier meine Variante: - Eine temporäre Material-DB erstellen - Material-DB-Pfad in Solidworks hinzufügen - Material dem Teil zuweisen - Material-DB-Pfad in Solidworks wieder entfernen - temporäre Material-DB löschen Code: Public swApp As SldWorks.SldWorks Public swModel As SldWorks.ModelDoc2 Public swPart As SldWorks.PartDocSub main() Dim dbname As String Dim MatName As String Dim MatDbPaths As String Dim bRet As Boolean dbname = Environ("temp") & "\tempMatDb.sldmat" MatName = "Mein Material" CreateDataBase dbname, MatName Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc Set swPart = swModel MatDbPaths = swApp.GetUserPreferenceStringValue(swUserPreferenceStringValue_e.swFileLocationsMaterialDatabases) bRet = swApp.SetUserPreferenceStringValue(swUserPreferenceStringValue_e.swFileLocationsMaterialDatabases, MatDbPaths & ";" & Left(dbname, InStrRev(dbname, "\") - 1)) swPart.SetMaterialPropertyName2 "", dbname, MatName swApp.SetUserPreferenceStringValue swUserPreferenceStringValue_e.swFileLocationsMaterialDatabases, MatDbPaths Kill dbname End Sub Sub CreateDataBase(DatabaseName As String, MaterialName As String)
Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") Dim oFile As Object Set oFile = fso.CreateTextFile(DatabaseName) oFile.WriteLine "<?xml version=""1.0"" encoding=""UTF-16"" standalone=""no""?>" oFile.WriteLine "<mstns:materials xmlns:mstns=""http://www.solidworks.com/sldmaterials"" xmlns:msdata=""urn:schemas-microsoft-com:xml-msdata"" xmlns:xsi=""http://www.w3.org/2001/XMLSchema-instance"" xmlns:schemaLocation=""http://matwebtest.matweb.com/sw/XSD/sldmaterials.xsd"" xmlns:sldcolorswatch=""http://www.solidworks.com/sldcolorswatch"" version=""2008.03"">" oFile.WriteLine " <curves id=""curve0"">" oFile.WriteLine " <point x=""1.0"" y=""1.0""/>" oFile.WriteLine " <point x=""2.0"" y=""1.0""/>" oFile.WriteLine " <point x=""3.0"" y=""1.0""/>" oFile.WriteLine " </curves>" oFile.WriteLine " <classification name=""Stahllegierungen"">" oFile.WriteLine " <material name=""" & MaterialName & """ description="""" propertysource="""" appdata="""">" oFile.WriteLine " <xhatch name=""ISO (Stahl)"" angle=""0"" scale=""1""/>" oFile.WriteLine " <physicalproperties>" oFile.WriteLine " <EX displayname=""E-Modul"" value=""2.1E+011"" usepropertycurve=""0""/>" oFile.WriteLine " <NUXY displayname=""Poissonzahl"" value=""0.29"" usepropertycurve=""0""/>" oFile.WriteLine " <GXY displayname=""Schubmodul"" value=""7.7E+010"" usepropertycurve=""0""/>" oFile.WriteLine " <ALPX displayname=""Wärmeausdehnungskoeffizient"" value=""1.5e-005"" usepropertycurve=""0""/>" oFile.WriteLine " <DENS displayname=""Massendichte"" value=""7850"" usepropertycurve=""0""/>" oFile.WriteLine " <KX displayname=""Wärmeleitfähigkeit"" value=""47"" usepropertycurve=""0""/>" oFile.WriteLine " <C displayname=""Spezifische Wärmekapazität"" value=""420"" usepropertycurve=""0""/>" oFile.WriteLine " <SIGXT displayname=""Zugfestigkeit"" value=""540000000"" usepropertycurve=""0""/>" oFile.WriteLine " <SIGYLD displayname=""Fließgrenze"" value=""355000000"" usepropertycurve=""0""/>" oFile.WriteLine " </physicalproperties>" oFile.WriteLine " <shaders>" oFile.WriteLine " <pwshader2 name=""Farbe"" path=""\color.p2m""/>" oFile.WriteLine " </shaders>" oFile.WriteLine " <swatchcolor RGB=""c6c6d1"">" oFile.WriteLine " <sldcolorswatch:Optical Ambient=""1.000000"" Transparency=""0.000000"" Diffuse=""1.000000"" Specularity=""0.700000"" Shininess=""0.300000"" Emission=""0.000000""/>" oFile.WriteLine " </swatchcolor>" oFile.WriteLine " <custom/>" oFile.WriteLine " </material>" oFile.WriteLine " </classification>" oFile.WriteLine "</mstns:materials>" oFile.Close Set fso = Nothing Set oFile = Nothing End Sub
Gruss Andreas ------------------ 21 ist nur die halbe Antwort. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lueghi Mitglied Admin für alle Systeme ....
Beiträge: 416 Registriert: 01.07.2005 CAD...: SWX2022 SP5, ACAD 2019, Tacton / LINO PDM...: PRO.FILE 8.6 ERP...: proAlpha 6.2e / 7.1 BS....: Win10, HP ZBook G5
|
erstellt am: 30. Mrz. 2017 12:54 <-- editieren / zitieren --> Unities abgeben: Nur für Christoph Weise
Zitat: Original erstellt von Christoph Weise: Hallo ThoMay,eine normale Materialdatenbank haben wir. In dieser stehen alle Werkstoffe in allen benötigten Ausführungen. Bei uns werden aber oft z.B. Zylinderstifte oder vorgefertigte eigene Bauteile als Ausgangswerkstoff verwendet. Eine Datenbank mit allen möglichen "Materialen" ist daher nicht erstellbar. ...
Wir haben uns so beholfen, dass wir in unserer Materialdatenbank eigene, allgemein gehaltene Material-Einträge (Aluminium, Stahl, Edelstahl, etc.) gemacht haben und dann ganz normal in SolidWorks das Material zuweisen. Damit bleibt man in der Systematik und muss nicht für alles eine eigenen Spezifikation anlegen. Bei uns ist das absolut ausreichend.
------------------ Gruß Stefan Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Christoph Weise Mitglied Technischer Produktdesigner / Konstruktion / CAD-Admin
Beiträge: 204 Registriert: 22.03.2015 Dell 3650 Intel I7 11700k 32 GB RAM Nvidia RTX A4000 16GB Win 10 22H2 64-bit SolidWorks 2022SP5 QuickPress 6.3.3 PortaX 2.27 SAP ERP 6.0
|
erstellt am: 03. Apr. 2017 11:00 <-- editieren / zitieren --> Unities abgeben:
@Andreas: Funktioniert einwandfrei und ist genau das was ich brauche @Lueghi Allgemeine Einträge wie Stahl und Alu haben wir auch, da darf der Fertiger das nehmen,was ihm gerade in die Finger fällt. In diesem Fall benötige ich aber spezifische Angaben wo ein bestimmter Werkstoff verwendet werden muss oder bzw. ein bestimmtes Kaufteil nachgearbeitet werden muss. Diese Kaufteile können natürlich variieren. Schlussendlich Problem gelöst ------------------ Wer einen Fehler findet darf ihn behalten, wer zwei findet kann beide behalten, ab fünf Fehler gibs Rabatt :-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |