| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| Änderungsmanagement mit der 3DEXPERIENCE® Plattform |
Autor
|
Thema: API: Kann wert nicht setzen (456 mal gelesen)
|
Hermann75 Mitglied Konstrukteur
Beiträge: 124 Registriert: 04.05.2016 MS Windows 11 Pro; Intel Core i9-12900HX, 2.3GHz; 64GB Ram; 64bit; NVIDIA RTX A3000 SW 2021 SP5.1 Professional SW-PDM 2021 Professional HiCAD next 2008 Helios next 2008
|
erstellt am: 24. Feb. 2023 09:03 <-- editieren / zitieren --> Unities abgeben:
Hallo zusamnmen Hab nach der Deklaration folgenden Code (mit Ziel für die Fertigung, den Kerndurchmesser von M6-Gewinden zu korrigieren, wenn sie im CAM das File öffnen, weil diese in alten Dateien aus der Zeit vorm SolidWorks-CAM noch falsch sind.): *********************************************************************** Set swApp = Application.SldWorks Set swModel = swApp.ActiveDoc Set swFeat = swModel.FirstFeature Do While Not swFeat Is Nothing 'Gewinde finden und Groesse bestimmen If InStr(swFeat.Name, "Gewindebohrung") <> 0 Then Debug.Print " " & swFeat.Name & " [" & swFeat.GetTypeName2 & "]" Groesse = Left(swFeat.Name, InStr(swFeat.Name, " ")) Merker = False Set swHole = swFeat.GetDefinition 'M6 Kerndurchmesser korrigieren If Left(swFeat.Name, 2) = "M6" Then swHole.TapDrillDiameter = 5 / 1000# MsgBox swHole.TapDrillDiameter * 1000 Merker = True End If ... ************************* Eigentlich sollte die MsgBox den Wert 0.005 ausgeben. In der Regel gibt sie aber einfach 0 aus. Das # habe ich aus einer Vorlage und hat auf die MsgBox keinen Einfluss. Wahrscheinlich habe ich den Befehl SET nicht wirklich verstanden. Kann mir jemand weiter helfen? Vielen Dank, Hermann 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: 24. Feb. 2023 10:39 <-- editieren / zitieren --> Unities abgeben: Nur für Hermann75
Könnte ein Rundungsproblem wegen Double sein. Vergiss nicht den Wert auch wieder zurück ins Feature zu schreiben. -> IModifyDefinition2 Method (IFeature) Hier einmal ein funktionierendes Beispiel.
Code: Dim swApp As SldWorks.ISldWorks Dim swModel As SldWorks.IModelDoc2 Dim swFeat As SldWorks.IFeature Dim swWizHole As SldWorks.IWizardHoleFeatureData2 Dim Dia As DoubleSub test2() Set swApp = Application.SldWorks Set swModel = swApp.IActiveDoc2 Set swFeat = swModel.IFirstFeature Do While Not swFeat Is Nothing 'Gewinde finden und Groesse bestimmen If swFeat.GetTypeName2 = "HoleWzd" Then Set swWizHole = swFeat.IGetDefinition Dia = Round(swWizHole.ThreadDiameter * 1000#, 8) If Dia = 6 Then Debug.Print swWizHole.Type If swWizHole.Type = 47 Then 'swTapBlindCosmeticThreadCounterSinkTop swWizHole.TapDrillDiameter = 5 / 1000# Debug.Print swWizHole.TapDrillDiameter * 1000 ElseIf swWizHole.Type = 49 Then 'swTapThruCosmeticThreadCounterSinkTop swWizHole.ThruTapDrillDiameter = 5 / 1000# Debug.Print swWizHole.ThruTapDrillDiameter * 1000 End If 'M6 Kerndurchmesser korrigieren swFeat.IModifyDefinition2 swWizHole, swModel, Nothing End If End If Set swFeat = swFeat.GetNextFeature Loop End Sub
------------------ 21 ist nur die halbe Antwort. [Diese Nachricht wurde von HenryV am 24. Feb. 2023 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hermann75 Mitglied Konstrukteur
Beiträge: 124 Registriert: 04.05.2016 MS Windows 11 Pro; Intel Core i9-12900HX, 2.3GHz; 64GB Ram; 64bit; NVIDIA RTX A3000 SW 2021 SP5.1 Professional SW-PDM 2021 Professional HiCAD next 2008 Helios next 2008
|
erstellt am: 24. Feb. 2023 11:41 <-- editieren / zitieren --> Unities abgeben:
|
Ralf Tide Moderator -
Beiträge: 4978 Registriert: 06.08.2001 Sehr seltsame Dinge passiern <Klaus Lage - Toy Story> .-)
|
erstellt am: 24. Feb. 2023 16:19 <-- editieren / zitieren --> Unities abgeben: Nur für Hermann75
|
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: 24. Feb. 2023 17:21 <-- editieren / zitieren --> Unities abgeben: Nur für Hermann75
Da hat Ralf recht, hab ich übersehen TapDrillDiameter ist bei Sackbohrungen ThruTapDrillDiameter ist bei Duchgangsbohrungen >Ich habe das Makro oben ergänzt ------------------ 21 ist nur die halbe Antwort. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Hermann75 Mitglied Konstrukteur
Beiträge: 124 Registriert: 04.05.2016 MS Windows 11 Pro; Intel Core i9-12900HX, 2.3GHz; 64GB Ram; 64bit; NVIDIA RTX A3000 SW 2021 SP5.1 Professional SW-PDM 2021 Professional HiCAD next 2008 Helios next 2008
|
erstellt am: 02. Mrz. 2023 08:44 <-- editieren / zitieren --> Unities abgeben:
|