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

 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 / zitieren --> Unities abgeben:         
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)

 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 / zitieren --> Unities abgeben:          Nur für JensemannDU
|
JensemannDU Mitglied Student

 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 / zitieren --> Unities abgeben:         
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

 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 / zitieren --> Unities abgeben:         
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 IFeatureswAtt = 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

 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 / zitieren --> Unities abgeben:         
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
  
 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 / zitieren --> Unities abgeben:          Nur für JensemannDU
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

 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 / zitieren --> Unities abgeben:         
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

 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 / zitieren --> Unities abgeben:         
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 >>)
 |