| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| Technikerschüler der staatlichen Feintechnikschule Schwenningen zu Besuch bei SolidCAM GmbH in Schramberg |
Autor
|
Thema: VB.net: nach Featureermittlung einzelnes Feature als neues Objekt (688 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: 05. Nov. 2009 10:28 <-- editieren / zitieren --> Unities abgeben:
Hallo, mal wieder eine VB.net Frage. Ich hoffe jemand ist schlauer als ich. In meinem Projekt habe ich über IModelDoc2 die Feature einer Bauteildatei ausgelesen und in einem Array gespeichert. Nun lasse ich eine Schleife mit GetTypeName2 darüber laufen und mit Select Case differenziere ich über den Typ die einzelnen Feature. Ich zähle also beispielsweise, wie viele Bohrungen vorhanden sind. Nun möchte ich aber nähere Informationen aus den Bohrungen auslesen (Durchmesser etc.), dafür wollte ich das einzelne Feature in ein WizardHoleFeatureData2 Objekt umwandeln, was allerdings nicht funktioniert. Hat jemand einen Tipp für mich? Hier noch ein wenig Code:
Code: For Each swFeature As SldWorks.Feature In swFeatures FeatureType = swFeature.GetTypeName2 Select Case FeatureType Case "HoleWzd" HoleWzdCounter += 1 swWzdHole = swFeature End Select
bei swWzdHole = swFeature sagt er mir, dass das Objekt nicht umgewandelt werden kann. 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: 05. Nov. 2009 10:35 <-- editieren / zitieren --> Unities abgeben: Nur für JensemannDU
Hallo JensemannDU, das funktioniert so nicht. Um das spezielle Objekt deines Features zur instanzieren musst du über die Methode GetSpecificFeature2 gehen. Also ungefähr so:
Code: swWzdHole = swFeature.GetSpecificFeature2
------------------ Mfg Daniel www.MySldWorks.de - SolidWorks API Snippets 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: 05. Nov. 2009 11:52 <-- editieren / zitieren --> Unities abgeben:
Hallo Daniel, wieder einmal vielen Dank für die schnelle Antwort. Ich habe das soweit auch probiert, und der Fehler kommt auch erst in der Zeile danach, bei HoleDia = swWzdHole.Diameter(). Da sagt er mir: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt. Und ich solle mit New eine neue Instanz einfügen. Code: Case "HoleWzd" HoleWzdCounter += 1 swWzdHole = swFeature.GetSpecificFeature2() HoleDia = swWzdHole.Diameter() TxtBoxDia.Text = TxtBoxDia.Text & HoleDia & Wrap
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: 05. Nov. 2009 14:58 <-- editieren / zitieren --> Unities abgeben: Nur für JensemannDU
Einmal wenn man nicht richtig auspasst. GetSpecificFeature2 ist der flasche Befehl. Diesem benutz man, wenn man zum Beispiel bei einer Skizze das Skizzenfeature initialisieren möchte. Du aber nöchtest ja die Definition deines Features. Dazu verwendet man die Methode GetDefinitionCode: Dim oSwHoleFeature As sldworks.WizardHoleFeatureData2 Dim dDurchmesser As Double oSwHoleFeature = CType( _ oMyFeature.SwFeature.GetDefinition, _ sldworks.WizardHoleFeatureData2) dDurchmesser = oSwHoleFeature.Diameter
Sorry das ich dich in die Irre geführt habe! ------------------ Mfg Daniel www.MySldWorks.de - SolidWorks API Snippets 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: 05. Nov. 2009 15:49 <-- editieren / zitieren --> Unities abgeben:
Heho! Danke, klingt für mich auch sehr logisch, ergibt auch keinen Fehler, allerdings auch das Ergebnis 0,0 was bei einer 5mm Bohrung irgendwie komisch ist. Ich hatte deinen Code so für mich angepasst: Code: Dim swWzdHole As SldWorks.WizardHoleFeatureData2 Dim HoleDia As DoubleswWzdHole = CType( _ swFeature.GetDefinition, _ SldWorks.WizardHoleFeatureData2) HoleDia = swWzdHole.Diameter()
Damit ich das richtig verstehe, CType übergibt die Parameter aus swFeature in ein WizardHoleFeatureData2 Objekt, oder? Hast du eine Ahnung, wo mein Fehler liegt? 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: 05. Nov. 2009 16:17 <-- editieren / zitieren --> Unities abgeben: Nur für JensemannDU
Hallo JensemannDU, es gibt verschiedene Typen von WizardHoleFeatureData.
Code: Dim eSwWzdHoleTypes As swconst.swWzdHoleTypes_e eSwWzdHoleTypes = CType(oSwHoleFeature.Type, swconst.swWzdHoleTypes_e)
Je nach Typ musst du den Durchmesser anders ermitteln:
Code: dDurchmesser = oSwHoleFeature.HoleDiameter dDurchmesser = oSwHoleFeature.MajorDiameter dDurchmesser = oSwHoleFeature.ThruHoleDiameter dDurchmesser = oSwHoleFeature.TapDrillDiameter
Da musst du mal in der API Hilfe nachschlagen.Zu CType: Damit wird eine Typenumwandlung in Visual Basic angegeben. swFeature.GetDefinition hat als Rückgabe den Typ Object. Der zweite Parameter legt fest, in welchen Typ CType er das Object umwandelt, im Beispiel SldWorks.WizardHoleFeatureData2. Ist Typ sicherer.
------------------ Mfg Daniel www.MySldWorks.de - SolidWorks API Snippets Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Technischer Zeichner (m/w/d) in Voll-/Teilzeit | Die KÖGL GmbH mit Sitz in Bubesheim bei Günzburg ist ein familiengeführtes Unternehmen, welches heute von drei Generationen geleitet wird. Wir zählen mit unseren über 185 Mitarbeitern zu den Marktführenden Spezialisten in der Herstellung u. Entwicklung von Betriebs-, Lager- u. Fahrzeugeinrichtungen. Seit der Unternehmensgründung im Jahre 1964 verzeichnet KÖGL kontinuierliches Wachstum. In all diesen Jahren hat das Unternehmen die Struktur eines typischen Familienbetriebs beibehalten.... | Anzeige ansehen | Technischer Zeichner, Bauzeichner |
|
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: 05. Nov. 2009 16:22 <-- editieren / zitieren --> Unities abgeben:
|