API SolidWorks – OpenDoc6 w pigułce

Cze wszystkim

Natknąłem się na dziwaka z funkcją OpenDoc6. W części makra staram się otwierać kolejno każdy komponent mojego zespołu w kolejności menedżera operacji. To, czego nie rozumiem, to to, że muszę określić typ dokumentu do otwarcia jako złożenie, aby otworzyć część i odwrotnie, aby otworzyć część, w przeciwnym razie dokument się nie otworzy.

    Jeśli FileTyp = swDocPART Then
        swApp.OpenDoc6 CompPath, swDocASSEMBLY, swOpenDocOptions_Silent, ConfigName, longstatus, longwarnings
     Zakończ jeżeli:

    Jeśli FileTyp = swDocASSEMBLY to
        swApp.OpenDoc6 CompPath, swDocPART, swOpenDocOptions_Silent, ConfigName, longstatus, longwarnings
    Zakończ jeżeli:

Czy ktoś ma wytłumaczenie?

 

Skok

Jest to normalny sposób działania metody OpenDoc6. Zobacz tutaj: http://help.solidworks.com/2016/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.isldworks~opendoc6.html

 

Witam

To cechy oprogramowania decydują o tym, jaki typ pliku jest otwarty.

W przypadku interfejsów API umożliwia adresowanie odpowiednich funkcji, ponieważ każdy typ pliku umożliwia różne działania.

Rozumiem, że musimy określić, jaki typ pliku chcemy otworzyć, ale nie rozumiem, że muszę:

  1. Ustawić TYP ELEMENTU , aby otworzyć ZESPÓŁ 
  2. Ustawić typ ZŁOŻENIA , aby otworzyć CZĘŚĆ 

 

Witam

Źle odczytane, dziwne.

Błąd lub zła deklaracja typów dokumentów SW.

W jaki sposób ustala się rodzaj dokumentu do otwarcia?

Normalnie powinno to wyglądać tak:

' Określ typ pliku SOLIDWORKS na podstawie rozszerzenia pliku
    Jeśli InStr(LCase(sDocFileName), "sldprt") > 0 Następnie
        nDocType = swDocPART
    ElseIf InStr(LCase(sDocFileName), "sldasm") > 0 Następnie
        nDocType = swDocASSEMBLY
    ElseIf InStr(LCase(sDocFileName), "slddrw") > 0 Następnie
        nDocType = swDocDRAWING
    Inaczej
        Prawdopodobnie nie jest to plik SOLIDWORKS
        nDocType = swDocNONE
        ' Więc nie można otworzyć pliku
        Wyjdź z subwoofera
    Zakończ jeżeli:   

Działa to tak samo, jak wywołanie właściwości niestandardowej w komunikacie rysunku: $PRPSHEET, jeśli jest zdefiniowana w PRT/ASM, $PRP jeśli jest zdefiniowana w pliku DRW...