Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Hilfe bei Code Konfigurationstabellen austauschen

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
  
Performance steigern von großen Baugruppen und Zeichnungen mit SOLIDWORKS 2024
Autor Thema:  Hilfe bei Code Konfigurationstabellen austauschen (1059 mal gelesen)
Bernhard09
Mitglied
Konstrukteur Rohrbündelwärmetauscher


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

Beiträge: 80
Registriert: 09.04.2013

Intel i7-8850 @2,6GHz
32GB Ram
Nvidia Quadro P1000
Windows 10 Enterprise 1809
Inventor Professional 2016 SP26
Vault Basic 2016
SoliWorks 2019
Pro.File 8.7

erstellt am: 10. Nov. 2020 13:15    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 Zusammen
Ich bin bei meinem Programm schon ein Stück weiter gekommen. Nur habe ich jetzt ein Problem und komme einfach nicht dahinter.
Dieses Programm soll in beliebiger Baugruppe alle Teile auslesen und den Teilen eine Konfigurationstabelle zuweisen.
In der Schleife kommt es immer zum Fehler "Objekt erforderlich". Ich habe die Zeile unten FETT und Kursiv markiert
Vielleicht könnte sich das jemand mal bitte anschauen. Hoffe es ist nur eine kleine Sache.
Danke schon mal im Voraus.
Code:

Private Sub CommandButton1_Click()

    Dim Dateipfad              As String
    Dim Auftragsnummer          As String
    Dim swApp                  As SldWorks.SldWorks
    Dim swModel                As SldWorks.ModelDoc2
    Dim value                  As Boolean
    Dim swErrors                As Long
    Dim swWarnings              As Long
    Dim boolstatus              As Boolean
    Dim longstatus              As Long
    Dim longwarnings            As Long
    Dim vComps                  As Variant
    Dim i                      As Long
    Dim swComp                  As SldWorks.Component2
    Dim swCompModel            As IModelDoc2
    Dim swAssy                  As SldWorks.AssemblyDoc
    Dim Filename                As String
    Dim arrSplitStrings        As Variant
   
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc

