Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  API: FeatureType?

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 und FEM , ein Kurs (bis zu 100% förderbar mit Bildungsgutschein)
Autor Thema:  API: FeatureType? (1668 mal gelesen)
Mac83Gyver
Mitglied



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

Beiträge: 20
Registriert: 05.01.2008

SolidWorks2006
Dual-AMD Turion64 1,6GHz
2GB RAM
NVIDIA GeForce 7400
WinXP (MediaCenter)

erstellt am: 21. Feb. 2008 10:02    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!

Nachdem ich mir ein bestimmtes Feature (vom Typ SldWorks.Feature) über dessen Namen herausgesucht habe (unten findet ihr auch den Code dazu) - wie/wo kann ich dann dessen Typ (also Part oder Assembly..) auslesen!? Feature.Type gibts nämlich leider nicht...

Danke und Lg,
Clemens Mandl


PS(Code):
Public Function getFeature(ByVal name As String) As SldWorks.Feature
        Dim Feat As SldWorks.Feature

        Feat = CType(Model.FirstFeature, SldWorks.Feature)
        Do While Not Feat Is Nothing
            If InStr(Feat.Name, name) <> 0 Then
                Exit Do
            End If
            Feat = CType(Feat.GetNextFeature(), SldWorks.Feature)
        Loop
        Return Feat
End Function

------------------
Clemens Mandl

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: 21. Feb. 2008 10:23    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 Mac83Gyver 10 Unities + Antwort hilfreich

Hallo Clemens,

sucht du evtl. das: retval = Feature.GetTypeName
Die Rückgabe dieser Methode ist ein String welcher durch BodyFeatures_e definiert ist.

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

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

Mac83Gyver
Mitglied



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

Beiträge: 20
Registriert: 05.01.2008

SolidWorks2006
Dual-AMD Turion64 1,6GHz
2GB RAM
NVIDIA GeForce 7400
WinXP (MediaCenter)

erstellt am: 21. Feb. 2008 11: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

Danke für den Hinweis Daniel - aber der BodyFeatures_e - Type bringt mich hier leider nicht weiter..

Es geht um folgendes: Ich habe ein Dimension-Property (Code wieder unten..) - wobei ich Dimensionen im Model über deren Namen/Pfad abrufen (get) und ändern (set) kann. Diese Pfade bekomme ich einfach indem ich die Änderung einmal manuell vornehme und mit dem SW Makrorecorder aufzeichne.. - was mich allerdngs stört ist, dass

die Namen/Pfade für Get und Set unterschiedlich sind/sein müssen:
Bsp:
name4get: "D1@Distance1@c2090_01-1@section_lowerarm"
name4set: "D1@Distance1@c2090_01.Assembly"

und ich hätte gerne nur einen anme-input-string für die dimension-property..
das lässt sich ja insofern machen, dass ich mir nur den name4get geben lasse und mir den anderen selber zusammenstückel.. - das einzig verbleibende problem ist, dass er beim name4set hinten soweit ich das interpretiere den Typ des direkten parents der dimension (entweder .part oder .assembly) dazuschreibt und ich habe es bisher nicht geschafft das zu verifizieren..

Weiß jemand wie das geht oder hat einen anderen Lösungsvorschlag..?
Danke und LG,
Clemens Mandl

PS (Code):
    Public Property Dimension(ByVal name4Get As String, ByVal name4Set As String, Optional ByVal type As String = "DIMENSION") As Double

        Get
            Dim swDimension As SldWorks.Dimension
            Dim selObject As SldWorks.DisplayDimension
            Dim dimValue() As Double

            Me.ClearSelections()
            Me.SelectComponent(name4Get, type)
            selObject = CType(selMgr.GetSelectedObject6(1, -1), SldWorks.DisplayDimension)

            swDimension = CType(selObject.GetDimension(), SldWorks.Dimension)
            dimValue = CType(swDimension.GetSystemValue3(1, ""), Double())
            Return dimValue(0)
        End Get

        Set(ByVal value As Double)
            Dim parameter As Object

            parameter = Model.Parameter(name4Set)
            parameter.systemvalue = value
        End Set
    End Property

------------------
"Neid ist die aufrichtigste Form der Anerkennung" (Wilhelm Busch)

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

Mac83Gyver
Mitglied



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

Beiträge: 20
Registriert: 05.01.2008

SolidWorks2006
Dual-AMD Turion64 1,6GHz
2GB RAM
NVIDIA GeForce 7400
WinXP (MediaCenter)

erstellt am: 21. Feb. 2008 16:09    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

Also nochmal die Frage in aller Kürze und Klarheit:
(Wie) Kann ich, wenn ich den Namen einer Sub-Komponente meiner geöffneten Baugruppe habe/kenne (schnellstmöglich) per API feststellen ob es sich dabei um einen Teil oder eine Sub-Baugruppe handelt?

(über den SelectionManager würde es glaub ich gehen - aber SelectByID verlangt leider schon den Typ..)

Danke und LG,
Clemens Mandl

------------------
"Neid ist die aufrichtigste Form der Anerkennung" (Wilhelm Busch)

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: 21. Feb. 2008 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 Nur für Mac83Gyver 10 Unities + Antwort hilfreich

Hallo Clemens,

Schau dir mal in der API.Hilfe das Beispiel Show All Components an.
Mit Component2.GetPathName oder Component2.GetModelDoc (wenn geöffnet) kannst du denn Dokumenttyp ermitteln.

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

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



Anzeige:Infos zum Werbeplatz >>

GeoVisual Civil Engineer CAD APP für 3D, Tiefbau, AEC - Architektur-, Ingenieur- und Bauwesen

Die benutzerfreundliche Softwarelösung zur Visualisierung von Infrastrukturplanungen

Mac83Gyver
Mitglied



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

Beiträge: 20
Registriert: 05.01.2008

SolidWorks2006
Dual-AMD Turion64 1,6GHz
2GB RAM
NVIDIA GeForce 7400
WinXP (MediaCenter)

erstellt am: 21. Feb. 2008 19:29    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

Vielen Dank Daniel! Jetzt liegt mein Problem nur noch darin, wie ich das richtige component2-object möglichst effizient/schnell belege!

Die einzige Möglichkeit, die ich gefunden habe ist, über

AssemblyDoc.GetComponents(False)

alle componenten auszulesen (bei True wären es nur die der ersten Hierarchie-Ebene) und dann über eine schleife solange auszulesen bis ich die mit dem richtigen Namen gefunden habe..

Das hat allerdings den Nachteil, dass es extrem langsam ist - sowohl die methode "getcomponents" (besonders bei größeren modellen) als auch die "such-schleife.." (und meine Anwendung ist leider sehr zeitkritisch)!

Gibt es eine schnellere Lösung das component2-object mit einem bestimmten subpart oder subassembly zu belegen..!?

Vielen Dank nochmal und LG,
Clemens Mandl

PS: API-Help zu AssemblyDoc::GetComponents
This method gets all of the components in the active configuration of this assembly.
Retval = AssemblyDoc.GetComponents ( TopLevelOnly)
Output: (VARIANT) Retval, VARIANT of type SafeArray of Dispatch pointers to the components

------------------
"Neid ist die aufrichtigste Form der Anerkennung" (Wilhelm Busch)

[Diese Nachricht wurde von Mac83Gyver am 21. Feb. 2008 editiert.]

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