Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Macro opendoc-Befehl einzelne Warnungen auslesen

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
  
Nahe an industriellen Realbedingungen
Autor Thema:  Macro opendoc-Befehl einzelne Warnungen auslesen (1334 mal gelesen)
Thunja
Mitglied
Projektleiterin / techn. Redakteurin


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

Beiträge: 41
Registriert: 22.08.2017

SW 2017 / Excel 2010

erstellt am: 29. Aug. 2017 08:06    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,

da ich im I-Net nicht wirklich etwas gefunden habe, versuch ich es mal wieder hier. 

Ich habe den nachfolgenden Codeschnipsel:

For i = 3 To 11
    If objSource.cells(38, i) <> "" Then
Dim msg As String '##########################################
        Select Case objSource.cells(36, i)
        Case Is = "Mantel"
            Name3 = "X:\Technikerarbeit\3D_Teile\M" & (l) & "_Mantel.SLDPRT"
            Set Part3 = swApp.OpenDoc6(Name3, swDocPART, swOpenDocOptions_Silent, "", Errors, Warnings)
            Debug.Print Warnings
           
            For j = 1 To 25
                If objSource.cells(38, i) = xl.worksheets("Muffen").cells(j, 1) Then
                    Zeile = j
                    Exit For
                End If
            Next j
           
            Set objSource = xl.worksheets("Muffen")
            'Bearbeitung Muffe
            Set myD3 = Part3.Parameter("D1@Skizze1")    'Höhe der Muffe
            myD3.SystemValue = objSource.cells(Zeile, 4) / 1000
            swApp.SendMsgToUser (objSource.cells(Zeile, 4))
           
            Set myD3 = Part3.Parameter("IDurchmesser@Skizze1")
            myD3.SystemValue = objSource.cells(Zeile, 6) / 1000
           
            Set myD3 = Part3.Parameter("ADurchmesser@Skizze1")
            myD3.SystemValue = objSource.cells(Zeile, 2) / 1000
           
            Set myD3 = Part3.Parameter("Fasendurchmesser@Skizze1")
            myD3.SystemValue = objSource.cells(Zeile, 7) / 1000
           
            Set myD3 = Part3.Parameter("Fasenhöhe@Skizze1")
            myD3.SystemValue = objSource.cells(Zeile, 8) / 1000
           
            swApp.CloseDoc Name3
        Case Is = "Boden oben"
            msg = "Die Muffe M" & l & " sitzt im oberen Boden"
            swApp.SendMsgToUser (msg)
        Case Is = "Boden unten"
            msg = "Die Muffe M" & l & " sitzt im unteren Boden"
            swApp.SendMsgToUser (msg)
        End Select
       
        l = l + 1
    Else
        swApp.SendMsgToUser ("Dies ist Fall 2!")
        Exit For
    End If
    i = i + 1
Next i


die Messageboxen schmeiß ich später wieder raus, weshalb auch die Variablendeklaration hier einfach mit drin ist.

Im Prinzip soll hier eine Einzelteilzeichnung geöffnet werden, welche dann maßlich geändert wird. Im Anschluss sucht er nach der nächsten in meiner Excel-Tabelle und ändert auch diese entsprechend. Im Anschluss an diesen Codeschnipsel wird der Zusammenbau neuaufgebaut und gespeichert.

Also es geht um den OpenDoc-Befehl in Zeile 7. Kann ich mir irgendwie die einzelnen Warnings ausgeben lassen? Ist es überhaupt schlimm, wenn er Warnings ausgibt? Eigentlich sollte er dies ja nicht tun.
Die Gesamtanzahl der Warnings auszugeben war kein Problem und lautet 128, aber ich weiß einfach nicht, was ich damit anfangen soll...

Vielen Dank für eure Antworten im Voraus.

Gruß,

Kristina

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. Aug. 2017 08: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 Thunja 10 Unities + Antwort hilfreich

Hallo Kristina,

Zitat:
Die Gesamtanzahl der Warnings auszugeben war kein Problem und lautet 128, aber ich weiß einfach nicht, was ich damit anfangen soll...

Der Rückgabewert 128 ist nicht die Anzahl der Fehler sondern der Fehlercode und 128 = swFileLoadWarning_AlreadyOpen. Was die verschiedenen Rückgabewerte bedeuten findest du in der API-Hilfe unter "swFileLoadWarning_e Enumeration".

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

Thunja
Mitglied
Projektleiterin / techn. Redakteurin


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

