Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API: Feature abfragen ob vorhanden

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
Autor Thema:  API: Feature abfragen ob vorhanden (441 mal gelesen)
Ralf Blokscha
Mitglied
Konstrukteur


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

Beiträge: 175
Registriert: 10.07.2000

erstellt am: 11. Mai. 2004 06:40    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,

ich habe ein Problem und komm nicht weiter. Ich möchte die Masse per APIProgrammier- und Anwendungsschnittstelle (Application Programming Interface) auslesen was auch funktioniert nur ist nach längerem aufgefallen das wenn kein Volumenkörper modelliert wurde ein Laufzeitfehler auftritt. Wie könnte man das bewerkstelligen um sowas abzufangen. Meine Idee wäre gewesen erstmal nach einem Basisfeature bzw. ob überhaupt ein Feature enthalten ist.

Anbei die Passage aus dem Quelltext in dem ich die Abfrage integrieren möchte:


Sub barGewicht()

    Dim swApp As Object
    Dim Model As Object
    Dim retval As Variant
    Dim ConfigName As String
    Dim View As Object
    Dim massProps As Variant
    Dim Gewicht As Double
    Dim RefModel As Object
    Dim Masse As Variant
   
    Set swApp = CreateObject("SldWorks.Application")
    swApp.Visible = True
    Set Model = swApp.ActiveDoc
   
    If Model Is Nothing Then
        keinSWXDok
        Exit Sub
    End If

        If (Model.GetType() = swDocASSEMBLY) Then
            retval = Model.ResolveAllLightWeightComponents(True)
        End If

            massProps = Model.GetMassProperties()
            Gewicht = Format(massProps(5), "0.00000000")
               
            If Gewicht > 100 Then
                Gewicht = Format(Gewicht, "0")
                txtMasse.Text = Gewicht
                txtMasse.Text = "ca. " & txtMasse.Text & " kg"
                Exit Sub
            End If
           
            If Gewicht > 10 And Gewicht < 99.999999 Then
                Gewicht = Format(Gewicht, "0.0")
                txtMasse.Text = Gewicht
                txtMasse.Text = "ca. " & txtMasse.Text & " kg"
                Exit Sub
            End If
           
            If Gewicht > 1 And Gewicht < 9.999999 Then
                Gewicht = Format(Gewicht, "0.00")
                txtMasse.Text = Gewicht
                txtMasse.Text = "ca. " & txtMasse.Text & " kg"
                Exit Sub
            End If
           
            If Gewicht > 0.1 And Gewicht < 0.999999 Then
                Gewicht = Format(Gewicht, "0.000")
                txtMasse.Text = Gewicht * 1000
                txtMasse.Text = "ca. " & txtMasse.Text & " g"
                Exit Sub
            End If
           
            If Gewicht > 0.01 And Gewicht < 0.099999 Then
                Gewicht = Format(Gewicht, "0.0000")
                txtMasse.Text = Gewicht * 1000
                txtMasse.Text = "ca. " & txtMasse.Text & " g"
                Exit Sub
            End If
           
            If Gewicht > 0.001 And Gewicht < 0.009999 Then
                Gewicht = Format(Gewicht, "0.00000")
                txtMasse.Text = Gewicht * 1000
                txtMasse.Text = "ca. " & txtMasse.Text & " g"
                Exit Sub
            End If
           
            If Gewicht < 0.001 Then
                txtMasse.Text = "< 1 g"
                Exit Sub
            End If
End Sub

Vorab schon mal Danke für eure Hilfe

Gruß Ralf

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

Rigobert
Mitglied
Konstrukteur


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

Beiträge: 239
Registriert: 21.11.2001

SWX 2017x64-Edition SP 4.1

erstellt am: 11. Mai. 2004 06:59    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 Ralf Blokscha 10 Unities + Antwort hilfreich

Hallo Ralf ,

Wie wär´s mit ner Fehlerbehandlung ?


z.B.:


Sub barGewicht()

    Dim swApp As Object
    Dim Model As Object
    Dim retval As Variant
    Dim ConfigName As String
    Dim View As Object
    Dim massProps As Variant
    Dim Gewicht As Double
    Dim RefModel As Object
    Dim Masse As Variant
   
    On Error GoTo Fehlerbehandlung
   
    Set swApp = CreateObject("SldWorks.Application")
    swApp.Visible = True
    Set Model = swApp.ActiveDoc
   
    If Model Is Nothing Then
        kein SWXDok
        Exit Sub
    End If

        If (Model.GetType() = swDocASSEMBLY) Then
            retval = Model.ResolveAllLightWeightComponents(True)
        End If

            massProps = Model.GetMassProperties()
            Gewicht = Format(massProps(5), "0.00000000")
               
            If Gewicht > 100 Then
                Gewicht = Format(Gewicht, "0")
                txtMasse.Text = Gewicht
                txtMasse.Text = "ca. " & txtMasse.Text & " kg"
                Exit Sub
            End If
           
            If Gewicht > 10 And Gewicht < 99.999999 Then
                Gewicht = Format(Gewicht, "0.0")
                txtMasse.Text = Gewicht
                txtMasse.Text = "ca. " & txtMasse.Text & " kg"
                Exit Sub
            End If
           
            If Gewicht > 1 And Gewicht < 9.999999 Then
                Gewicht = Format(Gewicht, "0.00")
                txtMasse.Text = Gewicht
                txtMasse.Text = "ca. " & txtMasse.Text & " kg"
                Exit Sub
            End If
           
            If Gewicht > 0.1 And Gewicht < 0.999999 Then
                Gewicht = Format(Gewicht, "0.000")
                txtMasse.Text = Gewicht * 1000
                txtMasse.Text = "ca. " & txtMasse.Text & " g"
                Exit Sub
            End If
           
            If Gewicht > 0.01 And Gewicht < 0.099999 Then
                Gewicht = Format(Gewicht, "0.0000")
                txtMasse.Text = Gewicht * 1000
                txtMasse.Text = "ca. " & txtMasse.Text & " g"
                Exit Sub
            End If
           
            If Gewicht > 0.001 And Gewicht < 0.009999 Then
                Gewicht = Format(Gewicht, "0.00000")
                txtMasse.Text = Gewicht * 1000
                txtMasse.Text = "ca. " & txtMasse.Text & " g"
                Exit Sub
            End If
           
            If Gewicht < 0.001 Then
                txtMasse.Text = "< 1 g"
                Exit Sub
            End If

Fehlerbehandlung:

Select Case Err.Number

Case 13
    txtMasse.Text = " kein Volumenkörper vorhanden"
Case Else
    MsgBox Err.Description
End Select

End Sub

Gruß Rigo

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

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

waldi
Mitglied
 Softwerker


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

Beiträge: 272
Registriert: 07.08.2001

SW 2006 SP4

erstellt am: 11. Mai. 2004 08:10    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 Ralf Blokscha 10 Unities + Antwort hilfreich

Du kannst dir auch alle Bodies auslesen und diese fragen, ob sie Solids sind.

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

Ralf Blokscha
Mitglied
Konstrukteur


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

Beiträge: 175
Registriert: 10.07.2000

erstellt am: 12. Mai. 2004 07:46    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 die Hilfe

U's sind unterwegs!

Gruß Ralf

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