Musielibyśmy wyeksportować pliki montażowe do DXF (skala 1:1) Nie ma masowego eksportu, ale w idei byłby to raczej eksport w fazie projektowania
Pierwszy problem, jak być może wiesz, nie da się bezpośrednio wyeksportować złożenia do DXF (przynajmniej według mojej wiedzy w 2017 roku) Możemy mieć możliwość zrobienia makra, wyeksportowania do części, a następnie eksportu do DXF, tutaj drugi problem, ponieważ nie mamy wiedzy na temat makr
Do dyspozycji mamy myCADtools lub myPDMtools Ale tak naprawdę nie znamy wszystkich możliwości tych narzędzi.
Czy masz jakieś tropy, które mógłbyś przekazać? Z góry dzięki, Séb
Dziękuję ac cobra 427 za plik Ale nie mogę go uruchomić, nic nie działa, mam wrażenie, żaden plik PDF nie jest generowany A jeśli chodzi o edycję makro, jestem kulką
Edit: Właśnie zrozumiałem, że potrzebujesz już utworzonego planu drw W związku z tym makro jest wykonywane
Nie ma możliwości eksportu zespołu do pliku dxf, konieczne jest przejrzenie rysunku z wyborem widoków do eksportu.
Oczywiście poseł do PE będzie musiał zostać ponownie zarejestrowany w miarę postępów.
Nie jesteś pewien, czy makro pozwoli Ci zaoszczędzić dużo czasu na ten problem. Odłożenie 3 widoków i wyeksportowanie siebie ^me jest tak szybkie, jak naciśnięcie przycisku i pozwolenie, aby makro zrobiło swoje.
W przypadku narzędzia MyCad to samo, nie do końca interesujące dla tematu
Więc jeśli chcę, aby wygenerowany DXF był nazwany przez "myValue" Czy muszę modyfikować blok Part.SaveAs w makrze wysłanym przez gwygwy ?
'--- Zapisywanie pliku dxf i zamykanie tymczasowej
części MEP.SaveAs PathNoExtension & ". DXF"
Part.ClearSelection2 True
Set Part = swApp.ActiveDoc
swApp.CloseDoc swDraw.GetTitle 'Kończy pracę bez tworzenia kopii zapasowej MEP.
.
Mam również trudności z ustawieniem mojego zespołu w 0,0,0 Domyślnie początek układu współrzędnych pliku DXF znajduje się zawsze w środku mojego zespołu
Tak, należy zmodyfikować blok Part.SaveAs, aby ponownie obliczyć zmienną PathNoExtension.
Mały przykład:
Dim maValeur As String
maValeur = InputBox("Ma question ?", "Mon titre", "Ma valeur par défaut")
Dim FilePath As String
Dim FileTitle As String
Dim PathSize As Long
Dim TitleSize As Long
Dim PathNoExtension As String
FilePath = Part.GetPathName
FileTitle = Part.GetTitle
PathSize = Strings.Len(FilePath)
TitleSize = Strings.Len(FileTitle)
PathNoExtension = Strings.Left(FilePath, PathSize - TitleSize)
MsgBox PathNoExtension & maValeur & ".dxf"
Co masz na myśli mówiąc: "Wszystko, co musisz zrobić, to ustawić całość w 0,0,0"? Zrzut ekranu tego, co dostajesz i czego byś chciał, byłby mile widziany.
Aby zapisać dxf w surowym folderze, musisz przerobić zmienną "PathNoExtension" według własnego uznania.
Option Explicit
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swDraw As SldWorks.DrawingDoc
Dim swView As SldWorks.View
Dim retval As String
Dim FilePath As String
Dim FileTitle As String
Dim PathSize As Long
Dim TitleSize As Long
Dim PathNoExtension As String
Dim maValeur As String
Set swApp = CreateObject("SldWorks.Application")
Set swModel = swApp.ActiveDoc
'--- Création du nom du fichier
FilePath = swModel.GetPathName
FileTitle = swModel.GetTitle
PathSize = Strings.Len(FilePath)
TitleSize = Strings.Len(FileTitle)
PathNoExtension = Strings.Left(FilePath, PathSize - TitleSize)
maValeur = InputBox("Veuillez indiquer le nom du fichier dxf ?", "Macro Asm To DXF", "MonFichier")
PathNoExtension = PathNoExtension & maValeur & ".dxf"
'--- Calcul du décalage de l'origine
Dim vBox As Variant
Dim swAssy As SldWorks.AssemblyDoc
Dim X_max As Double
Dim X_min As Double
Dim Y_max As Double
Dim Y_min As Double
Dim Z_max As Double
Dim Z_min As Double
If swModel.GetType() <> swDocASSEMBLY Then Exit Sub
Set swAssy = swModel
vBox = swAssy.GetBox(swBoundingBoxIncludeRefPlanes)
X_max = vBox(3)
X_min = vBox(0)
Y_max = vBox(4)
Y_min = vBox(1)
Z_max = vBox(5)
Z_min = vBox(2)
Dim decalX As Double
Dim decalY As Double
decalX = (X_max - X_min) / 2
decalY = (Y_max - Y_min) / 2
'--- Création de la mise en plan
retval = swApp.GetUserPreferenceStringValue(swDefaultTemplateDrawing)
Set swDraw = swApp.NewDocument(retval, 0, 0, 0)
'--- Insertion de la vue
Set swView = swDraw.CreateDrawViewFromModelView3(swModel.GetPathName, "*Face", decalX, decalY, 0)
'--- Rend invisible les annotations de plis
swView.ShowSheetMetalBendNotes = False
'--- Force la vue à l'échelle 1:1
Dim swSheet As Sheet
Dim status As Boolean
Set swView = swDraw.GetFirstView
Set swSheet = swDraw.GetCurrentSheet
status = swSheet.SetScale(1, 1, True, True)
'--- Sauvegarde du dxf et fermeture de la MEP temporaire
swDraw.SaveAs PathNoExtension & ".DXF"
swDraw.ClearSelection2 True
swApp.CloseDoc swDraw.GetTitle
End Sub
Nie poradziłem sobie z zapisaniem pliku dxf w innym folderze...
Zasada polega na obliczeniu wymiarów "BoundingBox" zespołu i przesunięciu widoku o połowę, ponieważ domyślnie początek układu współrzędnych widoku jest środkiem zespołu.