Beiträge: 41
Registriert: 22.08.2017

SW 2017 / Excel 2010

erstellt am: 29. Aug. 2017 08:51    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 Bernd,

vielen Dank für die schnelle Antwort.
Dann schaue ich mal, welche Bedeutung der hat. 

Lieben Gruß,
Kristina

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: 29. Aug. 2017 09:53    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 Thunja 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Thunja:
...
            Name3 = "X:\Technikerarbeit\3D_Teile\M" & (l) & "_Mantel.SLDPRT"
            Set Part3 = swApp.OpenDoc6(Name3, swDocPART, swOpenDocOptions_Silent, "", Errors, Warnings)
 ...

Im Prinzip soll hier eine Einzelteilzeichnung geöffnet werden, welche dann maßlich geändert wird. Im Anschluss sucht er nach der nächsten in meiner Excel-Tabelle und ändert auch diese entsprechend. Im Anschluss an diesen Codeschnipsel wird der Zusammenbau neuaufgebaut und gespeichert....


Hallo Kristina,

Öffnest du vorher eine Zeichnung auf der die Teiledatei dargestellt wird? dann ist die im Hintergrund schon geöffnet in SolidWorks. Deshalb auch die Warnung.
Das gleiche, wenn du die Baugruppe offen hast, in der die Teile drin sind (du schreibst, dass der Zusammenbau am Ende neu aufgebaut wird ...)

Gruß, Christian

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

Thunja
Mitglied
Projektleiterin / techn. Redakteurin


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

Beiträge: 41
Registriert: 22.08.2017

SW 2017 / Excel 2010

erstellt am: 30. Aug. 2017 07:19    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 Christian,

nein, ich öffne zuvor nur die Baugruppe, in der das Teil miteingebunden ist.
Dann öffne ich das Teil und änder dieses.
Zum Schluss, wenn alle Teile geändert wurden, baut sich die Baugruppe per ForcedRebuild neu auf und wird dann gespeichert.

Wenn ich die Änderungen durchführe ohne das Teil zu öffnen, dann macht er diese nicht...

Ich glaube, die Fehlermeldung bekam ich, weil ich das Makro zwischen durch per debuggen durchgegangen bin und es mittendrin unterbrochen habe. Also bevor die Part-Zeichnung wieder geschlossen wurde.

Mache ich alles zu und öffne SolidWorks wieder, dann bringt er den Fehler nicht.

Lieben Gruß,
Kristina

[Diese Nachricht wurde von Thunja am 30. Aug. 2017 editiert.]

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

CAD-Maler
Mitglied
Konstrukteur / CAD-Admin / Mädchen für alles


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

Beiträge: 720
Registriert: 17.01.2007

SWX 2019 SP5
AutoCAD 2019
Win 10 pro 64 bit
Intel(R) Xeon(R) CPU E5-1650 v4 @ 3.60GHz
64GB RAM
Nvidia Quadro M5000
SWx EPDM

erstellt am: 30. Aug. 2017 08:00    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 Thunja 10 Unities + Antwort hilfreich

Du könntest den ganzen Öffnen-und-Schließen-Sermon umgehen, indem die die Teile gleich im Baugruppen-Kontext bearbeitest. Die Baugruppe ist ja schon geöffnet...

Stichworte: EditPart2 und EditAssembly .

Gruß, Jens

------------------
CSWA, CSWP, CSWPA-SM & -SU =)

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

Thunja
Mitglied
Projektleiterin / techn. Redakteurin


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

Beiträge: 41
Registriert: 22.08.2017

SW 2017 / Excel 2010

erstellt am: 30. Aug. 2017 09:07    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


Behalter.jpg

 
Hallo Jens,
auf deinen Tipp komme ich morgen oder übermorgen gerne zurück.
Ich muss morgen aber erst meinen momentanen Stand vorstellen und werde deshalb zunächst an Stellen arbeiten, welche noch nicht funktionieren. 
In diesem Fall ist es die Maßänderung der Positionierung eines Bauteils in einer Baugruppe. Dafür muss ich aber zunächst einmal abfragen, ob das Bauteil in der Baugruppe noch existiert.
Ich dachte, das würde über traverse gehen, aber die Funktion verstehe ich noch nicht so ganz...
Ich habe mir die Beispiele in der API-Hilfe angesehen und auch Thomas5's Code gelesen, aber auch da fehlt mir etwas das Verständnis, warum das Makro im Debug-Modus so komisch springt.

