Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  VB.net: nach Featureermittlung einzelnes Feature als neues Objekt

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


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: 05. Nov. 2009 10:28    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,

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


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: 05. Nov. 2009 10:35    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 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


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: 05. Nov. 2009 11:52    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,

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


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: 05. Nov. 2009 14:58    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

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 GetDefinition
Code:
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


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: 05. Nov. 2009 15: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

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 Double

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


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: 05. Nov. 2009 16:17    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,

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 ansehenTechnischer Zeichner, Bauzeichner
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: 05. Nov. 2009 16:22    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

Nun funktionert es! Vielen Dank!

Bei dem Durchmesser hatte ich leider Property mit Methode verwechselt. :-)

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