' Pfad aus dem Formular holen
    Dateipfad = Excel_Dateipfad.TextBox1.value ' Beispiel: C:\temp\
    Auftragsnummer = Excel_Dateipfad.TextBox2.value 'Beispiel: 20063456
   
    If TextBox1.Text = "" Then ' Überprüfung ob auch ein Pfad eingetragen wurde
        MsgBox "Pfad muß ausgefüllt sein"
        Exit Sub 'Programm wird angehalten bis eingabe erfolgt
    End If
   
    If TextBox2.Text = "" Then ' Überprüfung ob auch eine Auftragsnummer eingetragen wurde
        MsgBox "Auftragsnummer muß ausgefüllt sein"
        Exit Sub 'Programm wird angehalten bis eingabe erfolgt
    End If

    Set swAssy = swModel
    vComps = swAssy.GetComponents(False) 'Alle Komponenten der Baugruppe auch Unterbaugruppen
   
    If IsEmpty(vComps) Then Exit Sub 'Wenn Baugruppe leer dann Programm ende
   
        'Schleife für alle Teile in Baugruppe
            For i = 0 To UBound(vComps)
                Set swComp = vComps(i)
                Set swCompModel = swComp.GetModelDoc2
        Set Filename = swCompModel.GetTitle  'Dateiname des Bauteils (Tragoese.sldprt)
                arrSplitStrings = Split(Filename, ".") 'Dateiname teilen beim "." (Tragoese und sldprt)
                Set swModel = swApp.ActiveDoc
            ' Teil öffnen
                swModel.OpenCompFile
                Set swModel = swApp.OpenDoc6(swCompModel.GetPathName, 1, 0, "", longstatus, longwarnings)

            'eventuelle vohandene Tabelle löschen
                boolstatus = swModel.Extension.SelectByID2("Tabelle", "DESIGNTABLE", 0, 0, 0, False, 0, Nothing, 0)
                swModel.EditDelete
                swModel.CloseFamilyTable

            ' dem Teil eine Tabelle zuweisen
                value = swModel.InsertFamilyTableOpen(Dateipfad & "\" & Auftragsnummer & "-" & arrSplitStrings(0) & ".xlsx") 'Pfad zur Tabelle
                swModel.CloseFamilyTable 'Tabelle schließen
   
            ' Teil neu aufbauen
                boolstatus = swModel.ForceRebuild3(True)
   
            ' Speichern
                boolstatus = swModel.Save3(1, swErrors, swWarnings)
   
            ' Schließen des Teils
                swApp.CloseDoc (swCompModel.GetPathName)

            Next i

    'Userform ausblenden
        Excel_Dateipfad.Hide
       
End Sub




------------------
Personalführung ist die Kunst, den Mitarbeiter so schnell über den Tisch zu ziehen das er die Reibungshitze als Nestwärme empfindet.

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: 10. Nov. 2020 13: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 Bernhard09 10 Unities + Antwort hilfreich

Hallo Bernhard,

du wendest eine "Set" Anweisung auf einen String an -> "Set" wendet man nur bei Object Variablen an. Versuch es mal ohne das "Set".

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

Bernhard09
Mitglied
Konstrukteur Rohrbündelwärmetauscher


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

Beiträge: 80
Registriert: 09.04.2013

Intel i7-8850 @2,6GHz
32GB Ram
Nvidia Quadro P1000
Windows 10 Enterprise 1809
Inventor Professional 2016 SP26
Vault Basic 2016
SoliWorks 2019
Pro.File 8.7

erstellt am: 10. Nov. 2020 14: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

Jetzt sagt er an gleicher stelle
"Objektvariable oder With-Blockvariable nicht festgelegt"

------------------
Personalführung ist die Kunst, den Mitarbeiter so schnell über den Tisch zu ziehen das er die Reibungshitze als Nestwärme empfindet.

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

EIBe 3D
Mitglied
Dipl. - Ing. (FH)


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

Beiträge: 267
Registriert: 24.01.2020

HP Z4 G4 Workstation
Xeon 3,6 32GB
Nvidia P2000
WIN10
SW2015 SP5.0
SW2017
*************
Inv2018 akt.SP

erstellt am: 10. Nov. 2020 15:43    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 Bernhard09 10 Unities + Antwort hilfreich

Hallo Bernhard,

hört sich so an als würde swCompModel nicht korrekt zugewiesen.

Setz doch mal auf die Zuweisungen über der Fehlerzeile Haltepunkte und schau ob die Variablen korrekt befüllt werden. Vielleicht verennt er sich in irgendeiner unterdrückten Komponente o.ä.

Bin im moment selbst nicht in SW unterwegs, so dass ich nichts prüfen kann.


Grüße

EIBe 3D

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

Christian_W
Ehrenmitglied V.I.P. h.c.
Konstrukteur (Dipl-Ing)


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

Beiträge: 3189
Registriert: 04.04.2001

CSWP 12/2015<P>SWX2021sp5 Win10/11
(SWX2016, SWX2012)
proAlpha6.2e00/calinkV9
(Tactonworks)
(Medusa7, NesCAD2010,
solidEdge19)

erstellt am: 10. Nov. 2020 16:11    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 Bernhard09 10 Unities + Antwort hilfreich

Moin,

wenn die Komponenten reduziert geladen oder unterdrückt sind ... (siehe Anmerkung bei component:getmodeldoc ...)

du könntest wohl auch direkt

Code:
myPathname = swcomp.getpathname
benutzen.
ist vielleicht auch sicherer 

Gruß, Christian

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

Bernhard09
Mitglied
Konstrukteur Rohrbündelwärmetauscher


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

Beiträge: 80
Registriert: 09.04.2013

Intel i7-8850 @2,6GHz
32GB Ram
Nvidia Quadro P1000
Windows 10 Enterprise 1809
Inventor Professional 2016 SP26
Vault Basic 2016
SoliWorks 2019
Pro.File 8.7

erstellt am: 12. Nov. 2020 14:55    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

Nachdem ich das SET weggelassen habe und alle Unterbaugruppen entfernt habe und weitere Kleinigkeiten an den Tabellen angepasst hatte läuft es. Was ein Glück. Dank eurer Hilfe.
Jetzt muß ich es noch hinbekommen das es auch mit Unterbaugruppen (auch die Baugruppen haben Tabellen nicht nur deren Teile) funktioniert.
Habt ihr hierzu vielleicht eine Ansatz Idee?
Danke schon mal.

------------------
Personalführung ist die Kunst, den Mitarbeiter so schnell über den Tisch zu ziehen das er die Reibungshitze als Nestwärme empfindet.

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

Bernhard09
Mitglied
Konstrukteur Rohrbündelwärmetauscher


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

Beiträge: 80
Registriert: 09.04.2013

Intel i7-8850 @2,6GHz
32GB Ram
Nvidia Quadro P1000
Windows 10 Enterprise 1809
Inventor Professional 2016 SP26
Vault Basic 2016
SoliWorks 2019
Pro.File 8.7

erstellt am: 13. Nov. 2020 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

Jetzt ist mir aufgefallen das die Tabellen zwar eingefügt werden aber nicht verlinkt sind zu der externen Tabelle.
den entsprechenden Befehl habe ich in der API Hilfe gefunden ich weiß nur nicht wie ich ihn einsetzte oder anwende.
LinkToFile Property (IDesignTable)

das müsste ja dann hier dazwischen kommen wo ich die Tabelle zuweise oder?

Code:

' dem Teil eine Tabelle zuweisen
  value = swmodel.InsertFamilyTableOpen(Dateipfad & "\" & Auftragsnummer & "-" & arrSplitStrings2(0) & ".xlsx")  'Pfad zur Tabelle
'hier also oder?????
  swmodel.CloseFamilyTable 'Tabelle schließen

Danke

------------------
Personalführung ist die Kunst, den Mitarbeiter so schnell über den Tisch zu ziehen das er die Reibungshitze als Nestwärme empfindet.

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

Bernhard09
Mitglied
Konstrukteur Rohrbündelwärmetauscher


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

Beiträge: 80
Registriert: 09.04.2013

Intel i7-8850 @2,6GHz
32GB Ram
Nvidia Quadro P1000
Windows 10 Enterprise 1809
Inventor Professional 2016 SP26
Vault Basic 2016
SoliWorks 2019
Pro.File 8.7

erstellt am: 17. Nov. 2020 12: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

Hat denn keiner eine Idee dazu?...Link to File?

Ich komme hier echt nicht weiter und wäre für jeden hinweis sehr dankbar.

------------------
Personalführung ist die Kunst, den Mitarbeiter so schnell über den Tisch zu ziehen das er die Reibungshitze als Nestwärme empfindet.

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

Christian_W
Ehrenmitglied V.I.P. h.c.
Konstrukteur (Dipl-Ing)


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

Beiträge: 3189
Registriert: 04.04.2001

CSWP 12/2015<P>SWX2021sp5 Win10/11
(SWX2016, SWX2012)
proAlpha6.2e00/calinkV9
(Tactonworks)
(Medusa7, NesCAD2010,
solidEdge19)

erstellt am: 17. Nov. 2020 12:44    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 Bernhard09 10 Unities + Antwort hilfreich

Hallo,

hab es noch nicht ausprobiert, aber ich würd es dahinter machen, weil du das Tabellenobjekt noch gar nicht gegriffen hast ...

Code:

  dim sFilename as string
  dim tableobject as object  'oder sldworks.designtable
  sFilename = Dateipfad & "\" & Auftragsnummer & "-" & arrSplitStrings2(0) & ".xlsx")  'Pfad zur Tabelle
  value = swmodel.InsertFamilyTableOpen(sFilename) 'value verrät, ob es jetzt drin ist
   swmodel.CloseFamilyTable 'Tabelle schließen

  set tableobject = swmodel.getdesigntable
  tableobject.filename = sFilename  'weiß nicht, ob das noch nötig ist
  tableobject.linktofile = true



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

Bernhard09
Mitglied
Konstrukteur Rohrbündelwärmetauscher


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

Beiträge: 80
Registriert: 09.04.2013

Intel i7-8850 @2,6GHz
32GB Ram
Nvidia Quadro P1000
Windows 10 Enterprise 1809
Inventor Professional 2016 SP26
Vault Basic 2016
SoliWorks 2019
Pro.File 8.7

erstellt am: 20. Nov. 2020 09:31    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

Moin
so hat ein bisschen gedauert. Vielen Dank Christian für deinen Tipp.
Die Sache sieht jetzt so aus.
Code:

Set tableobject = swmodel.GetDesignTable()

                tableobject.EditFeature
                tableobject.SourceType = 2
                tableobject.LinkToFile = True
                tableobject.Filename = Dateipfad & "\" & Auftragsnummer & "-" & arrSplitStrings2(0) & ".xlsx"
                laststate = tableobject.Updatable
                tableobject.Updatable = Not laststate
                tableobject.AutoAddNewConfigs = False
                tableobject.AutoAddNewParams = False
                tableobject.EnableCellDropdownLists = False
                status = tableobject.UpdateFeature
                swmodel.CloseFamilyTable


Das Geheimnis war dann doch noch das man erst das Feature bearbeiten aktivieren muß.
Es läuft zwar nur in einem Bauteil und nicht aus der Baugruppe heraus aber auch das werde ich noch hinbekommen.
Vielen Dank nochmal an alle.

Gruß Bernhard

------------------
Personalführung ist die Kunst, den Mitarbeiter so schnell über den Tisch zu ziehen das er die Reibungshitze als Nestwärme empfindet.

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