| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
Autor
|
Thema: API Dokumenteigenschaften Einheiten ändern (356 mal gelesen)
|
brainer Mitglied Konstrukteur

 Beiträge: 28 Registriert: 25.09.2013
|
erstellt am: 11. Sep. 2023 15:45 <-- editieren / zitieren --> Unities abgeben:         
Hallo Gemeinde, bei uns gibt es eine Menge Wildwuchs bei den erstellten Teilen und Baugruppen aus der Vergangenheit Ich möchte nun wenn man ein Teil oder eine BGR offen hat per API die Einheiten auf Benutzerdefiniert setzen und die Masse auf Kilogramm und das Volumen auf Liter setzten. ich hab mit den code experimentiert komme aber nicht weiter Dim Part As Object Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long Set Part = swApp.ActiveDoc boolstatus = Part.SetUserPreferenceInteger(swUserPreferenceIntegerValue_e.swUnitSystem, 0, swUnitSystem_e.swUnitSystem_Custom) ''''swUnitsMassPropMass_Kilograms = 3 boolstatus = Part.SetUserPreferenceInteger(swUserPreferenceIntegerValue_e.swUnitsMassPropMass, 3) Hat hier jemand sowas schon mal gemacht? Vileicht ein Beispiel wäre super Gruß Rainer
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
    
 Beiträge: 1739 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 11. Sep. 2023 16:54 <-- editieren / zitieren --> Unities abgeben:          Nur für brainer
Hallo Rainer, ohne den Code näher getestet zu haben was sofort auffällt Du verwendest "SetUserPreferenceInteger" 1x mit 2 Parametern und 1x mit 3 Parametern das ist schon mal komisch Ich würde mal die Online-Hilfe bemühen dort siehst Du, dass der Zugriff auf "SetUserPreferenceInteger" mit 3 Parametern über "IModelDocExtension" und auf "SetUserPreferenceInteger" mit 2 Parametern über "IModelDoc" oder "IModelDoc2" erfolgt
------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Volkmar Grube Mitglied Konstrukteur
 
 Beiträge: 112 Registriert: 31.01.2009 WIN11 64Bit, SWX 2022, Delphi 10
|
erstellt am: 11. Sep. 2023 17:41 <-- editieren / zitieren --> Unities abgeben:          Nur für brainer
Hallo, probier mal den angehängten Text. Ich habe da noch ein paar Sachen rausgeworfen, es kann also sein, dass irgendeine If-Anweisung das end verloren hat. ------------------ Grüße aus Dresden Volkmar Grube Es gibt keine Probleme, es gibt nur Aufgaben. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andi Beck Ehrenmitglied V.I.P. h.c. Konstrukteur

 Beiträge: 2551 Registriert: 02.10.2006 Firma: SW 2021-5.1 + PDM Prof. Windows 10 Pro 64bit, i9-11900 32 GbRAM, Quadro P2200 Home: SW 2021-5.1 Passungstabelle von Heinz Windows 11 Pro 64bit, i7-12700K, 32 GbRAM, GeForce GTX 1050Ti Samsung C34H892, 3440x1440 Pixel
|
erstellt am: 11. Sep. 2023 17:58 <-- editieren / zitieren --> Unities abgeben:          Nur für brainer
Hallo, ich habe mir zur Dateibereinigung folgendes Makro geschrieben. Dieses passt die Beleuchtungskörper an, stellt die Einheiten ein und erstellt mir bestimmte Dateieigenschaften. Code:
Public Sub main() Dim swApp As SldWorks.SldWorks Dim swModel As SldWorks.ModelDoc2 Dim sFileName As String Dim boolstatus As Boolean Dim value As String Dim i As Long Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc If (swModel.GetType() <> swDocDRAWING) Then For i = 1 To swModel.GetLightSourceCount - 1 swModel.DeleteLightSource (1) Next i boolstatus = swModel.SetLightSourcePropertyValuesVB("Ambient", 1, 1, 16777215, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.29, 0, 0, False) boolstatus = swModel.LockLightToModel(0, False) 'Light ID, Mit Modell verknüpfen - True = ja, False = Nein swModel.GraphicsRedraw 'Zeichnet den angegebenen Bereich oder das gesamte SOLIDWORKS-Grafikfenster neu. swModel.ClearSelection2 True 'True löscht die gesamte vorhandene Auswahlliste, False löscht nur die Elemente in der aktiven Auswahlliste boolstatus = swModel.AddLightSource("Direction1", 4, "Gerichtet1") '1 = Ambient light, 2 = Spot light, 3 = Point light, 4 = Directional light boolstatus = swModel.SetLightSourcePropertyValuesVB("Direction1", 4, 0.45, 16777215, 1, -8.17746082497419E-02, 8.18037459828556E-02, 0.245394474446296, 0, 0, 0, 0, 0, 0, 0, 0.2, 0.69, 0, False) boolstatus = swModel.LockLightToModel(1, False) swModel.GraphicsRedraw swModel.ClearSelection2 True boolstatus = swModel.AddLightSource("Direction2", 4, "Gerichtet2") '1 = Ambient light, 2 = Spot light, 3 = Point light, 4 = Directional light boolstatus = swModel.SetLightSourcePropertyValuesVB("Direction2", 4, 0.88, 12615808, 1, 0.266475622072952, -4.23453190715314E-02, -2.81958204981437E-02, 0, 0, 0, 0, 0, 0, 0, 0.13, 0.85, 0, False) boolstatus = swModel.LockLightToModel(2, False) swModel.GraphicsRedraw swModel.ClearSelection2 True boolstatus = swModel.EditRebuild3() '---------------Einheiten in den Dokumenteigenschaften definieren boolstatus = swModel.Extension.SetUserPreferenceInteger(swUserPreferenceIntegerValue_e.swUnitSystem, 0, swUnitSystem_e.swUnitSystem_Custom) boolstatus = swModel.Extension.SetUserPreferenceInteger(swUserPreferenceIntegerValue_e.swUnitsLinear, 0, swLengthUnit_e.swMM) boolstatus = swModel.Extension.SetUserPreferenceInteger(swUserPreferenceIntegerValue_e.swUnitsDualLinear, 0, swLengthUnit_e.swINCHES) boolstatus = swModel.Extension.SetUserPreferenceInteger(swUserPreferenceIntegerValue_e.swUnitsAngular, 0, swAngleUnit_e.swDEGREES) boolstatus = swModel.Extension.SetUserPreferenceInteger(swUserPreferenceIntegerValue_e.swUnitsMassPropLength, 0, swLengthUnit_e.swMM) boolstatus = swModel.Extension.SetUserPreferenceInteger(swUserPreferenceIntegerValue_e.swUnitsDecimalRounding, 0, swUnitsDecimalRounding_e.swUnitsDecimalRounding_HalfAway) boolstatus = swModel.Extension.SetUserPreferenceInteger(swUserPreferenceIntegerValue_e.swUnitsLinearDecimalPlaces, 0, 2) boolstatus = swModel.Extension.SetUserPreferenceInteger(swUserPreferenceIntegerValue_e.swUnitsDualLinearDecimalPlaces, 0, 2) boolstatus = swModel.Extension.SetUserPreferenceInteger(swUserPreferenceIntegerValue_e.swUnitsAngularDecimalPlaces, 0, 2) boolstatus = swModel.Extension.SetUserPreferenceInteger(swUserPreferenceIntegerValue_e.swUnitsMassPropDecimalPlaces, 0, 2) boolstatus = swModel.Extension.SetUserPreferenceInteger(swUserPreferenceIntegerValue_e.swUnitsMassPropMass, 0, swUnitsMassPropMass_e.swUnitsMassPropMass_Kilograms) boolstatus = swModel.Extension.SetUserPreferenceInteger(swUserPreferenceIntegerValue_e.swUnitsMassPropVolume, 0, swUnitsMassPropVolume_e.swUnitsMassPropVolume_Millimeters3) boolstatus = swModel.Extension.SetUserPreferenceInteger(swUserPreferenceIntegerValue_e.swUnitsTimeDecimalPlaces, 0, 2) '---------------Dateieigenschaften einfügen boolstatus = swModel.DeleteCustomInfo2("", "Number") boolstatus = swModel.AddCustomInfo3("", "Number", swCustomInfoText, "$PRP:" & Chr(34) + "SW-File Name" + Chr(34)) sFileName = Mid(swModel.GetPathName, InStrRev(swModel.GetPathName, "\") + 1) vConfNameArr = swModel.GetConfigurationNames For i = 0 To UBound(vConfNameArr) sConfigName = vConfNameArr(i) boolstatus = swModel.DeleteCustomInfo2(sConfigName, "Gewicht") boolstatus = swModel.AddCustomInfo3(sConfigName, "Gewicht", swCustomInfoText, Chr(34) + "SW-Mass" + "@@" + sConfigName + "@" + sFileName + Chr(34)) If (swModel.GetType() = swDocPART) Then boolstatus = swModel.DeleteCustomInfo2(sConfigName, "Material") boolstatus = swModel.AddCustomInfo3(sConfigName, "Material", swCustomInfoText, Chr(34) + "SW-Material" + "@@" + sConfigName + "@" + sFileName + Chr(34)) End If Next i Else Call MsgBox("Nicht für Zeichnungen geeignet!", vbSystemModal, "Information") End If End Sub
Kannst ja was du nicht brauchst nach belieben deaktivieren. Grüße, Andi ------------------ Hast du kein Problem? Such dir eins. ( Und löse es ) [Diese Nachricht wurde von Andi Beck am 12. Sep. 2023 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
solas Mitglied
 
 Beiträge: 460 Registriert: 11.02.2010 Kämpft mit BIM IFC
|
erstellt am: 12. Sep. 2023 07:56 <-- editieren / zitieren --> Unities abgeben:          Nur für brainer
|
brainer Mitglied Konstrukteur

 Beiträge: 28 Registriert: 25.09.2013
|
erstellt am: 13. Sep. 2023 14:56 <-- editieren / zitieren --> Unities abgeben:         
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |