Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API: Attribut zu Feature hinzufügen (VB.net)

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
  
SOLIDWORKS Blech Schulung, ein Seminar am 26.01.2026
Autor Thema:  API: Attribut zu Feature hinzufügen (VB.net) (2098 mal gelesen)
JensemannDU
Mitglied
Student


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

Beiträge: 69
Registriert: 13.10.2009

Windows 7 Prof. 32 Bit
SolidWorks 2009 SP4.0
Visual Studio 2008
Dell XPS M1530
Core2Duo 2,4 GHz
4 GB RAM
GeForce 8600M GT

erstellt am: 15. Dez. 2009 10: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

Hallo zusammen,

ich möchte im Rahmen meines Projektes Feature mit zusätzlichen Attributen versehen. Genau genommen geht es dabei um drei Informationen (Boolean, 2x String).

Zwar habe ich das IAttribute Interface gefunden, mit dem man die Attribute auslesen kann, jedoch nicht, wie man die überhaupt an das Feature bekommt, also keine entsprechende Methode des IAttribute Objektes.

In der API-Hilfe findet man unter dem IAttribute Interface:

...After you place an attribute on an object, you can get the IAttribute object and get or set its parameter values. ...

Sehe ich das richtig, dass ich das IAttribute Objekt so bekomme:

Code:
IAttributeObjekt = CType(IFeatureObjekt.GetSpecificFeature2, SldWorks.IAttribute)

Kann mir da jemand einen Tipp geben?

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

StefanBerlitz
Guter-Geist-Moderator
IT Admin (CAx)



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

Beiträge: 8756
Registriert: 02.03.2000

SunZu sagt:
Analysiere die Vorteile, die
du aus meinem Ratschlag ziehst.
Dann gliedere deine Kräfte
entsprechend und mache dir
außergewöhnliche Taktiken zunutze.

erstellt am: 15. Dez. 2009 10: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 JensemannDU 10 Unities + Antwort hilfreich

Hallo JensemannDU,

schau mal unter dem IAttributeDef Interface, da gibt es auch die Methode CreateInstance5. In der API Hilfe gibt es auch ein Beispiel in VB6 namens "Create Attribute Example".

Ciao,
Stefan

------------------
Inoffizielle deutsche SolidWorks Hilfeseite    http://solidworks.cad.de
Stefans SolidWorks Blog

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

JensemannDU
Mitglied
Student


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

Beiträge: 69
Registriert: 13.10.2009

Windows 7 Prof. 32 Bit
SolidWorks 2009 SP4.0
Visual Studio 2008
Dell XPS M1530
Core2Duo 2,4 GHz
4 GB RAM
GeForce 8600M GT

erstellt am: 15. Dez. 2009 11: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 Stefan,

vielen Dank für die schnelle Hilfe. Da hatte mich Allows access to an attribute definition. in die Irre geführt, ich dachte es wäre auch nur zum Auslesen.

Wünsche noch einen sonnigen Tag,

Jens

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

JensemannDU
Mitglied
Student


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

Beiträge: 69
Registriert: 13.10.2009

Windows 7 Prof. 32 Bit
SolidWorks 2009 SP4.0
Visual Studio 2008
Dell XPS M1530
Core2Duo 2,4 GHz
4 GB RAM
GeForce 8600M GT

erstellt am: 15. Dez. 2009 15:06    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,

das mit dem Erstellen der Attribute hat geklappt, nun hätte ich aber noch eine Frage zum Auslesen.

Dazu benötige ich ja ein IAttribute Objekt, wenn ich das richtig verstanden habe. Aus den Beispielen, die ich gesehen hatte wird dazu das ausgewählte Feature (IFeature-Objekt) mit der Methode GetSpecificFeature2 ausgeführt. Allerdings erhalte ich dabei Nothing als Rückgabewert. Hier noch mal als Code:

Code:
Dim swAtt As IAttribute
Dim swFeature As IFeature

swAtt = swFeature.GetSpecificFeature2


Verwende ich die richtige Methode? Hat jemand vielleicht einen Tipp für mich?

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

JensemannDU
Mitglied
Student


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

Beiträge: 69
Registriert: 13.10.2009

Windows 7 Prof. 32 Bit
SolidWorks 2009 SP4.0
Visual Studio 2008
Dell XPS M1530
Core2Duo 2,4 GHz
4 GB RAM
GeForce 8600M GT

erstellt am: 17. Dez. 2009 11: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

Hallo,

ich habe noch rumprobiert, aber leider noch immer keine Lösung gefunden.

Ich habe auf jeden Fall das richtige Feature ausgewählt, da ich zb bei der Property "Name", den richtigen Wert zurückbekomme.

Wäre es möglich, dass das mit dem Feature hinzufügen nicht geklappt hat und deswegen ein Nothing IAttribute Objekt erstellt wird?

Hat irgendjemand eine Idee?

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: 18. Dez. 2009 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 Nur für JensemannDU 10 Unities + Antwort hilfreich

Hallo JensemannDU,

das Auslesen der Attribute funktioniert fast genauso wie das Erstellen.
Zunächst musst du eine Attributdefinition erzeugen und dieses im Entity Objekt suchen.
Schau dir mal das Beispiel Find Attribute Example (VB) in der API Hilfe an.
Hier auch mal der Get Teil meiner eigenen Property:

