Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API: Kann wert nicht setzen

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
  
Änderungsmanagement mit der 3DEXPERIENCE® Plattform
Autor Thema:  API: Kann wert nicht setzen (456 mal gelesen)
Hermann75
Mitglied
Konstrukteur


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

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 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 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


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

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 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 Hermann75 10 Unities + Antwort hilfreich

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 Double

Sub 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


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

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 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

Vielen lieben Dank für dein Programm. Leider gibt mir dein Programm im Immediate-Window auch nur 0 raus. 

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

Ralf Tide
Moderator
-




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

Beiträge: 4978
Registriert: 06.08.2001

Sehr seltsame Dinge passiern <Klaus Lage - Toy Story>
.-)

erstellt am: 24. Feb. 2023 16:19    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 Hermann75 10 Unities + Antwort hilfreich

...mit ThruTapDrillDiameter statt TapDrillDiameter bekomme ich die 5 am Ende...

Auch wenn es wahrscheinlich nicht das ist was Du suchst...

HTH
Ralf

------------------

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

HenryV
Mitglied
Konstrukteur, Engineering


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

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 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 Hermann75 10 Unities + Antwort hilfreich

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


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

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 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

Danke für den entscheidenden Hinweis. Ich wusste nicht, dass es einen Unterschied zwischen Durchgangsgewinde und Sacklochgewinde gibt. Jetzt funktionierts.

Vielen dank euch allen.      

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