Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API: IsSuppressed2

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: IsSuppressed2 (842 mal gelesen)
Piet
Mitglied
Konstruktionsleiter & Konstrukteur


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

Beiträge: 661
Registriert: 20.11.2001

SWx 2021

erstellt am: 22. Jan. 2008 12:29    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

Ich als humpelnder Do-it-yourself-Programmierer stolper über ein Problem, das für Leute vom Fach vermutlich eine Kleinigkeit ist.

Mein Makro durchläuft alle Features in einem Teil und soll eine Routine nur ausführen, wenn das betreffende Feature nicht unterdrückt ist. Der alte Befehl Feature.IsSuppressed ist obsolete und funktioniert auch nicht.
Also versuche ich es mit dem neuen Befehl

*states = Feature.IsSuppressed2 ( config_opt, config_names)

Input:
(long) config_opt
Configuration option as defined by swInConfigurationOpts_e

Input:
(VARIANT) config_names
Array of configuration names

Output:
(VARIANT *) *states
Array of the suppression states for the feature in the specified configurations

Laut der Überwachung gibt die Funktion immer die Boolean-Werte Falsch oder Wahr aus. Aber wie verknüpfe ich die mit meiner Abfrage?

Hier ein Code-Ausschnitt:

    Dim swFeat As Object        'SldWorks.feature
    Dim FeatureName As String  ' nur zum debuggen
    Dim SuppressionStatus As Variant
    Dim StrStatus As String


    Do              'geht alle Features durch und sucht nach Fehlern
        FeatureName = swFeat.Name
        SuppressionStatus = swFeat.IsSuppressed2(swThisConfiguration, vConfigName)
'        StrStatus = CStr(SuppressionStatus)
        If SuppressionStatus = False Then  <<<<<< Typen unverträglich!
          ....
        End If
        Set swFeat = swFeat.GetNextFeature
    Loop While Not swFeat Is Nothing


Wie man sieht, hab ich versucht, den Variant "Suppressionstatus" in einen String umzuwandeln, das hat genausowenig funktioniert wie die Umwandlung in einen Boolean.

Weiß jemand Rat?

Piet

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

jens_oliver
Mitglied
Softwareentwickler


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

Beiträge: 114
Registriert: 28.06.2005

erstellt am: 22. Jan. 2008 12:36    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 Piet 10 Unities + Antwort hilfreich

Der Rückgabewert ist ja ein Array.

Mit UBound(SuppressionStatus) kannst du ermitteln wie groß das Array ist und dann einfach mit SuppressionStatus(i) darauf zugreifen.
Da du nur die aktuelle Konfiguration angibst sollte dass Arry immer nur ein Objekt enthalten.

Gruß Oliver

------------------
Software nach Maß für Ihr CAD-System
www.ib-knepper.de

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

tbd
Mitglied
Teamleiter


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

Beiträge: 825
Registriert: 26.01.2006

Dell Percision T5400
Intel(R) Xeon(R) CPU
X5460 @ 3.16GHz
3,25 GB RAM
Nvidia Quadro FX 4600
-----
Win XP Prof SP 3
SW 2008 SP 5.0
PARTsolutions 8.1.08
Cideon SAP PLM 5.103.5.17
Visual Studio 2008

erstellt am: 22. Jan. 2008 12:38    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 Piet 10 Unities + Antwort hilfreich

Hallo Piet,

ich denke mal es liegt am Rückgabe Typ Variant of Array! Die Umwandlung kann also auch nur in ein Array of Boolean erfolgen. Habe es jetzt allerding nicht ausprobiert!

[Edit]Oliver war schneller :-)[/Edit]

------------------
Mfg Daniel

   

[Diese Nachricht wurde von tbd am 22. Jan. 2008 editiert.]

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

Piet
Mitglied
Konstruktionsleiter & Konstrukteur


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

Beiträge: 661
Registriert: 20.11.2001

SWx 2021

erstellt am: 23. Jan. 2008 09:29    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 Dank euch beiden. Mit

If SuppressionStatus(0) = False Then

ist immerhin die Fehlermeldung wegen unverträglicher Typen weg, allerdings hat die Zeile immer noch keine Auswirkung. Ich such weiter...

Danke,
Piet

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

tbd
Mitglied
Teamleiter


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

Beiträge: 825
Registriert: 26.01.2006

Dell Percision T5400
Intel(R) Xeon(R) CPU
X5460 @ 3.16GHz
3,25 GB RAM
Nvidia Quadro FX 4600
-----
Win XP Prof SP 3
SW 2008 SP 5.0
PARTsolutions 8.1.08
Cideon SAP PLM 5.103.5.17
Visual Studio 2008

