Makro DXF PDF

Witam.

 

Mam makro, które idzie gładko ... ale gdzie nic się nie dzieje. Naprawdę nie rozumiem, dlaczego i gdzie to utknęło. Czy ktoś ma jakiś pomysł?

Wstawiam komentarze, aby wyjaśnić, co próbuję tam zrobić. Chodzi o to, aby zapisać każdy arkusz mojego DRW w DXF i PDF pod odpowiednią nazwą w odpowiednim katalogu.

 

 

Zapisz podrzędnie()
Dim swapp As SldWorks.SldWorks
Przyciemnij swdoc jako SldWorks.ModelDoc2
Dim Swdraw jako SldWorks.ModelDoc
Przyciemnij swSheet jako SldWorks.Sheet
Dim vSheetNames As Variant
Dim Nbfeuille As Variant
Ustaw swapp = Application.SldWorks
Ustaw swdoc = swapp. Plik ActiveDoc
Ustaw Swdraw = swdoc
Set swSheet = Swdraw.GetCurrentSheet
"Komunikat potwierdzający
ret = MsgBox("czy chcesz przekonwertować ten rysunek na DXF i PDF?", vbOKCancel + vbExclamation + vbMsgBoxSetForeground + vbSystemModal, "Konwersja laserowa")
Jeśli ret = vbAnuluj, to Koniec
Rejestracja nowej nazwy
Robić
newname = InputBox("Proszę określić nową nazwę:", "blabla", nowanazwa)
Jeśli StrPtr(nowanazwa) = 0 to
MsgBox "procedura anulowana"
Wyjdź z subwoofera
Zakończ jeżeli:
'Sprawdzanie okien z zakazanymi znakami
Wykonaj While InStr(nowa_nazwa, "/") > 0 Or InStr(nowa_nazwa, "*") > 0 Or InStr(nowa_nazwa, "?") > 0 Lub InStr(nowa_nazwa, "<") > 0 Or InStr(nowa, ">") > 0 Lub InStr(nowa, "!") > 0
newname = InputBox("Ostrzeżenie, nazwa zawiera co najmniej jeden z zabronionych znaków \/:*?"" <>!" & vbNewLine & vbNewLine & "Proszę wskazać nową nazwę: ", "save-under by LPR", newname)
Pętla
Pętla, podczas gdy nowa_nazwa = " "
"Dokumentacja rejestracyjna
Robić
FilePath = InputBox("Określ ścieżkę", "folder nagrań", Ścieżka pliku)
Jeśli StrPtr(ŚcieżkaPliku) = 0, to
MsgBox "procedura anulowana"
Wyjdź z subwoofera
Zakończ jeżeli:
'Dodanie znaku \ na końcu nazwy folderu
Jeśli Right(FilePath, 1) <> "\", to FilePath = FilePath & "\"
Jeśli Dir$(FilePath) <> "" to
ISTNIEJE = 1
W przeciwnym razie: MsgBox "katalog nie istnieje, utwórz go"
Debug.Print Dir$(FilePath)
Zakończ jeżeli:
Pętla, gdy ISTNIEJE <> 1
"Wskazuje liczbę arkuszy
Nbfeuille = swdoc. GetSheetCount (Liczba arkuszy)
Dla i = 0 Do Nbfeuille
SWDOC. ArkuszPoprzedni
Dalej i
Przechodzenie do następnego arkusza, jeśli < do całkowitej liczby
Dla i = 0 Do varSheetCount - 1
Jeśli <> 0, to
SWMODEL. ArkuszNastępny
Zakończ jeżeli:
Nagrywanie w formacie DXF i PDF
SWDOC. Zapisz jako (Ścieżka pliku + nowa_nazwa + "_" + i + ".dxf")
SWDOC. Zapisz jako (ŚcieżkaPliku + nowa_nazwa + "_" + i + ".pdf")
Dalej i
Koniec subwoofera

1 polubienie

Witam

Aby uzyskać informacje na temat debugowania, zobacz ten link:

Zobacz ten link: http://www.tomshardware.fr/forum/id-1348092/tutoriel-excel-macro-vba-debogage.html

Spróbuj utworzyć punkt przerwania dla linii:

 

SWDOC. Zapisz jako (Ścieżka pliku + nowa_nazwa + "_" + i + ".dxf")
SWDOC. Zapisz jako (ŚcieżkaPliku + nowa_nazwa + "_" + i + ".pdf")

 

Program idzie dobrze?

 

Jeśli nie, zobacz dlaczego.

 

