Verwenden des Visualisierungswürfels in einer Baugruppe

Hallo

Ich sehe keinen Grund, warum dieses Makro Sie zum Absturz von SW bringt, alle verwendeten Funktionen sind vor SW2018. Setzen Sie nummerierte MsgBoxen zwischen jeden Schritt, um zu sehen, bei welcher Funktion es abstürzt...

Herzliche Grüße

Hallo

Hier ist die Zeile, die Solidworks zum Absturz bringt:

 bRet = swModel.Save3(swSaveAsOptions_Silent, swErrors, swWarnings)

 

Hallo

Zur Erinnerung: Die hier angegebenen Makros dienen nur als Beispiel und müssen überarbeitet werden, um zumindest eine Fehlerbehandlung hinzuzufügen...

Sie müssen also diese Fehlerbehandlung (siehe HIER) in der For-Schleife hinzufügen und diesen Fehler auf Wunsch im Argument swErrors (siehe HIER) der Funktion Save3 eskalieren.

Herzliche Grüße

Entschuldigung, aber es ist nicht die Zeile, die ich oben zitiert habe, die mich Solidworks zum Absturz bringt, ich habe nur einige Tests wiederholt und es ist letztendlich dieser:

Set BoundingBox = swModel.FeatureManager.InsertGlobalBoundingBox(swGlobalBoundingBoxFitOptions_e.swBoundingBoxType_BestFit, False, False, longstatus)

Ich verstehe es jedoch nicht, weil es derselbe Code ist, der im vorherigen Makro funktioniert hat.

Und danke für Ihre Klarstellungen zu Save3, ich werde es mir ansehen.

Die Antwort ist so ziemlich die gleiche wie zuvor: Fügen Sie die Fehlerbehandlung ein und lesen Sie den Fehlertyp in der Variablen longstatus, siehe HIER für den möglichen Rückgabefehlertyp.

Hallo

Ich habe versucht, den Fehler zu behandeln, aber immer noch das gleiche Problem, dh Solidworks stürzt in der Zeile ab:

Set BoundingBox = swModel.FeatureManager.InsertGlobalBoundingBox(swGlobalBoundingBoxFitOptions_e.swBoundingBoxType_BestFit, False, False, longstatus)

Trotz der Fehlerbehandlung stürzt Solidworks ab, ohne die msgbox zu öffnen, gibt es ein Problem mit dem Code meiner Fehlerbehandlung, da die msgbox erscheinen sollte, wenn ein Fehler erkannt wird.

Es wird also kein Fehler erkannt, was kann also ein Problem sein?

Hier ist der Code mit Fehlerbehandlung:

Option Explicit

Dim swApp As Object
Dim longstatus As Long
Dim swModel As SldWorks.ModelDoc2
Dim bRet As Boolean
Dim swErrors As Long
Dim swWarnings As Long
Dim i As Long
Dim Assembly As ModelDoc2
Dim myAssy As AssemblyDoc
Dim myCmps As Variant
Dim myCmp As Component2
Dim nInfo As Long
'Public Enum swGlobalBoundingBoxResult_e
'Inherits System.Enum
   

Sub main()
    Set swApp = Application.SldWorks
    Set Assembly = swApp.ActiveDoc
    Set myAssy = Assembly
'Dim instance As swGlobalBoundingBoxResult_e
    myCmps = myAssy.GetComponents(False)
    For i = 0 To UBound(myCmps)
        Set myCmp = myCmps(i)
        If (myCmp.GetSuppression = 3) Or (myCmp.GetSuppression = 2) Then
            bRet = myCmp.Select2(False, 0)
            bRet = myAssy.EditPart2(True, True, nInfo)
            Set swModel = myAssy.GetEditTarget
            
On Error GoTo errorHandler

            Dim BoundingBox As Object
            Set BoundingBox = swModel.FeatureManager.InsertGlobalBoundingBox(swGlobalBoundingBoxFitOptions_e.swBoundingBoxType_BestFit, False, False, longstatus)

            bRet = swModel.Save3(swSaveAsOptions_Silent, swErrors, swWarnings)

            myAssy.EditAssembly
        End If
    Next i
    
    Assembly.ForceRebuild3 True
    
    MsgBox "Cubes créés", vbExclamation
Exit Sub
    
errorHandler:
    'indique si l'erreur est detecte
    MsgBox "erreur"
End Sub

 

Hallo

 Keine Meinung zu meiner Fehlerbehandlung, ist sie richtig oder gar nicht?

Vielen Dank im Voraus

 

Hallo @treza88 

[HS Ein]

Kleine Frage aus reiner Neugier ;-)

Was nützt es Ihnen, einen Visualisierungswürfel für einen Raum zu haben und vor allem, was nützt es in einem ASM, für jeden Raum einen Visualisierungswürfel zu haben?
Ich persönlich benutze den Visualisierungswürfel nie.

[HS /Aus]

Herzliche Grüße

Vielen Dank Zoro_mp für Ihre Frage,

Für mich, und das mag albern sein, war es der Weg, um die Informationen über die Abmessungen meiner Teile, d.h. Länge, Breite und Dicke, abzurufen.

Aber wie bereits erwähnt, kann es albern sein, es kann auch andere Wege geben.

Hallo zusammen und vielen Dank für dieses Makro! 

Ich kann den Code nicht ändern, um dies für ein einzelnes Stück zu tun. Ich habe tatsächlich eine Bibliothek mit 3D-Teilen und möchte auf jedes Teil einen Würfel setzen. Nur dass ich es eins nach dem anderen machen muss. Und über "Integration" auf Mycadtools könnte ich ein Makro verwenden, das die Arbeit erledigt. 

Also wollte ich wissen, ob wir dieses Makro einfach so ändern könnten, dass der Würfel auf einem einzigen Stück entsteht

Danke für Ihre Hilfe!