Dzielenie zespołu wieloarkuszowego i planu części

Witam

W ramach przeróbki planu historycznego stworzonego w folderach Windows, i przeniesionego na kilka lat do pdm, chciałbym wiedzieć, czy ktoś z Was miałby jakiś trik lub makro, aby "eksplodować" do dzielenia rysunków wieloarkuszowych

historycznie BE edytuje rysunek, na którym mieliśmy zespół, a następnie na każdym arkuszu szczegółowe plany części wchodzących w skład tego zespołu.

Metodologia ewoluowała po przejściu przez PDM i zautomatyzowane zadania, następnie zmiana dostawcy, a następnie zmiana podwykonawcy itp. Dzisiaj, gdy "kopiujemy" stary zespół, mamy te słynne wieloarkuszowe plany, które nie odpowiadają obecnemu procesowi.

Czy ktoś z Was spotkał się już z problemem i znalazł rozwiązanie inne niż odtworzenie każdego planu pomieszczenia poprzez usuwanie arkuszy z tzw. planu ogólnego w miarę upływu czasu?

Obecnie używamy smartdrawing do generowania map bazowych każdego pomieszczenia, a następnie kopiujemy arkusze wielu arkuszy do każdego pliku, generujemy, archiwizujemy, a następnie przetwarzamy mapy bazowe za pomocą integracji.

nieodpowiednie = > operacje ludzkie, które czasami mylą rysunki

 

Witam

Zobacz załączony przykład, aby rozdzielić wieloarkuszową instalację MEP na wiele arkuszy.

https://www.javelin-tech.com/blog/2014/03/save-multi-sheet-as-its-own-drawing-or-combine-multiple-drawings/

Niewątpliwie można to zautomatyzować za pomocą makra, jeśli masz pewną wiedzę na temat VBA.

W przypadku makra musisz również wiedzieć, w jaki sposób nazywasz każdego posła z każdego liścia. (nazwa arkusza?)

A przy odrobinie szczęścia wystarczy zdobyć makro i lekko je zmodyfikować, aby zmienić nazwy swoich posłów do PE według własnego uznania.

 

Edycja: oto kolejny link, o którym zapomniałem w poprzednim przykładzie makra (ale nie znalazłem makra, które do niego pasuje)

https://www.youtube.com/watch?v=lkU1acf2PNg

 

1 polubienie

Dziękujemy za opinię, 

Film na YouTube jest tym, czego szukam

Jak pobrać makro "Zapisz plik arkusza rysunku.swp"!!  

Szukam tego, jeśli znajdę, publikuję to

 

Po jakichś poszukiwaniach nie znaleziono, ale jeśli ktoś ma czas aby się temu poświęcić rozwiązaniem byłoby skopiowanie jednego z arkuszy wieloarkusza, następnie wklejenie go do nowego arkusza i zapisanie go z nazwą tego arkusza.

 

W przeciwnym razie zmodyfikowałem to makro z makra do eksportu do formatu PDF, ale eksportuje ono wszystkie arkusze (nie tylko ten, który chcesz) i musiałbyś dodać usunięcie wszystkich niechcianych arkuszy.

'Description: Macro to export Drawing Sheets As PDF with sheet name as file name.

'Precondition: Any active drawing file

'Postconditions: PDF file in the same location as drawing file.


' Please back up your data before use and USE AT OWN RISK

' This macro is provided as is.  No claims, support, refund, safety net, or
' warranties are expressed or implied.  By using this macro and/or its code in
' any way whatsoever, the user and any entities which the user represents,
' agree to hold the authors free of any and all liability.  Free distribution
' and use of this code in other free works is welcome.  If any portion of
' this code is used in other works, credit to the authors must be placed in
' that work within a user viewable location (e.g., macro header).  All other
' forms of distribution (i.e., not free, fee for delivery, etc) are prohibited
' without the expressed written consent by the authors.  Use at your own risk!
' ------------------------------------------------------------------------------
' Written by: Deepak Gupta (http://gupta9665.wordpress.com/)
' -----------------------------------------------------------------------------

Sub main()

Dim swApp                   As SldWorks.SldWorks
Dim swModel                 As SldWorks.ModelDoc2
Dim swDraw                  As SldWorks.DrawingDoc
Dim swSheet                 As SldWorks.Sheet
Dim vSheetNameArr           As Variant
Dim vSheetName              As Variant
Dim bRet                    As Boolean
Dim swExportPDFData         As SldWorks.ExportPdfData
Dim lErrors                 As Long
Dim lWarnings               As Long

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc

' Is document active?

If swModel Is Nothing Then

    swApp.SendMsgToUser2 "A Drawing document must be active.", swMbWarning, swMbOk

    Exit Sub

End If
 

' Is it a Drawing document?

If swModel.GetType <> swDocDRAWING Then

    swApp.SendMsgToUser2 "A Drawing document must be active.", swMbWarning, swMbOk

    Exit Sub

End If


Set swDraw = swModel
Set swSheet = swDraw.GetCurrentSheet

vSheetNameArr = swDraw.GetSheetNames
For Each vSheetName In vSheetNameArr

bRet = swDraw.ActivateSheet(vSheetName): Debug.Assert bRet

swDraw.ViewZoomtofit2

Set swExportPDFData = swApp.GetExportFileData(1)
swExportPDFData.SetSheets swExportData_ExportSpecifiedSheets, Nothing
'swModel.Extension.SaveAs vSheetName + ".pdf", 0, 0, swExportPDFData, lErrors, lWarnings
swModel.Extension.SaveAs Path & "\" & vSheetName & ".slddrw", 0, 0, Nothing, lErrors, lWarnings
Next vSheetName