Vielleicht sollte ich etwas ausschweifender werden:
Ich schreibe zur Zeit meine Technikerarbeit in einem Betrieb, welcher Behälter herstellt.
Ich habe ein Makro in Excel geschrieben, um Festigkeitsberechnungen und Anderes berechnen zu lassen. Nun ist die weitere Aufgabe, den Behälter auch in SolidWorks entstehen zu lassen.
Da es nicht funktioniert hat, einen per Makro eingefügten Stutzen auch per Makro zu positionieren, habe ich mich anschließend dazu entschieden, die eventuell benötigten Bauteile bereits mit fester Bemaßung einzufügen und diese dann nur zu ändern bzw. nicht benötigte Stutzen einfach rauszuschmeißen.
Dadurch, dass ich aber die Stutzen rausschmeiße, muss ich nun bei der Neupositionierung der Maße wissen, welcher Stutzen denn noch existiert. So lässt sich das Ganze dann eventuell in eine For-Schleife bauen.

Ich hoffe, das war jetzt nicht zu viel Text...
Ich bringe bereits ganz gute Kenntnisse in VBA auf Basis von Excel mit, komme aber ins Schleudern mit den Befehlsbegriffen von SW. Und da liegt eigentlich mein Hauptproblem.

Vielen Dank für eure Hilfe,

Kristina

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: 30. Aug. 2017 10:38    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 Thunja 10 Unities + Antwort hilfreich

Hallo Kristina,

möchtest du quasi einen Konfigurator selber programmieren? Hast du dir vorher auch Mal bereits vorhanden Tools angeschaut? Hier wären das Macro "MacroSheet" (von DPS) oder das in SolidWorks verfügbare DriveWorks Express vielleicht eine Alternative gewesen.

Zitat:
komme aber ins Schleudern mit den Befehlsbegriffen von SW. Und da liegt eigentlich mein Hauptproblem.

Hier hilft mir oft SWX auf Englisch umzustellen um an die Namen der Befehle zu kommen (Um eine Grundlage zum Suchen in der API Hilfe zu haben) oder einfach kleine Schnippsel mit dem Macrorecorder aufzunehmen.

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

CAD-Maler
Mitglied
Konstrukteur / CAD-Admin / Mädchen für alles


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

Beiträge: 720
Registriert: 17.01.2007

SWX 2019 SP5
AutoCAD 2019
Win 10 pro 64 bit
Intel(R) Xeon(R) CPU E5-1650 v4 @ 3.60GHz
64GB RAM
Nvidia Quadro M5000
SWx EPDM

erstellt am: 30. Aug. 2017 11:17    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 Thunja 10 Unities + Antwort hilfreich

Hallo Kristina,

die traverse-Funktion benötigst du eigentlich nur, wenn du die Baugruppe inklusive aller evtl. vorhandenen Unterbaugruppen durchgehen willst.

Für deinen Fall sollte schon der Befehl

Code:

Dim swAssy As SldWorks.AssemblyDoc
Dim swComponents As Variant

swComponents = swAssy.GetComponents(True)


reichen. Dieser liefert dir ein Array aller in der Baugruppe vorhandenen Komponenten.

Mit denen kann man dann allen möglichen und unmöglichen Kram anstellen (z.B.):

Code:

Dim swComp As SldWorks.Component2
Dim swDoc2 As SldWorks.ModelDoc2

For i = 0 To UBound(swComponents)

Set swComp = swComponents(i)

DateiName=swComp.Name2
DateiPfad=swComp.GetPathName

'Das dazugehörige Modell öffnen
Set swDoc2 = swComp.GetModelDoc2
swApp.ActivateDoc2 swDoc2.GetPathName, True, Errors

Next i


Gruß, Jens

------------------
CSWA, CSWP, CSWPA-SM & -SU =)

[Diese Nachricht wurde von CAD-Maler am 30. Aug. 2017 editiert.]

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

Thunja
Mitglied
Projektleiterin / techn. Redakteurin


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

Beiträge: 41
Registriert: 22.08.2017

SW 2017 / Excel 2010

erstellt am: 31. Aug. 2017 11:57    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 Jens,

vielen Dank für deine Hilfe. Ich habe es inzwischen so Ähnlich geschrieben, bin aber über getFeature gegangen.
Ich denke aber, dass ich es noch auf GetComponents abändern werde. Weniger Durchläufe der Schleifen. 

Gruß,

Kristina

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