Jeśli tak, wykonaj debug.print tuż przed wierszami, aby zobaczyć, co zawierają:

debug.print Ścieżka pliku + nowa_nazwa + "_" + i + ".dxf"

3 polubienia

Nie wiedząc zbyt wiele o tworzeniu makr, znalazłem tylko inne makro, które może zrobić to, co chcesz osiągnąć... Jeśli to może ci pomóc?

 

 


76430003creat-dxf-pdf-tif-zip.zip
3 polubienia

Zaproponowałem już dwa makra, które to robią w jego ostatnim pytaniu, ale on woli zrobić własne makro:

http://www.lynkoa.com/forum/3d/trouver-une-feuille-mep-en-vba-sous-solidworks

2 polubienia

Tyle o mnie,

Nie mogę Ci tak pomóc, powodzenia ;)

Cdt

Joss

2 polubienia

Wciąż kilka błędów, ale zbliżam się do ostatecznego celu (haaaa!)

 

W każdym razie, dziękuję za informacje na temat rozwiązywania błędów

1 polubienie

Witam
Chciałbym również zapisać moje części w DXF, ale od czasu pliku Part, próbowałem zhakować twój program, aby go dostosować, ale nic nie działa poza oknami komunikatów, nie mam żadnych wyników, ktoś może rzucić okiem na mój kod, lub dać mi taki, który już działa dobrze do tego użytku :slight_smile:


Sub Enregistrer()
Dim swapp As SldWorks.SldWorks
Dim swdoc As SldWorks.ModelDoc2
Dim SwPart As SldWorks.ModelDoc
Set swapp = Application.SldWorks
Set swdoc = swapp.ActiveDoc
Set SwPart = swdoc

'Message de confirmation
ret = MsgBox("voulez-vous convertir cette piece en DXF?", vbOKCancel + vbExclamation + vbMsgBoxSetForeground + vbSystemModal, "Conversion Laser")
If ret = vbCancel Then End


'Enregistrement nouveau nom
Do
 newname = InputBox("nom du dxf:", "blabla", newname)
 If StrPtr(newname) = 0 Then
 MsgBox "procédure annulée"
 Exit Sub
 End If
 
'Verification caractere interdit Windows
Do While InStr(newname, "/") > 0 Or InStr(newname, "*") > 0 Or InStr(newname, "?") > 0 Or InStr(newname, "<") > 0 Or InStr(newnam, ">") > 0 Or InStr(newnam, "!") > 0
 newname = InputBox("Attention, le nom contient au moins un des caractère interdits \/:*?""<>!" & vbNewLine & vbNewLine & "Merci d'indiquer le nouveau nom: ", "enregistrer-sous par LPR", newname)
 Loop
 Loop While newname = " "
 
 
'Dossier d'enregistrement
Do
 FilePath = InputBox("Indiquez le chemin d'accés", "dossier enregistrement", FilePath)
 If StrPtr(FilePath) = 0 Then
 MsgBox "procédure annulée"
 Exit Sub
End If
'Ajout du \ à la fin du nom de dossier
If Right(FilePath, 1) <> "\" Then FilePath = FilePath & "\"
 If Dir$(FilePath) <> "" Then
 EXISTE = 1
 Else: MsgBox "le répertoire n'existe pas, merci de le créer"
 Debug.Print Dir$(FilePath)
End If
Loop While EXISTE <> 1

'Enregistrement en DXF
swdoc.SaveAs (FilePath + newname + "_" + ".dxf")


End Sub

Makro jest stworzone dla posłów do PE i przekształcasz je w pokój, nic dziwnego, że nie działa.
Ponadto, ponieważ temat jest zamknięty od 2014 roku, zapraszam do stworzenia własnego tematu z tym tutaj jako odniesieniem.
Domyślam się, że istnieją już makra do eksportu w formacie dxf z części arkusza blachy i dlatego ten nie jest najbardziej odpowiedni.

1 polubienie

Ho, stara wiadomość do môa! Jestem wzruszony! :smiling_face:

A ja nie byłem ostrożny... 4 tys. wyświetleń na ten temat. :crazy_face: :hot_face: :cold_face:

1 polubienie

Witam.

… 9 lat później...
(Nie należy rozkopywać starych tematów, zwłaszcza jeśli są już w "rozwiązanych"...

Aby wyeksportować część objętościową (SLDPRT) w formacie DXF: Zastąp polecenie "saveas" następującymi elementami:
ExportToDWG2 (eksport bez rozwinięcia)
lub przez
ExportFlatPatternView (eksport ze spłaszczaniem)...

Pozdrowienia.

1 polubienie