Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Virtuelles Teil anlegen und speichern

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
  
CAD-Konfigurationen vom Angebot bis in die Fertigung
Autor Thema:  Virtuelles Teil anlegen und speichern (1209 mal gelesen)
wemasb
Mitglied
Quereinsteiger


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

Beiträge: 124
Registriert: 10.09.2012

SolidWorks 2018
Office 2010
AutoCAD 2007

erstellt am: 06. Okt. 2016 15:27    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 allesamt,

ich habe eine (hoffentlich kleine) Frage an euch:

In der SolidWorks API-Hilfe habe ich ein Beispiel für das anlegen von virtuellen Teilen in einer Baugruppe und anschließendes speichern als existierende Datei gefunden.


'---------------------------------------------------------------------
' Preconditions:

' 1. Open: <SolidWorks_install_dir>\samples\tutorial\smartcomponents\stepped_shaft.sldasm
' 2. A planar face on the assembly is selected.
' 3. Step through this macro (F8).
'
' Postconditions:

' 1. The new part is inserted as a virtual component in the assembly.
' 2. The virtual component is saved to an external file,
'      and its name changes in the FeatureManager design tree.
'
' NOTE: Because this assembly is used in a SolidWorks online tutorial, do not
'      save the assembly when you close it.
'---------------------------------------------------------------------

Option Explicit

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swAssy As SldWorks.AssemblyDoc
Dim swComponent As SldWorks.Component2
Dim swSelMgr As SldWorks.SelectionMgr
Dim status As Long

Sub Main()

    Set swApp = Application.SldWorks

    Set swModel = swApp.ActiveDoc
    Set swAssy = swModel

    ' Get the pre-selected planar face
    Dim swFeature  As SldWorks.Face2
    Set swSelMgr = swModel.SelectionManager
    Set swFeature = swSelMgr.GetSelectedObject6(1, 0)

    ' Create the part and insert it as a virtual component
    ' in the assembly
    status = swAssy.InsertNewVirtualPart(swFeature, swComponent)

    If status = 1 Then

        Debug.Print "Name of virtual component: " & swComponent.Name2

        ' Check to see if the part is a virtual component
        Debug.Print "Is component virtual? " & swComponent.IsVirtual
       

        Dim objFSO As Object
        Dim objFile As Object
        Dim compName As String
        Dim splits As Variant
       

        Set objFSO = CreateObject("Scripting.FileSystemObject")
        Set objFile = objFSO.GetFile(swModel.GetPathName)

        splits = Split(swComponent.Name, "^")
        compName = objFSO.GetParentFolderName(objFile) & "\" & splits(0)

        If swComponent.GetModelDoc2.GetType = swDocPART Then
            compName = compName & ".sldprt"
        Else
            compName = compName & ".sldasm"
        End If

        Debug.Print "Name of saved virtual component: " & compName
        swComponent.SaveVirtualComponent compName

    Else
        Debug.Print "Error code returned when attempting to insert new part as virtual component: " & status
    End If

    swModel.ClearSelection2 (True)
   

End Sub


Jetzt zu meiner eigentlichen Frage:
In den Preconditions ist ja schon erwähnt, dass eine plane Fläche von einem existierenden Teil angewählt sein muss um das Makro zu starten. Geht das ganze aber auch wenn ich nur eine Ebene ausgewählt habe (Beispiele: "Ebene Vorne")? Und wenn ja, wie? Hab schon ein bisschen rumprobiert aber nichts klappt.

Danke im Voraus für eure Hilfe 

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

HenryV
Mitglied
Konstrukteur, Engineering


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

Beiträge: 813
Registriert: 18.05.2005

SolidWorks 2022 x64 SP5.0
Dell Precision 5820
Intel Xeon W-2125 4x4GHz
NVIDIA Quadro P2000 5GB
32GB RAM
2x Dell U2412M, 24" TFT
Windows 10 Enterprise x64 22H2
Microsoft 365 E5
Microsoft Visual Studio Enterprise 2022

erstellt am: 06. Okt. 2016 16: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 wemasb 10 Unities + Antwort hilfreich

Hallo Steven

Gemäss Beispiel "Insert New Instance of Virtual Component (VBA)" das Feature in eine refPlane umwandeln.