Code:
Get
    Try
        Dim oSwEntiy As sldworks.Entity
        Dim oSwAttDef As sldworks.AttributeDef
        Dim oSwAtt As sldworks.Attribute = Nothing
        Dim oSwParamName As sldworks.Parameter
        'Entiy Objekt
        oSwEntiy = CType(Me.SwFeature, sldworks.Entity)
        'Attributdefinition festlegen
        oSwAttDef = CType( _
            Me.MyModel.MySldWorks.SwApp.DefineAttribute( _
            "StringAttribute"), sldworks.AttributeDef)
        oSwAttDef.AddParameter("String", _
            swconst.swParamType_e.swParamTypeString, 0.0#, 0)
        'Gibt es diese Definition bereits?
        oSwAtt = CType(oSwEntiy.FindAttribute( _
            oSwAttDef, 0), sldworks.Attribute)
        If oSwAtt Is Nothing Then
            'Attributdefinition erzeugen
            oSwAtt = oSwAttDef.CreateInstance5( _
            Me.MyModel.SwModel, _
            oSwEntiy, "StringAttribute", 0, _
            swconst.swInConfigurationOpts_e.swAllConfiguration)
        End If
        oSwParamName = CType(oSwAtt.GetParameter( _
            "String"), sldworks.Parameter)
        Return oSwParamName.GetStringValue
    Catch ex As Exception
        Debug.Assert(False)
        Trace.WriteLine("Fehler: Wo: " & _
            ex.StackTrace & " Was: " & ex.Message)
        Return ""
        End Try
End Get

In der Property kann ein allgemeines String Attribut gelesen und geschrieben werden.

Hoffe das Hilft.

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

www.MySldWorks.de - SolidWorks API Snippets

[Diese Nachricht wurde von tbd am 18. Dez. 2009 editiert.]

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

JensemannDU
Mitglied
Student


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

Beiträge: 69
Registriert: 13.10.2009

Windows 7 Prof. 32 Bit
SolidWorks 2009 SP4.0
Visual Studio 2008
Dell XPS M1530
Core2Duo 2,4 GHz
4 GB RAM
GeForce 8600M GT

erstellt am: 04. Jan. 2010 13: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

Hallo Daniel,

durch Weihnachten und Sylvester komme ich erst jetzt dazu, mich wieder ausführlich mit meinem Projekt und deiner Antwort auseinanderzusetzen. Vielen Dank für deinen Tipp.

Aber wie du dir wohl denken kannst, tut es immernoch nicht das, was ich gerne hätte. Nachwievor wird das Attributobjekt nicht belegt und bleibt Nothing, auch nachdem ich eine neue Attributinstanz erstellt habe. Irgendwie hat mir das Beispiel in der API-Hilfe nicht wirklich weitergeholfen.

Hier mein angepasster Code meiner Function, basierend auf deinem Beispiel:

Code:
Dim swEntity As SldWorks.Entity
        Dim swAttDef As SldWorks.AttributeDef
        Dim swAtt As SldWorks.Attribute = Nothing
        Dim swParamName As SldWorks.Parameter

        Dim swApp As SldWorks.SldWorks
        Dim swModel As ModelDoc2
        Dim swSelMgr As SldWorks.SelectionMgr
        Dim swFeature As SldWorks.Feature

        swApp = New SldWorks.SldWorks()
        swModel = swApp.ActiveDoc
        swSelMgr = swModel.SelectionManager
        swFeature = swSelMgr.GetSelectedObject6(1, 0)

        'Entiy Objekt
        swEntity = swFeature

        'Attributdefinition festlegen
        swAttDef = CType( _
            swApp.DefineAttribute( _
            "StringAttribute"), SldWorks.AttributeDef)
        swAttDef.AddParameter("String", _
            SwConst.swParamType_e.swParamTypeString, 0.0#, 0)

        'Gibt es diese Definition bereits?
        swAtt = swEntity.FindAttribute(swAttDef, 0)

        If swAtt Is Nothing Then
            'Attributdefinition erzeugen
            swAtt = swAttDef.CreateInstance5( _
            swModel, _
            swEntity, "StringAttribute", 0, _
            SwConst.swInConfigurationOpts_e.swAllConfiguration)
        End If

        swParamName = swAtt.GetParameter("String")

        swParamName = CType(swAtt.GetParameter( _
            "String"), SldWorks.Parameter)
        swParamName.GetStringValue()
        Return swParamName.GetStringValue()


Wie gesagt, ein Attribut wird erstellt, aber bei swParamName = swAtt.GetParameter("String") sagt er mir,

Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt.

Hättest du noch einen Hinweis für mich?

Viele Grüße

Jens

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

JensemannDU
Mitglied
Student


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

Beiträge: 69
Registriert: 13.10.2009

Windows 7 Prof. 32 Bit
SolidWorks 2009 SP4.0
Visual Studio 2008
Dell XPS M1530
Core2Duo 2,4 GHz
4 GB RAM
GeForce 8600M GT

erstellt am: 04. Jan. 2010 16:26    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

Mh, wie das wohl häufig so ist. Stundenlang dran gearbeitet, keine Lösung gefunden, nen paar Tage liegenlassen und irgendwann klappt es dann. Ich habe keine Ahnung, wieso das vorher nie funktioniert hat.

Danke an alle für ihre hilfreichen Beiträge!

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