Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Hinzufügen von Bauteilen

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
  
Im Fokus: CAD Automation & CPQE
Autor Thema:  Hinzufügen von Bauteilen (1433 mal gelesen)
Muck93
Mitglied



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

Beiträge: 16
Registriert: 24.01.2016

erstellt am: 23. Mai. 2017 18: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

Hallo Leute,
ich weiß die Frage wird kein Problem für euch sein und Ich habe schon im Forum gesucht jedoch funktioniert davon nichts :-(

Also, ich habe mehrere Baugruppen die zueinander gehören.

Meine Deklarationen:

Code:
    Private fso2 As New FileSystemObject
    Dim swApp As SldWorks.SldWorks
    Dim Gesamtkraft As Integer
    Dim FSI As FileSystemInfo
    Dim strCADFileFolder As String
    Dim strCADDatei, Dateiname As String
    Dim strExeFolder As String
    Dim strEndung As String
    Dim swPart As SldWorks.ModelDoc2
    Dim longstatus, longwarnings As Integer
    Dim X_Kraft, Y_Kraft, Z_Kraft As Integer
    Dim Lagerauswahl As String
    Dim instance As IAssemblyDoc
    Dim swcomponent As SldWorks.Component2

Zunächst öffne ich die Datei
Code:
    Public Sub MainWindow_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        swApp = New SldWorks.SldWorks()
        swApp.Visible = True

        ' Name und Version der Anwendung im Dialog einblenden.
        Me.Text = My.Application.Info.AssemblyName & " " & My.Application.Info.Version.ToString

        ' Pfad der Anwendung ermitteln
        strExeFolder = My.Application.Info.DirectoryPath

        Dim FSIs As FileSystemInfo() = _
                          New DirectoryInfo(strExeFolder).GetFileSystemInfos

        ' prüft, ob im aktuellen Ordner eine SolidWorks-Part-Datei liegt
        For Each FSI In FSIs
            If FSI.Extension.ToUpper = ".SLDASM" Then
                strCADDatei = fso2.GetFileName(FSI.FullName)
                strCADFileFolder = strExeFolder
                Me.TextBox_Dateiname.Text = FSI.FullName
                Dateiname = "Grundplatte_und_Ritzelwelle.SLDASM"
            End If
        Next
        ' Ermitteln der Endung der SolidWorks Datei
        strEndung = fso2.GetFileName(strCADDatei)

        ' Öffnen der Datei
        swPart = swApp.OpenDoc6(strCADFileFolder & "\" & Dateiname, swDocumentTypes_e.swDocASSEMBLY, swOpenDocOptions_e.swOpenDocOptions_Silent, "", longstatus, longwarnings)

        ' Geladene Datei zur aktiven Datei machen
        swApp.ActivateDoc2(strCADDatei, False, longstatus)
        swPart = swApp.ActiveDoc


Jetzt öffnet sich ein Fenster, und der Benutzer kann nun aussuchen welche Baugruppe zur Hauptbaugruppe hinzugefügt werden soll.

Code:
    Public Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        ' Nur Y-Komponente liegt vor

        If X_Kraft = 0 And Y_Kraft = 1 And Z_Kraft = 0 Then
            Lagerauswahl = "Lager1.SLDASM"
            swPart = swApp.ActiveDoc


        End If
    End Sub


mit welcher Zeile, sorge ich dafür, dass meine gewünschte Baugruppe (hier die Variable Lagerauswahl) in der Hauptbaugruppe geöffnet wird?

Egal was ich mache, es öffnet sich die Baugruppe in einem seperaten Fenster bei Solidworks.

Vielen Dank im voraus :-)

[Diese Nachricht wurde von Muck93 am 23. Mai. 2017 editiert.]

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

Muck93
Mitglied



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

Beiträge: 16
Registriert: 24.01.2016

erstellt am: 23. Mai. 2017 19:37    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

Was mir nun aufgefallen ist, dass Visual Basic den Befehl "AddComponent" gar nicht kennt. Liegt es vielleicht daran.

PS: ein paar unnötige Zeilen befinden sich oben im Code noch :-D

Gruß

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: 24. Mai. 2017 06:47    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 Muck93 10 Unities + Antwort hilfreich

Hallo Muck,

Zitat:

Was mir nun aufgefallen ist, dass Visual Basic den Befehl "AddComponent" gar nicht kennt. Liegt es vielleicht daran.

Ich sehe in deinem Code jetzt nirgends "AddComponent" daher lässt sich die Frage schwer beantworten, also normalerweise sollte er es erkennen wenn alle Verweise / Deklarationen da sind.
Zitat:

Egal was ich mache, es öffnet sich die Baugruppe in einem seperaten Fenster bei Solidworks.

Meinst du mit separatem Fenster eine neue SWX Session? Weil wenn er es nur in einem neuen Fenster in SWX öffnet verstehe ich dein Problem nicht, wohin sollte er es dann auch sonst öffnen.

Gruß
Bernd

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

Staatlich anerkannte Deutschniete  

[Diese Nachricht wurde von bk.sc am 24. Mai. 2017 editiert.]

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

Muck93
Mitglied



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

Beiträge: 16
Registriert: 24.01.2016

erstellt am: 24. Mai. 2017 08:16    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 für deine Antwort :-)

