Plan koncentracji na importowaniu obrazu VBA

Witam wszystkich, tutaj stworzyłem fragment kodu zintegrowany z moim makrem, aby wstawić obraz jpg do planu solidworks. Problem polega na tym, że wybieram plan, który jest już otwarty w opendoc6, ale to nie działa. Kiedy mam otwarty plan, działa, ale jeśli nie ma go w głównym oknie, już nie działa.

Określam, że w tym momencie makra plan będzie już otwarty, ale fokus jest na .part, plan jest otwarty, ale nie wybrany.

Oto funkcja, która powinna wstawić kod kreskowy:

Function codebarreDRAW(FCB As String, namePL As String, chemin As String)
Dim myModelView As Object
Dim swModel As ModelDoc2
Dim swApp As SldWorks.SldWorks
Dim swLoadErrors As Long
Dim swLoadWarnings As Long
Dim Fplan As String

Fplan = namePL & ".SLDDRW"

Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
Set myModelView = Part.ActiveView
Set swModel = swApp.OpenDoc6(Fplan, swDocDRAWING, swOpenDocOptions_Silent, "", swLoadErrors, swLoadWarnings)
myModelView.FrameState = swWindowState_e.swWindowMaximized
Dim SkPicture As Object
Set SkPicture = Part.SketchManager.InsertSketchPicture(FCB)
SkPicture.SetSize 130 / 1000, 20 / 1000, True
SkPicture.SetOrigin 110 / 1000, 35 / 1000
End Function

 

Mam błąd w linii Skpicture.setsize

Najgorsze jest to, że linia InsertSketchPicture nie ulega awarii, ale obraz nie jest importowany.

Jeśli masz jakieś pomysły, jestem za tym.

Dziękuję!

Udało mi się rozwiązać jeden z problemów, w rzeczywistości zamiast używać opendoc6 używam activatedoc3 i wyświetla mnie w oknie planu, ale z drugiej strony nadal mam błąd na linii:

SkPicture.SetSize 130/1000, 20/1000, Prawda

Błąd 91 Obiekt zmiennej lub ze zmienną blokową, która nie jest zdefiniowana

Więc wydaje mi się, że Skpicture nie zainicjował się dobrze

Ok, to rozwiązane, po prostu umieściłem ustawioną część przed activedoc3, więc to nie mogło zadziałać! Umieściłem ci funkcję do wstawienia do otwartego planu.

 

Do przerobienia w razie potrzeby, szczególnie na poziomie setsize i set origin,

 

FCB to plik obrazu, a namepl to nazwa planu, który ma zostać wprowadzony jako dane wejściowe w funkcji.

 

Function codebarreDRAW(FCB As String, namePL As String)
Dim myModelView As Object
Dim swModel As ModelDoc2
Dim swApp As SldWorks.SldWorks
Dim Errors As Long
Dim swLoadWarnings As Long
Dim Fplan As String

Fplan = namePL & ".SLDDRW"

Set swApp = Application.SldWorks
Set swModel = swApp.ActivateDoc3(Fplan, False, swRebuildOnActivation_e.swRebuildActiveDoc, Errors)
Set Part = swApp.ActiveDoc
Dim SkPicture As Object
Set SkPicture = Part.SketchManager.InsertSketchPicture(FCB)
SkPicture.SetSize 130 / 1000, 20 / 1000, True
SkPicture.SetOrigin 110 / 1000, 35 / 1000
End Function