Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Attribute abfragen VBA SW16

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
  
Schmucker Sound am Ohr: NOVA Audio Ohrringe
Autor Thema:  Attribute abfragen VBA SW16 (1068 mal gelesen)
Sc1ssoR
Mitglied
Student


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

Beiträge: 26
Registriert: 11.04.2017

SolidWorks 16
VBA

erstellt am: 13. Jun. 2017 12: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


screenshot.jpg

 
Hier bin ich wieder mit einem neuen Projekt und neuen Problemen 

Das neue Projekt befasst sich mit dem Design CHecker von Solid Works. Dieser muss durchlaufen werden und das Resultat wird in die Dateieigenschaften der Zeichnung eingefügt.

Da diese aber editiert werden kann soll ein Attribut eingefügt werden welches auch das Resultat enthält. Die beiden müssen miteinander verglichen werden damit mit dem Editieren kein Resultat gefälscht werden kann.

Im Anhang befindet sich mein bisheriges Makro womit ich das Resultat in die Dateieigenschaften schreib. Nur das auslesen des Parameters vom Attribut funktioniert bei mir nicht und ich komm nicht auf eine Lösung  

Hoffentlich könnt ihr mir da weiterhelfen

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

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



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

Beiträge: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 13. Jun. 2017 12: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 Sc1ssoR 10 Unities + Antwort hilfreich

Hallo,

versuch es mal mit

Code:
Set swParam = swAtt.GetParameter(DC)

ist ja immerhin auch ein Objekt was du da haben möchtest, so hast du es zumindest deklariert.
Wenn du von hieraus dann zu dem Wert hinter dem Parameter kommen möchtest gibt es die GetDoubleValue / GetStringValue Methoden des Parameter Objects.

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete  

[Diese Nachricht wurde von bk.sc am 13. Jun. 2017 editiert.]

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

Sc1ssoR
Mitglied
Student


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

Beiträge: 26
Registriert: 11.04.2017

SolidWorks 16
VBA

erstellt am: 13. Jun. 2017 12: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

Danke für die schnelle Antwort!

hab es mit

Set swParam = swAtt.Get Parameter (DC)
Set swParam = swAtt.GetDoubleValue
Set swParam = swAtt.GetStringValue

Probiert und den selben Error bekommen.

Ich hab allerdings festgestellt das zu dem Zeitpunkt mein swAtt Nothing ist daher könnte es daran liegen. Aber warum der Nothing ist weiß ich auch nicht..

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

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



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

Beiträge: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 14. Jun. 2017 06:51    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 Sc1ssoR 10 Unities + Antwort hilfreich

Hallo,

kannst du den Codeabschnitt, mal hier posten, weil bin zu faul den abzutippen  . Dann kann mann dir vielleicht besser helfen.

Code:
Set swParam = swAtt.GetDoubleValue
Set swParam = swAtt.GetStringValue

diese beiden Zeilem können so schonmal nicht funktionieren, da GetDoubleValue / GetStringValue auf das swParam Object angewendet werden müssen und das ohne Set, da der Rückgabewert hier kein Object ist.

Code:
value2 = swParam.GetDoubleValue
'oder
value2 = swParam.GetStringValue

wären hier eher richtig ja nachdem ob du einen Text oder eine Zahl als Rückgabewert hast.

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete 

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

Sc1ssoR
Mitglied
Student


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

Beiträge: 26
Registriert: 11.04.2017

SolidWorks 16
VBA

erstellt am: 14. Jun. 2017 07: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

Aber sicher doch 

Code:___________________

Option Explicit
Public Enum swParamType_e
        swParamTypeDouble = 0
        swParamTypeString = 1
        swParamTypeInteger = 2
        swParamTypeDVector = 3
End Enum

Sub Main()
    Dim swApp          As SldWorks.SldWorks
    Dim swModel        As SldWorks.ModelDoc2
    Dim Config          As Variant
    Dim swAttDef        As SldWorks.AttributeDef
    Dim swAtt          As SldWorks.Attribute
    Dim swParam        As SldWorks.Parameter
    Dim DC              As String
    Dim bRet            As Boolean
    Dim value1          As String
    Dim value2          As String
   
    DC = "DesignChecker"
    Set swApp = CreateObject("SldWorks.Application")
    Set swModel = swApp.ActiveDoc

'Kontrolle Datei geöffnet
    If swModel Is Nothing Then
      Call MsgBox("Keine Datei geöffnet", vbOKOnly, "Information")
        Exit Sub
    End If
'----------------------------------------------------------------------------------------------------------------
'Eintragen Design Checker Resultat
    Debug.Print swModel.DeleteCustomInfo2(Config, "Design Check")
    Debug.Print swModel.AddCustomInfo3(Config, "Design Check", swCustomInfoText, "Ok")
'----------------------------------------------------------------------------------------------------------------
'Einfügen des Attributes
Set swAttDef = swApp.DefineAttribute(DC)
bRet = swAttDef.AddParameter(DC, SwConst.swParamTypeString, 4, 0)
bRet = swAttDef.Register
Set swAtt = swAttDef.CreateInstance5(swModel, Nothing, "DesignCheck", 0, SwConst.swAllConfiguration)

swModel.ForceRebuild3 True
'----------------------------------------------------------------------------------------------------------------
'Vergleich der Parameter Werte
Set swParam = swAtt.GetParameter(DC)
Dim k As String
k = swParam.GetStringValue
If k = "4" Then
    value1 = "Ok"
    value2 = swModel.GetCustomInfoValue(Config, "DesignCheck")
    If swParam = value2 Then
        MsgBox ("stimmt überein")
    End If
End If
End Sub
______________________________________

Des Weiteren habe ich festgestellt das swAtt in der ersten Zeile bei dem Vergleich nur nicht Nothing ist, wenn der Ordner im Design Tree noch nicht gesetzt wurde (also SwAttDef.CreateInstance5....) noch nicht ausgeführt wurde. zu dem Zeitpunkt läuft das Makro wie gewollt durch nur den Parameter Wert "4" kann ich mit .GetStringValue nicht erreichen (k = "")

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