Korzystanie z kostki wizualizacji w zespole

Witam

Nie widzę żadnego powodu, dla którego to makro powoduje awarię oprogramowania, wszystkie używane funkcje są wcześniejsze niż SW2018. Umieść ponumerowane pola MsgBox między każdym krokiem, aby zobaczyć, przy jakiej funkcji ulega awarii...

Pozdrowienia

Witam

Oto linia, która powoduje awarię Solidworks:

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

 

Witam

Przypominamy, że podane tutaj makra są tylko przykładowe i muszą zostać przerobione, aby przynajmniej dodać obsługę błędów...

Musisz więc dodać tę obsługę błędów (patrz TUTAJ) w pętli For i eskalować, jeśli chcesz, ten błąd w argumencie swErrors (patrz TUTAJ) funkcji Save3 .

Pozdrowienia

Przepraszam, ale to nie linijka, którą zacytowałem powyżej, powoduje u mnie awarię Solidworks, po prostu przerobiłem kilka testów i ostatecznie jest to ten:

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

Nie rozumiem jednak, ponieważ jest to ten sam kod, który działał w poprzednim makrze.

I dziękuję za wyjaśnienia dotyczące Save3, przyjrzę się temu.

Odpowiedź jest prawie taka sama jak poprzednio: wstaw obsługę błędów i odczytaj typ błędu w zmiennej longstatus, zobacz TUTAJ , aby zapoznać się z możliwym typem zwracanego błędu.

Witam

Próbowałem poradzić sobie z błędem, ale nadal ten sam problem, czyli Solidworks wywala na linii:

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

Pomimo obsługi błędów, Solidworks ulega awarii bez otwierania msgbox, czy jest problem z kodem obsługi mojego błędu, ponieważ msgbox powinien się pojawić, jeśli zostanie wykryty błąd.

Nie wykryto więc żadnego błędu, więc co może być problemem?

Oto kod z obsługą błędów:

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

 

Witam

 Brak opinii na temat mojej obsługi błędów, czy jest ona poprawna, czy wcale?

Z góry dziękuję

 

Witam @treza88 

[HS wł.]

Małe pytanie z czystej ciekawości ;-)

Jaki jest pożytek z posiadania kostki wizualizacji dla pomieszczenia, a zwłaszcza jaki jest pożytek z ASM, aby mieć kostkę wizualizacji dla każdego pomieszczenia.
Osobiście nigdy nie korzystam z kostki wizualizacyjnej.

[HS /wył.]

Pozdrowienia

Dziękuję Zoro_mp za pytanie,

Dla mnie, i to może być głupie, był to sposób na odzyskanie informacji o wymiarach moich części, tj. długości, szerokości i grubości.

Ale jak wspomniano wcześniej, może to być głupie, mogą być inne sposoby.

Witam wszystkich i dziękuję za to Makro! 

Nie mogę zmodyfikować kodu, aby zrobić to na unikalnym elemencie. Właściwie mam bibliotekę części 3D i chciałbym umieścić sześcian na każdej części. Tyle tylko, że muszę to robić po kolei . A dzięki "integracji" z Mycadtools mogłem użyć makra, które wykona to zadanie. 

Chciałem więc wiedzieć, czy możemy zmodyfikować to makro tylko po to, aby zrobić sześcian na jednym kawałku

Dziękuję za pomoc!