Also das addcomponent würde so kommen (hab es weggelassen da ich mir dachte das vielleicht ein anderer Befehl kommt.

Code:

    Public Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        ' Nur Y-Komponente liegt vor
        If X_Kraft = 0 And Y_Kraft = 1 And Z_Kraft = 0 Then
            Lagerauswahl = "Lager1.SLDASM"
            swPart = swApp.ActiveDoc
            swPart = swApp.AddComponent(strCADFileFolder & "\" & Lagerauswahl,-1,-1,-1)

Also ich würde am liebsten mit Addcomponent4 arbeiten, damit ich die Baugruppe direkt platzieren kann. Wenn ich nur mit dem AddComponent arbeite, kommt folgender fehler:
Ein Ausnahmefehler des Typs "System.MissingMemberException" ist in Microsoft.VisualBasic.dll aufgetreten.
Und es öffnet sich gar nichts. Deshalb hatte ich es mal ausprobiert mit dem Befehl openDoc6. Aber das ist ja nicht das Ziel und deshalb hat er auch es in einem seperaten Fenster geöffnet.

Gruß

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: 24. Mai. 2017 13: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 Nur für Muck93 10 Unities + Antwort hilfreich

Hallo,

also hab ich dich richtig verstanden und du willst eine Baugruppe in der Baugruppe platzieren? Dein Methodenaufruf ist falsch da du deine Methode auf das falsche Object (swApp) anwendest und dein Rückgabe-Object ist auch falsch deklariert (ModelDoc2).

Code:
swPart = swApp.AddComponent(strCADFileFolder & "\" & Lagerauswahl,-1,-1,-1)

Richtig wäre nach deiner Deklaration "instance" als Ausgangs-Object und "swcomponent" als Rückgabe-Object.

Code:
swcomponent = instance.AddComponent(strCADFileFolder & "\" & Lagerauswahl,-1,-1,-1)

Aber hast du dir überhaupt mal das Beipiel "Add and Mate Component Example" in der API-Hilfe dazu angesehen um eine grobe Vorlage zu haben?

Gruß
Bernd

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

Staatlich anerkannte Deutschniete  

[Diese Nachricht wurde von bk.sc am 24. Mai. 2017 editiert.]

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

Muck93
Mitglied



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

Beiträge: 16
Registriert: 24.01.2016

erstellt am: 25. Mai. 2017 08: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 dass du nochmal geantwortet hast.

Also mein Code sieht aktuell so aus.

Deklarationen:

Code:
    Private fso2 As New FileSystemObject
    Dim swApp As SldWorks.SldWorks
    Dim Gesamtkraft As Integer
    Dim FSI As FileSystemInfo
    Dim strCADFileFolder As String
    Dim strCADDatei, Dateiname As String
    Dim strExeFolder As String
    Dim strEndung As String
    Dim swPart As SldWorks.ModelDoc2
    Dim longstatus, longwarnings As Integer
    Dim X_Kraft, Y_Kraft, Z_Kraft As Integer
    Dim Lagerauswahl As String
    Dim swcomponent As SldWorks.Component2
    Dim Newname As String = "Baugruppe1"
    Dim swAssy As AssemblyDoc
    Dim swAssyEvents As Class1
    Dim swModel As ModelDoc2

Öffnen der 1. Baugruppe

Code:
swPart = swApp.OpenDoc6(strCADFileFolder & "\" & Dateiname, swDocumentTypes_e.swDocASSEMBLY, swOpenDocOptions_e.swOpenDocOptions_Silent, "", longstatus, longwarnings)

Und jetzt zum entscheidenden Part der noch immer nicht funktionierte :-(
Hinzufügen der zweiten Baugruppe

Code:
If X_Kraft = 0 And Y_Kraft = 1 And Z_Kraft = 0 Then
            Lagerauswahl = "Lager1.SLDASM"
            swModel = swApp.ActivateDoc2(strCADDatei, True, longstatus)
            swAssy = swPart
            swcomponent = swAssy.AddComponent5(strCADFileFolder & "\" & Lagerauswahl, swAddComponentConfigOptions_e.swAddComponentConfigOptions_NewConfigWithAllReferenceModels, "", False, "", -1, -1, -1)

aktuell macht er gar nichts :-(

Vielen Dank im voraus

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

Muck93
Mitglied



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

Beiträge: 16
Registriert: 24.01.2016

erstellt am: 25. Mai. 2017 08:41    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

sorry, letzer Part war veraltet, zum hinzufügen der Baugruppe steht aktuell.
Code:
Lagerauswahl = "Lager1.SLDASM"
            swModel = swApp.ActivateDoc2(strCADDatei, True, longstatus)
            swAssy = swModel
            swcomponent = swAssy.AddComponent5(strCADFileFolder & "\" & Lagerauswahl, swAddComponentConfigOptions_e.swAddComponentConfigOptions_NewConfigWithAllReferenceModels, "", False, "", -1, -1, -1)

und folgender fehler tritt auf:
Ein Ausnahmefehler des Typs "System.NullReferenceException" ist in SoWo-API-Prak.exe aufgetreten.

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: 29. Mai. 2017 06:54    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 Muck93 10 Unities + Antwort hilfreich

Hallo Muck,

1. Brauchst du 2 ModellDoc2 Objecte (swModel und swPart)?
2. Objekte sind keine Normalen Variablen wie z.B. Strings, Boolean usw. die man mit "swModel = ..." zuweist sondern diese müssen i.d.R. auf ein Object gesetzt werden mit "Set swModel = ..."
3. Die Komponenten die du in eine Baugruppe einfügen möchtest müssen im Arbeitspeicher liegen daher müssen diese vorher geöffnet sein, was auch in der API-Hilfe unter Remarks steht.

Gruß
Bernd

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

Staatlich anerkannte Deutschniete  

[Diese Nachricht wurde von bk.sc am 29. Mai. 2017 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