erstellt am: 23. Jan. 2008 10:27    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 Piet 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Piet:
allerdings hat die Zeile immer noch keine Auswirkung

Hallo Piet,

was verstehst du unter keine Auswirkung?
Welchen Inhalt hat den die Variable?
So wie ich das sehe, müssten in deinem Array Boolean Werte stehen, welche die mitteilen ob das Feature in den übergebenen Konfigurationen unterdrück ist.
Also der Index das Arrays ist abhängig vom Parameter config_names.


------------------
Mfg Daniel

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

Piet
Mitglied
Konstruktionsleiter & Konstrukteur


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

Beiträge: 661
Registriert: 20.11.2001

SWx 2021

erstellt am: 24. Jan. 2008 09: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


Konfigtesttest.zip

 
Die Fehlererkennung im Teil funktioniert immer noch nicht. Was die Sub tun soll:

- Mit der ersten Skizze anfangen und alle weiteren Features im Featurebaum durchgehen.
- Wenn das Feature nicht unterdrückt ist (das funktioniert nicht), das Feature auf Fehler prüfen.
- wenn ein Fehler vorliegt, die Variable "Fehler" auf "True" setzen und den Namen der betreffenden Konfiguration auf die Liste der fehlerhaften Konfigs setzen, dann weiter zur nächsten Konfiguration
- wenn kein Fehler vorliegt, weiter zum nächsten Feature
- wenn alle Features fehlerfrei sind, den Namen der Konfiguration in die Liste der fehlerfreien Konfigs eintragen

Die Abfrage If swFeat.IsSuppressed = False Then funktioniert nicht, auch unterdrückte Features werden geprüft. Ich habe diese Schleife auch mit swFeat.IsSuppressed2 durchgeführt, mit demselben Ergebnis. Der Grund ist mir ein völliges Rätsel.

Hier der Code der Routine:

Sub chkFeatures()  'Prüft Features auf Fehler
    Dim ErrorType As Long
    Dim FeatureName As String  ' nur zum debuggen
    Dim ErrorCode As Long      'nur zum debuggen
    Dim i As Integer
    Dim Featurenummer As Integer
    Dim vFeatArray() As Object
   
    Set swFeat = ModelDoc.FirstFeature
    Featurenummer = 0
    ReDim vFeatArray(swFeatMgr.GetFeatureCount(False))
   
    Do
        Set swFeat = swFeat.GetNextFeature
        Featurenummer = Featurenummer + 1
        FeatureName = swFeat.Name
        Set vFeatArray(Featurenummer) = swFeat
    Loop Until swFeat.IsBase2 = True            'sucht das erste Basisfeature
    Set swFeat = vFeatArray(Featurenummer - 1)  'nimmt die Skizze des ersten Basisfeatures
    FeatureName = swFeat.Name
   
    Do              'geht alle Features durch und sucht nach Fehlern
        FeatureName = swFeat.Name  'nur zum debuggen
        If swFeat.IsSuppressed = False Then        '<<<<<<<<<<<<<<<<<<<<<not working!***************************************
            ErrorType = swFeat.GetErrorCode()
            If ErrorType > 0 Then  'wenn irgenein Fehler vorliegt
'                ErrorCode = swFeat.GetErrorCode
                Fehler = True
                frmKonfigtest.lstFehlerKonfigs.AddItem (vConfigName) 'fügt den Namen der Konfig zur Liste der fehlerhaften Konfigs hinzu
                Exit Sub    'wenn ein Fehler gefunden ist, abbrechen und nächste Konfig
            End If
        End If
        Set swFeat = swFeat.GetNextFeature
    Loop While Not swFeat Is Nothing
   
    If Fehler = False Then
        frmKonfigtest.lstiOKonfigs.AddItem (vConfigName) 'fügt den Namen der Konfig zur Liste der fehlerfreien Konfigs hinzu
    End If

End Sub

Anbei mein Makro und mein Prüfteil, das enthält eine fehlerfreie Konfig ("io"), eine, bei der das fehlerhafte Feature unterdrückt ist, die fehlerhafte Skizze aber aktiv ("nur Skizzenfehler"), und eine, bei der nichts unterdrückt ist ("Featurefehler").
Das Makro selbst ist noch sehr im Rohzustand, falls es jemand ausprobieren will.

Piet

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

