Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  2 Flächen per vba selektieren um dann winkel zu messen

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 Kurs mit IHK-Zertifzierung , ein Kurs (bis zu 100% förderbar mit Bildungsgutschein)
Autor Thema:  2 Flächen per vba selektieren um dann winkel zu messen (2708 mal gelesen)
Harald Stratmann
Mitglied
Dipl.-Ing. Maschinenbau


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

Beiträge: 169
Registriert: 17.11.2003

W7 professional-64bit
12GB Ram
NVidia Quadro 2000
SWX 2013

erstellt am: 17. Apr. 2012 13: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

Hallo SWXSolidWorks Gemeinde,
ich komme irgendwie mit der Selektion von 2 Flächen mittels VBA nicht klar...
Habe da Verständnisprobleme mit dem Selectionmanager...
Evtl. kann mir ja einer der Experten weiterhelfen...
Nun zu meinem Code (Ist aus der Api Hilfe abgeleitet..)

Variablendeklarationen sind alle global im Modul
und habe ich der Lesbarkeit wegen hier weggelassen.
In der Sub Messen will ich den eigentlichen Messvorgang erledigen.
In der Sub SelectComponentFaceByName soll die Selektion der Flächen erfolgen

Sub Messen()
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set Measure = swModel.Extension.CreateMeasure
   
    SelectComponentFaceByName "Antrieb1-2", "F_1grün"
    SelectComponentFaceByName "Gestell-1", "F1_Gestell"

    boolstatus = Measure.Calculate(Nothing)
   
    If (Not (Measure.Angle = -1)) Then
        'Debug.Print "Angle: " & Measure.Angle
        phi = Measure.Angle * 180 / Pi
    End If
End Sub

Sub SelectComponentFaceByName(CompName As String, FaceName As String)

Const swSelCOMPONENTS = 20

    Set swApp = CreateObject("SldWorks.Application")
    ' Get active Assembly document
    Set AssyDoc = swApp.ActiveDoc()
    Set SelMgr = AssyDoc.SelectionManager()
    Set Comp = AssyDoc.GetComponentByName(CompName)
    Set Body = Comp.GetBody() ' Get the Component Body
    If (Body Is Nothing) Then
        swApp.SendMsgToUser "Component Body Unavailable."
        swApp.SendMsgToUser "Make sure not lightweight or suppressed"
        Exit Sub
    End If
    Set Face = Body.GetFirstFace
    ' Traverse thru all body faces
    Do While Not Face Is Nothing
        ' Call ModelDoc.GetEntityName.
        CurFaceName = AssyDoc.GetEntityName(Face)
        If (CurFaceName = FaceName) Then
            Face.Select (0) ' Select the face
            Exit Do
        End If
        Debug.Print CurFaceName
        Set Face = Face.GetNextFace
    Loop
End Sub

Mir ist schon klar was passiert, wenn ich die Sub zum selektieren
das zweite Mal aufrufe, wird natürlich die erste Selektion aufgehoben,
und genau an dieser Stelle hakt es bei mir...
Hier habe ich nocht nicht begriffen, wie man sowas über den selectionmanager löst.

Ich wäre dankbar für ein wenig Hilfe.
Gruß Harald

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: 17. Apr. 2012 13:24    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 Harald Stratmann 10 Unities + Antwort hilfreich

Hallo Harald,

versuch mal die aktuellere Methode Select4, die hat auch ein Flag für "Append" um mehrere Objekte zu selektieren.

Ciao,
Stefan

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

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

Harald Stratmann
Mitglied
Dipl.-Ing. Maschinenbau


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

Beiträge: 169
Registriert: 17.11.2003

W7 professional-64bit
12GB Ram
NVidia Quadro 2000
SWX 2013

erstellt am: 17. Apr. 2012 14:25    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,
herzlichen Dank für den Tip!  So funktionierts:

Dim swSelData As SldWorks.SelectData  -> Variable deklariert
Und in der Selektionsprozedur
Die Flächenselektion wie folgt vorgenommen:
boolstatus = Face.Select4(True, swSelData)

Dann ist es auch möglich mehrere Flächen anzuwählen....

Gruß Harald

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