Tworzy drugą instancję Solidworks w VBA

Witam, muszę wykonać kod z Excela i chciałbym, aby wykonał ten kod w sesji solidworks , której użytkownik nie widzi, a zwłaszcza, że jeśli sesja solidworks jest już otwarta, zanim jej nie dotknie i że użytkownik nadal może nad nią pracować, czas wykonania kodu

 

w tej chwili używam tego kodu do otwarcia Solidworks, ale nie otwiera on nowej instancji

    Dim swApp As SldWorks.SldWorks
    Set swApp = CreateObject("SldWorks.Application")

 

Czy ktoś miał przypadek, w którym jestem jedyną osobą z taką potrzebą?

Witam

Niekoniecznie zaleca się otwieranie kilku sesji Solidworks na tym samym komputerze, może to prowadzić do konfliktów, począwszy od komunikatu, który pojawia się podczas uruchamiania drugiej sesji:

Pozdrowienia

Witam

Używam standardowego PDM, uruchamia on instancję oprogramowania do automatycznego tworzenia plików PDF z zatwierdzonymi rysunkami.
Po tej stronie mogą znajdować się przydatne informacje (patrz w Visiativ)

2 polubienia

Witam

 

d.roger minęło już kilka lat, odkąd wszyscy biegamy z kilkoma instancjami Solidworks ze względu na zestaw, który mamy, nie powodując żadnego szczególnego problemu

 

Todesco , niestety, Visiativ dobrze strzeże tych tajemnic^^

1 polubienie

Witam

Jeśli Solidworks nie zostanie uruchomiony, to za pomocą funkcji "CreateObject" utworzysz nowy obiekt, w przeciwnym razie zawiesisz się na obiekcie, który został uruchomiony. Powinieneś być w stanie użyć funkcji "Shellexecute", aby uruchomić nową instancję programu.

Pozdrowienia

Witaj d.roger,

 

Rzeczywiście, to właśnie na tym torze w tej chwili się zacinam, nie ma problemu, aby założyć nową instancję z powłoką, ale z drugiej strony przywiązać się do tej, a nie do pierwszej instancji stworzonej, to już inna historia  :/

Witam

Ta druga historia jest już napisana, ale w C#, zobaczmy, czy da się to wszystko przetłumaczyć na vba i tam może być zabawnie, spójrz na zweryfikowaną odpowiedź, która jest tutaj, a następnie po komunikat  o pliku dziennika podczas otwierania drugiej instancji musisz zajrzeć TUTAJ. I, nadal w C#, jeśli nie chcesz widzieć początku drugiej instancji Solidworks,  musisz umieścić "StartInfo.Arguments = "-m"" we właściwościach, aby przekazać do metody "Start" instancji klasy "Process".

Testowałem (w C#), z wyjątkiem komunikatu pliku dziennika, i działa całkiem nieźle...

[EDYTUJ | EDYTUJ KOD]

Po testach bardzo dobrze sprawdza się również proponowane rozwiązanie dla komunikatu pliku dziennika. Więc masz tylko z 2 proponowanych linków tłumaczenia z C# na VBA do zrobienia i modyfikacji, aby uruchomienie i okno tej nowej instancji Solidworks były niewidoczne. I oczywiście musisz pomyśleć o zwolnieniu wszystkich zasobów i zamknięciu tej instancji Solidworks na końcu makra, w przeciwnym razie proces będzie nadal działał.

[KONIEC EDYCJI]

Pozdrowienia

3 polubienia

Dziękuję za tę pełną informację zwrotną d.roger Po prostu muszę przekonwertować wszystko na VB i że rozumiem C# przy okazji, opublikuję kod VB po przekonwertowaniu dla tych, którzy mogą być zainteresowani

Witam

Posiadam makro SolidWorks (nie z Excela) i mam możliwość otwarcia kolejnej instancji, przechodząc bezpośrednio do folderu instalacyjnego za pomocą:

Shell "C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\SLDWORKS.exe"

 

Od Ciebie zależy, czy uda Ci się dostosować go do swoich potrzeb

 Witaj rpicard

 

Rzeczywiście, działa to dobrze, poszedłem tą ścieżką na początku, problem polega na tym, że nie mogłem się przypiąć do nowo powstałej instancji, a nie do pierwszej instancji.

 

Ale nie przestawam :)

Witam

Tak, istnieje kilka sposobów na uruchomienie drugiej instancji Solidworks:

Dim objShell As Object
Set objShell = CreateObject("shell.application")
objShell.ShellExecute "C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\SLDWORKS.exe", "", "", "open", vbNormalFocus
Set objShell = Nothing

Lub:

Shell "C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\SLDWORKS.exe", vbNormalFocus

Jednak głównym problemem jest dołączenie i zarządzanie tą drugą instancją Solidworks bez przeszkadzania użytkownikowi, który pracuje nad pierwszą instancją Solidworks. Widzę jednak, że nadchodzi drugi problem, który może polegać na tym, że jeśli użytkownik otworzy plik Solidworks, klikając go dwukrotnie, plik otworzy się w tej drugiej instancji Solidworks, zamiast otworzyć się w pierwszej instancji.

Pozdrowienia