jens_oliver
Mitglied
Softwareentwickler


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

Beiträge: 114
Registriert: 28.06.2005

erstellt am: 24. Jan. 2008 10:47    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 Piet 10 Unities + Antwort hilfreich

hi,

bist du sicher, dass du durch alle features durchgehst?
hast du mal die featuer-namen vor der überprüfung ausgeben?

denn....
zum einen finde ich dein startfeature etwas merkwürdig.
Set swFeat = vFeatArray(Featurenummer - 1)
warum soll das die erste skizze sein?

und war es nicht so, dass man mit swFeat.GetNextFeature nur das nächsten feature auf der gleichen ebene bekommt und nicht die kinder.
um wirklich durch alle features zu laufen, muss man doch mit Feature.GetFirstSubFeature arbeiten.

/edit nein, es war nicht so. sw liefert alle feature edit/

gruß oliver


------------------
Software nach Maß für Ihr CAD-System
www.ib-knepper.de

[Diese Nachricht wurde von jens_oliver am 24. Jan. 2008 editiert.]

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

Piet
Mitglied
Konstruktionsleiter & Konstrukteur


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

Beiträge: 661
Registriert: 20.11.2001

SWx 2021

erstellt am: 24. Jan. 2008 12:01    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


ueberwachung1.JPG


ueberwachung2.JPG


ueberwachung3.JPG

 
Doch, durch die Features geht das Makro durch. Ich hab "Featurename" überwacht (siehe Anhang), und das Makro geht den Featurebaum komplett von oben nach unten durch.

Seltsamerweise produzieren "Beschriftung", "Kommentare" und ähnliche Features einen unbekannten Fehler. Deshalb lasse ich die Schleife durchlaufen, bis das erste Basisfeature auftaucht, das ist das erste Feature, welches einen Körper austrägt. Ein Feature davor ist die dazugehörige Skizze.

Mein Problem ist offenbar, dass auch unterdrückte Features ausgelesen werden, das ist der Punkt, an dem ich nicht weiterkomme.

Piet

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

jens_oliver
Mitglied
Softwareentwickler


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

Beiträge: 114
Registriert: 28.06.2005

erstellt am: 24. Jan. 2008 14:05    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 Piet 10 Unities + Antwort hilfreich

bei mir funktioniert dein makro. 

kann es sein, dass die skizze vieleicht nicht unterdrückt ist, aber das feature.

gruß oliver

------------------
Software nach Maß für Ihr CAD-System
www.ib-knepper.de

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

Piet
Mitglied
Konstruktionsleiter & Konstrukteur


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

Beiträge: 661
Registriert: 20.11.2001

SWx 2021

erstellt am: 24. Jan. 2008 14:49    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

Jetzt bin ich platt. Das funktioniert bei dir mit dem von mir angehängten Teil? Das Makro müsste am Schluß die beiden Konfigurationen "Featurefehler" und "nur Skizzenfehler" als fehlerhaft listen und die Konfiguration "io" als fehlerfrei.

Funktioniert das bei dir auch immer gleich, wenn du das Makro mehrmals ausführst?

Piet

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

jens_oliver
Mitglied
Softwareentwickler


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

Beiträge: 114
Registriert: 28.06.2005

erstellt am: 24. Jan. 2008 16:12    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 Piet 10 Unities + Antwort hilfreich

kann dein bauteil leider nicht öffnen (neue Version).

habe es an einem teil von mir getestet, ob das makro unterdrückte features erkennt. also ob "If swFeat.IsSuppressed = False Then  " funktioniert und bei mir läuft es einwandfrei.

oliver     

------------------
Software nach Maß für Ihr CAD-System
www.ib-knepper.de

[Diese Nachricht wurde von jens_oliver am 24. Jan. 2008 editiert.]

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

Piet
Mitglied
Konstruktionsleiter & Konstrukteur


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

Beiträge: 661
Registriert: 20.11.2001

SWx 2021

erstellt am: 25. Jan. 2008 11:14    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 Dank für die Unterstützung, besonders an Oliver, der mich auf die richtige Spur gebracht hat.
Wie sich rausstellte, lag der Fehler nicht beim IsSuppressed, sondern die davorliegende Routine hat die Namen der Konfigurationen durcheinander gekegelt. Dadurch ist die Anzeige der fehlerhaften/fehlerfreien Konfigs falsch gewesen.

Das fertige Makro veröffentliche ich demnächst hier: http://ww3.cad.de/foren/ubb/Forum2/HTML/014390.shtml

Piet

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