Chcę określić, czy coś się zmieniło w miejscu, który napędzałby zmianę w ciele, ale zmiana nie została wykonana, ponieważ aktualizacja jest ustawiona na ręcznie.

Próbowałem:

if part.product.update = true then
    'do something
else
  'do something else
endif

Jednak to po prostu zmusza aktualizację i nie powie mi, gdyby to było wymagane.

0
tink 15 luty 2017, 23:32

2 odpowiedzi

Najlepsza odpowiedź

Opracowałem rozwiązanie (patrz poniżej) '@@@@@@@@@@@@@@@@@@@@@@@@@@

Function func_CheckNoModsSinceLastSaved() As Boolean

func_CheckNoModsSinceLastSaved = False

Dim flg_NoModsSinceLastSaved As Boolean

flg_NoModsSinceLastSaved = False

If Right(CATIA.ActiveDocument.FullName, 11) = ".CATProduct" Then
    Dim productDocument1 As ProductDocument
    Set productDocument1 = CATIA.ActiveDocument

    Dim product1 As Product
    Set product1 = productDocument1.Product

    flg_NoModsSinceLastSaved = productDocument1.Saved
    If flg_NoModsSinceLastSaved Then
        func_CheckNoModsSinceLastSaved = True
    Else
        func_CheckNoModsSinceLastSaved = False
        MsgBox "Modified Since Last Saved"
    End If

    product1.Update

    flg_NoModsSinceLastSaved = productDocument1.Saved
    If flg_NoModsSinceLastSaved Then
        func_CheckNoModsSinceLastSaved = True
    Else
        func_CheckNoModsSinceLastSaved = False
        MsgBox "Modified Since Last Saved"
    End If

    Set productDocument1 = Nothing


ElseIf Right(CATIA.ActiveDocument.FullName, 8) = ".CATPart" Then
    Dim partDocument1 As PartDocument
    Set partDocument1 = CATIA.ActiveDocument


    flg_NoModsSinceLastSaved = partDocument1.Saved
    If flg_NoModsSinceLastSaved Then
        func_CheckNoModsSinceLastSaved = True
    Else
        func_CheckNoModsSinceLastSaved = False
        MsgBox "Modified Since Last Saved"
    End If

    partDocument1.Part.Update

    flg_NoModsSinceLastSaved = partDocument1.Saved
    If flg_NoModsSinceLastSaved Then
        func_CheckNoModsSinceLastSaved = True
    Else
        func_CheckNoModsSinceLastSaved = False
        MsgBox "Modified Since Last Saved"
    End If
    Set partDocument1 = Nothing


ElseIf Right(CATIA.ActiveDocument.FullName, 11) = ".CATDrawing" Then
    Dim drawingDocument1 As DrawingDocument
    Set drawingDocument1 = CATIA.ActiveDocument

    flg_NoModsSinceLastSaved = drawingDocument1.Saved
     If flg_NoModsSinceLastSaved Then
        func_CheckNoModsSinceLastSaved = True
    Else
        func_CheckNoModsSinceLastSaved = False
        MsgBox "Modified Since Last Saved"
    End If

    drawingDocument1.Update

    flg_NoModsSinceLastSaved = drawingDocument1.Saved
    If flg_NoModsSinceLastSaved Then
        func_CheckNoModsSinceLastSaved = True
    Else
        func_CheckNoModsSinceLastSaved = False
        MsgBox "Modified Since Last Saved"
    End If
    Set drawingDocument1 = Nothing

Else
    MsgBox "ERROR: Unidentified File Type!", vbCritical + vbOKOnly, ""
End If
End Function

'@@@@@@@@@@@@@@@@@@@@@@@

1
tink 22 luty 2017, 11:06

Sprawdź ustawienia CATIA.

Set mySettControlers = CATIA.SettingControllers
Set myPartInfraSetting = mySettControlers.Item("CATMmuPartInfrastructureSettingCtrl")

Sprawdź, jak ustawiony jest myPartinfrasetting.updatuMode i sprawdź, czy jest CatmanualUpdate lub CatautatatUpdate

0
ferdo 16 luty 2017, 17:51