Eksport zespołu do formatu DXF

Witam

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 

Witam

Dawno temu znalazłem na forum to makro, które zapisuje wszystkie pliki złożenia w PDF; Jeśli wiesz, co robisz, możesz się dostosować 


pdf_des_composants_de_lassemblage.swp

 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

Witam

Mam makro, które DXF części i złożenia.

Wszystko, co musisz zrobić, to utworzyć puste tło (ścieżkę do wskazania w makrze) i rekordy makr w dxf w skali 1.

Mam nadzieję, że to odpowie na twoją prośbę

Klasa A+


dxf.txt
1 polubienie

Dziękuję bardzo gwygwy
To już jest ogromny krok naprzód!

Plik DXF z zespołu generuje się poprawnie
Muszę tylko ustawić zespół w 0,0,0 (koniecznie przez początek 3D)
Aby zmienić nazwę pliku

Czy z makra można mieć okno dialogowe, w którym można wpisać nazwę żądanego pliku? lub pobrać nazwę właściwości oprogramowania pliku ?

1 polubienie

Witam

Mały przykład TUTAJ , aby pobrać właściwość niestandardową...

W przeciwnym razie dla okna dialogowego, które oczekuje na odpowiedź:

Dim maValeur As String
maValeur = InputBox("Ma question ?", "Mon titre", "Ma valeur par défaut")

Pozdrowienia

 Dziękuję d.roger za komplement,

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"

Pozdrowienia

Dziękuję bardzo d.roger

Uruchamianie makra z zestawu,
Wymieniłem część na sw.model

FilePath = Nazwa_Części.GetPathName
FileTitle = Część.GetTitle

Wynik jest naprawdę niezły,
Pozostaje tylko ustawić całość w 0,0,0
I nagrywać DXF w pliku w formacie raw, a nie do przebicia 3D

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.

Po lewej stronie dxf z makra
Prawy, ręcznie zmodyfikowany dxf z przesunięciem rzutu na początek układu współrzędnych

Jeśli chodzi o ścieżkę, trochę się podrapałem i jest ok ;)


origine.png

OK, zobaczmy więc, czy odpowiada Ci coś takiego:

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...

Pozdrowienia

Witam

@sjoly_TRI

Cieszę się, że moje makro pomogło Ci iść naprzód

Klasa A+

 Dziękuję d.roger
Zmiana położenia jest wykonywana, ale nie jest dobrze ustawiona na x0 y0 (obraz CF)

Przyznam, że nie rozumiem zasady działania decalX i decalY z xMax xMin (...)


2020-10-27_16_02_01-draftsight_enterprise_-_monfichier1.dxf_.png

W końcu znalazłem powód,
Mamy szkielet ujęć, które są poza 3D
A konwersja z Xmax Xmin... Weź pod uwagę plany

 


2020_10_27_16_16_58_solidworks_premium_2017_x64_edition_r_a.106568.sldasm_lecture_seule_.png

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.

Spróbuj wymienić linię:

vBox = swAssy.GetBox(swBoundingBoxIncludeRefPlanes)

Według niego:

vBox = swAssy.GetBox(Fałsz)

Za każdym razem, gdy masz plan, który przeszkadzałby...

Pozdrowienia

Daniel

Rzeczywiście, tak jest lepiej
Bardzo dziękujemy wszystkim za poświęcony czas i za pomoc!

1 polubienie