End Sub

 

1 polubienie

lol miałem ten sam pomysł, otworzyłem makro eksportu  wielu arkuszy w osobnym pliku pdf

Zobaczę, czy uda mi się zdobyć zaciski kodowe do tej rzeczy slddrw zastępujące .pdf

1 polubienie

Witam

Skoro posiadasz pakiet myCADtools, możesz skorzystać z narzędzia "Integracja", które powinno spełnić Twoje oczekiwania.

https://help.visiativ.com/mycadtools/2021/fr/Integration129.html

W załączeniu znajduje się przykład akcji 

- Warunek, jeśli dokument jest polem do Parlamentu Europejskiego, jeśli liczba arkuszy jest różna niż 1

 - Następnie wykonujemy operację zapisania każdego arkusza w nowym MEP

Pozdrowienia


example.mcact
3 polubienia

Po prostu szybko zakodowałem coś, co wydaje się działać.

Po prostu umieść w 2. wierszu ścieżkę do pliku drwdot.

Wtedy będzie musiał zostać ulepszony o pewne zabezpieczenia, aby w żaden sposób go nie uruchamiać.

W tej chwili musisz koniecznie otworzyć MEP, a następnie uruchomić makro (nie otwieraj w międzyczasie pliku, w przeciwnym razie znajdziesz wyodrębnione pliki  w tym samym miejscu, co otwarty plik)

'Mettre ci-dessous le chemin vers le modèle de Fond de plan
Const sDrTemplateLaser As String = "U:\Modèle de documents\Mise en plan - Fonds de plan\A4-DECOUPE-b.DRWDOT"

Sub main()

Dim swApp                   As SldWorks.SldWorks
Dim swModel                 As SldWorks.ModelDoc2
Dim swModel2                 As SldWorks.ModelDoc2
Dim swDraw                  As SldWorks.DrawingDoc
Dim swDraw2                 As SldWorks.DrawingDoc
Dim swSheet                 As SldWorks.Sheet
Dim vSheetNameArr           As Variant
Dim vSheetName              As Variant
Dim bRet                    As Boolean
Dim swExportPDFData         As SldWorks.ExportPdfData
Dim lErrors                 As Long
Dim lWarnings               As Long

Dim vSheetName2              As Variant
Dim i                       As Integer

Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc

' Is document active?

If swModel Is Nothing Then

    swApp.SendMsgToUser2 "A Drawing document must be active.", swMbWarning, swMbOk

    Exit Sub

End If
 

' Is it a Drawing document?

If swModel.GetType <> swDocDRAWING Then

    swApp.SendMsgToUser2 "A Drawing document must be active.", swMbWarning, swMbOk

    Exit Sub

End If


Set swDraw = swModel
Set swSheet = swDraw.GetCurrentSheet

vSheetNameArr = swDraw.GetSheetNames
For Each vSheetName In vSheetNameArr

bRet = swDraw.ActivateSheet(vSheetName): Debug.Assert bRet

swDraw.ViewZoomtofit2


            swDraw.ActivateSheet vSheetName
            'Debug.Print "Feuille active:" & sheetName
            bRet = swDraw.Extension.SelectByID2(vSheetName, "SHEET", 0, 0, 0, False, 0, Nothing, 0)
            swModel.EditCopy
            Set swDraw2 = swApp.NewDocument(sDrTemplateLaser, 0, 0, 0)
            'On supprime la 1ère feuille existantes
            vSheetName2 = swDraw.GetSheetNames
            Set swModel2 = swApp.ActiveDoc
            Set swExt = swModel2.Extension
            
            
            bRet = swDraw2.PasteSheet(swInsertOption_MoveToEnd, swRenameOption_No)
            swDraw2.GetCurrentSheet.SetName vSheetName
            Set swModel2 = swApp.ActiveDoc
            
            '*********************************
            
            'On supprime la 1ère feuille existantes
            For i = 0 To UBound(vSheetName2) 'Boucle sur toutes les feuilles
            Debug.Print vSheetName2(i)
                If i = 0 Then
                    bRet = swExt.SelectByID2(vSheetName2(i), "SHEET", 0, 0, 0, False, 0, Nothing, 0)
                    'Supprimer la sélection
                    bRet = swExt.DeleteSelection2(0)
                End If
            Next
            
            '********************************
            swModel2.Extension.SaveAs Path & "\" & vSheetName & ".slddrw", 0, 0, Nothing, lErrors, lWarnings
Next vSheetName

End Sub

 

Więc teraz jestem spełniony

między makro a integracją!

Przepraszam Jm Savoyat Umieściłem sbadenis jako najlepszą odpowiedź "dla tych, którzy nie mają pakietu mycad" 

Ale uwielbiam pracować z integracją, a ponadto mogę ją włączyć do zautomatyzowanego zadania PDM oczywiście po sprawdzeniu.

2 polubienia

@g. Komentatorzy nie martw się! wink

1 polubienie

@JMSAVOYAT

przykładowy plik w wyższej wersji .... Myślałem, że mam ostatnią aktualizację w 2021 SP2!  (Chcę wersję beta)

@g. komentatorzy 

Trochę cierpliwości, wersja myCADtools 2022 SP0 powinna być dostępna w przyszłym tygodniu. Dopieszczamy ostatnie szczegóły! smiley

Oto zrzut ekranu przykładu.

1 polubienie

jedyne narzędzie, w którym instaluję SP0 od samego początku , aby powiedzieć mój poziom cierpliwości.....

laugh rzeczywiście!

Ale ta funkcja w przykładzie, który próbowałem Ci opublikować, jest już dostępna od dłuższego czasu!

1 polubienie