Witam
Pozwólcie, że wyjaśnię mój problem, obecnie mam plik Excela, z którego chcę otworzyć moje 3D (co mi się udaje)
wtedy.... Zapisz je w programie . DXf w określonym folderze ze ścieżką "G:\DAO\Iges-fao" i zmieniając ich nazwę za pomocą kodu ERP, który pojawia się na mapie danych, a także indeksu (wersja)
Zacząłem pisać początek makra, ale utknąłem na poziomie nagrywania 3D w DXF :-(
Załączam kod oraz wydruk karty danych
Czy możesz mi pomóc
Dim choix_liste As String 'type de pi?ce choisi dans la liste d?roulante pour l'ouverture des pi?ces
Dim nb_de_piece As Integer 'nombre de lignes de la colonne F correspondant aux nombres de pi?ces
Dim increment As Integer 'incr?ment de 1 pour effectuer la boucle de recherche ligne par ligne sur la colonne F
Dim myCell As String 'variable pour fusionner l'incr?ment et la colonne F pour la plage de recherche
Dim path As String 'chemin du dossier d'enregistrement de la pi?ce
Dim nom As String 'nom de la pi?ce
Dim path_complete As String 'chemin complet de la pi?ce
Dim myBool As Boolean
Dim myError As Long, myWarning As Long
Dim swApp As Object
Dim Part As Object
Dim longstatus As Long
'ouverture de SolidWorks :
myBool = Shell("C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\SLDWORKS.exe", vbNormalFocus)
Application.Wait Now + TimeValue("0:00:10")
Set swApp = CreateObject("SldWorks.Application")
'Set swApp = Application.SldWorks
Set swApp = CreateObject("SldWorks.Application")
Set swModel = swApp.OpenDoc6("C:\_FICHETBAUCHE\03 projets\01 safes\pbz00371\technical file\02 cad\millium-newton feu, cadre modifi? caisse ext pop?e\SW00239874.sldprt", 1, 1, "", myError, myWarning)
Set Part = swApp.ActiveDoc
' Named View
Part.ShowNamedView2 "*Dessus", 5
Part.ViewZoomtofit2
Set Part = swApp.ActiveDoc
' Save As
Set swModel = Part.SaveAs3("G:\DAO\Iges-fao\SW00246182.DXF", 0, 0)
' Save As
'swModel.SaveAs2 Left(path, (Len(path) - 6)) & "dxf", 0, True, False
' boucle a creer
'definition de la plage sur lequel va s'appliquer la macro :
'Initialisation de certaines variables:
' valeur de la conne x = "Nouveau" et Valeur de la colonne Y = " Fabriquée" et "Pièces/Opé panoplies"
nb_de_piece = Application.WorksheetFunction.CountA(Feuil1.Range("$H:$H")) 'nombre de cellules non vide dans la colonne F, soit le nombre de pi?ces
increment = 1
'For increment = 1 To der lign
' End If
'Next increment 'on passe ? la ligne suivante
End Sub
Z góry dziękuję
image.docx
Witam
Widzę, że masz skarbiec Epdm, więc na uwagę "Chcę otworzyć moje 3D (co mogę zrobić)" Nie do końca się zgadzam, twoje makro będzie działać tylko wtedy, gdy twoje pliki znajdują się w lokalnej pamięci podręcznej, w przeciwnym razie musisz użyć interfejsów API epdm (epdm. Interop.epdm_namespace) Aby połączyć się z magazynem, wyszukaj plik, repatriuj go do lokalnej pamięci podręcznej, a następnie załaduj go (nie wspominając o funkcjach wyodrębniania, tworzenia kopii zapasowych i archiwizowania, jeśli to konieczne).
Następnie, ponieważ zmienne są eksportowane z Epdm do właściwości oprogramowania, możesz użyć funkcji "Get6", aby pobrać ich wartości.
I wreszcie, aby zapisać model 3D w formacie DWG lub DXF, musisz użyć funkcji "ExportToDWG2".
Przykłady ilustrujące zastosowania tych różnych funkcji są dostępne pod różnymi linkami podanymi powyżej.
Pozdrowienia
2 polubienia
Witaj d.Roger
Dziękuję za uwagi i rady mnie, który myślałem, że znalazłem :-( ....
Czy mógłbyś mi trochę pomóc w napisaniu tylko tej części makra.... bo jestem początkujący w VB, a teraz jestem zagubiony.....
w zasadzie chcę po prostu przeczytać tylko plik SW00?????? który znajduje się w następującej ścieżce: "C:\_FICHETBAUCHE\03 projekty\01 sejfy\pbz00371\plik techniczny\02 cad\millium-newton fire, zmodyfikowana struktura?
a następnie zapisz go w .dxf w tym miejscu "G:\DAO\Iges-fao i zmieniając jego nazwę na kod ERP i indeks karty danych
i zamknij otwarty plik tylko do odczytu
bardzo dziękuję za pomoc, mając nadzieję, że możesz mi pomóc tylko w tej części makro
Pozdrowienia
Sebastian
Witam
Oto przykład nawiązywania połączenia z repozytorium Epdm i przesyłania pliku do oprogramowania, należy wskazać nazwę repozytorium i nazwę pliku, który ma zostać przesłany do makra. Nie zapomnij umieścić referencji "Biblioteka typów SldWorks xxxx" i "Biblioteka typów PDMWorks Enterprise xxxx" w swoim makrze (Narzędzia/Referencje).
Dim swApp As SldWorks.SldWorks
Dim Part As SldWorks.ModelDoc2
Dim longstatus As Long
Dim longwarnings As Long
Dim Coffre as string
Dim Fichier as string
Sub main()
myBool = Shell("C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\SLDWORKS.exe", vbNormalFocus)
Application.Wait Now + TimeValue("0:00:10")
Set swApp = CreateObject("SldWorks.Application")
Dim Vault As New EdmVault5
Dim File As IEdmFile5
Dim Folder As IEdmFolder5
Coffre = "x" 'Mettre le nom du coffre fort Epdm à la place du x
Fichier = "x" 'Mettre le nom complet du fichier à la place du x
Vault.LoginAuto Coffre, 0
Set File = Vault.GetFileFromPath(Fichier, Folder)
Set Part = swApp.OpenDoc6(Folder.LocalPath & "/" & File.Name, 1, 2, "", longstatus, longwarnings)
Set Part = swApp.ActiveDoc
Part.ViewZoomtofit2
MsgBox Part.GetPathName
End Sub
Dla innych funkcji dostępne są konkretne przykłady: TUTAJ dla funkcji Get6 i TUTAJ dla funkcji ExportToDWG2 . Aby zamknąć otwarty plik w Sw musisz użyć funkcji CloseDoc, przykład jak z niej skorzystać TUTAJ .
Pozdrowienia
1 polubienie