Code:
Dim swFeature  As SldWorks.Feature
Code:
Set swFeature = swSelMgr.GetSelectedObject6(1, -1)
Dim swPlane As SldWorks.refPlane
Set swPlane = swFeature.GetSpecificFeature2
und das virtuelle Teil so einfügen
Code:
status = swAssy.InsertNewVirtualPart(swPlane, swComponent)

Gruss Andreas

------------------
21 ist nur die halbe Antwort.

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

wemasb
Mitglied
Quereinsteiger


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

Beiträge: 124
Registriert: 10.09.2012

SolidWorks 2018
Office 2010
AutoCAD 2007

erstellt am: 06. Okt. 2016 16:39    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

Bei

Set swFeature = swSelMgr.GetSelectedObject6(1, -1)

geht er ins Debuggen (Laufzeitfehler 91: Objektvariable oder With-Blockvariable nicht festgelegt)

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

HenryV
Mitglied
Konstrukteur, Engineering


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

Beiträge: 813
Registriert: 18.05.2005

SolidWorks 2022 x64 SP5.0
Dell Precision 5820
Intel Xeon W-2125 4x4GHz
NVIDIA Quadro P2000 5GB
32GB RAM
2x Dell U2412M, 24" TFT
Windows 10 Enterprise x64 22H2
Microsoft 365 E5
Microsoft Visual Studio Enterprise 2022

erstellt am: 06. Okt. 2016 17:12    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 wemasb 10 Unities + Antwort hilfreich

Hallo

Hier der ganze Code, der bei mir läuft. Vor dem Ausführen eine Ebene auswählen.

Code:
Option Explicit

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swAssy As SldWorks.AssemblyDoc
Dim swComponent As SldWorks.Component2
Dim swSelMgr As SldWorks.SelectionMgr
Dim status As Long

Sub Main()

    Set swApp = Application.SldWorks

    Set swModel = swApp.ActiveDoc
    Set swAssy = swModel

    ' Get the pre-selected RefPlane
    Dim swFeature  As SldWorks.Feature
    Set swSelMgr = swModel.SelectionManager
    Set swFeature = swSelMgr.GetSelectedObject6(1, -1)
    Dim swPlane As SldWorks.RefPlane
    Set swPlane = swFeature.GetSpecificFeature2

    ' Create the part and insert it as a virtual component
    ' in the assembly
    status = swAssy.InsertNewVirtualPart(swPlane, swComponent)

    If status = 1 Then

        Debug.Print "Name of virtual component: " & swComponent.Name2

        ' Check to see if the part is a virtual component
        Debug.Print "Is component virtual? " & swComponent.IsVirtual
     
        Dim objFSO As Object
        Dim objFile As Object
        Dim compName As String
        Dim splits As Variant
     

        Set objFSO = CreateObject("Scripting.FileSystemObject")
        Set objFile = objFSO.GetFile(swModel.GetPathName)

        splits = Split(swComponent.Name, "^")
        compName = objFSO.GetParentFolderName(objFile) & "\" & splits(0)

        If swComponent.GetModelDoc2.GetType = swDocPART Then
            compName = compName & ".sldprt"
        Else
            compName = compName & ".sldasm"
        End If

        Debug.Print "Name of saved virtual component: " & compName
        swComponent.SaveVirtualComponent compName

    Else
        Debug.Print "Error code returned when attempting to insert new part as virtual component: " & status
    End If

    swModel.ClearSelection2 (True)

End Sub


Gruss Andreas

------------------
21 ist nur die halbe Antwort.

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

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



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

Beiträge: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 07. Okt. 2016 07:32    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 wemasb 10 Unities + Antwort hilfreich

Hallo,

ich hab in meinem Code folgendes verwendet um immer die "Ebene Vorn" zu verwenden, also hier muss ich vorher keine Ebene selektieren.

Code:

Dim swFeature  As SldWorks.RefPlane

status = swModel.Extension.SelectByID2("Ebene Vorn", "PLANE", 0#, 0#, 0#, True, 0, Nothing, swSelectOptionDefault)
   
Set swSelMgr = swModel.SelectionManager
Set swFeature = swSelMgr.GetSelectedObject6(1, 0)


Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete 

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

wemasb
Mitglied
Quereinsteiger


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

Beiträge: 124
Registriert: 10.09.2012

SolidWorks 2018
Office 2010
AutoCAD 2007

erstellt am: 19. Okt. 2016 07:20    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

Entschuldigt die späte Antwort 

Wollte euch nur noch eben für eure Hilfe danken, hab dadurch mein Problem in den Griff bekommen 

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