Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  SolidWorks
  mal wieder ein Problem mit Blöcken

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS
  
Order & Offer Processing 2025, eine Veranstaltung am 22.06.2025
Autor Thema:  mal wieder ein Problem mit Blöcken (661 / mal gelesen)
EC-Jens
Mitglied
Konstrukteur


Sehen Sie sich das Profil von EC-Jens an!   Senden Sie eine Private Message an EC-Jens  Schreiben Sie einen Gästebucheintrag für EC-Jens

Beiträge: 48
Registriert: 04.05.2010

Dell Xeon(R) CPU E-2286G W10 1909 64GB Ram NVIDIDA Quadro P2200
SWX 2019 SP5.0 SolidWorks Enterprise PDM

erstellt am: 10. Nov. 2023 10:04    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo, ich habe mal wieder ein Problem mit Blöcken
Thema 1: ich kopiere ein Blatt dieses enthält Blöcke auf dem Blatt, die beim Kopieren nicht mit kopiert werden. Gibt es eine Möglichkeit diese mit zu Kopieren ohne sie vorher aufzulösen?
'edit hab einen Weg in der SWX Api gefunden, funktioniert.

Copy Sheet Code:
--------------------
Option Explicit

Dim swApp As SldWorks.SldWorks
Dim Part As DrawingDoc
Dim swModel As ModelDoc2
Dim boolstatus As Boolean

Sub main()

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

    If (Part Is Nothing) Then
        MsgBox " Please open a drawing document. "
        End
    End If

    Dim currentsheet As Sheet
    Set currentsheet = Part.GetCurrentSheet
    Part.ActivateSheet (currentsheet.GetName)
    Debug.Print "Active sheet: " & currentsheet.GetName
    boolstatus = Part.Extension.SelectByID2(currentsheet.GetName, "SHEET", 0, 0, 0, False, 0, Nothing, 0)
    swModel.EditCopy

    Part.ClearSelection2 True

End Sub

---------------


Anschließed füge ich das Kopierte Blatt in einer BG Zeichnung am Ende ein, ohne Blöcke umzubenennen.

Paste Sheet Code:
-----------
' Makro fügt kopiertes Blatt am Ende ein
' springt danach zurück auf Blatt 1


Option Explicit


Dim swApp As SldWorks.SldWorks
Dim Part As DrawingDoc
Dim swModel As ModelDoc2
Dim boolstatus As Boolean
Dim i As Integer
Dim bRet As Boolean
Dim swDraw As SldWorks.DrawingDoc
Dim vSheetName As Variant
Dim vSheets As Variant
Dim swSheet As SldWorks.Sheet


Sub main()

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

    If (Part Is Nothing) Then
        MsgBox " Please open a drawing document. "
        End
    End If

    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swDraw = swModel
    vSheets = swDraw.GetSheetNames
   
' ermittlung letztes Blatt
    For i = 1 To swDraw.GetSheetCount
        swDraw.ActivateSheet vSheets(i - 1)
        swDraw.ViewZoomtofit2
        Set swSheet = swDraw.GetCurrentSheet

    Next i


    Dim currentsheet As Sheet
    boolstatus = Part.PasteSheet(swInsertOption_AfterSelectedSheet, swRenameOption_No) 'fügt ein ohne Blöcke umzubenennen
    Set currentsheet = Part.GetCurrentSheet
    'Part.ActivateSheet (GetLastSheet)
    Debug.Print "Active sheet: " & currentsheet.GetName
   
   

' schalte wieder auf Blatt 1

        swDraw.ActivateSheet vSheets(0)
        swDraw.ViewZoomtofit2

End Sub

--------------------

Hier passiert es das teilweise die Blattformate nicht dargestellt werden. Dies lässt sich lösen durch ein Reload des Blattformates. Händisch kein Problem hier kann ich sagen Blöcke nicht umbenennen (das Thema gab es hier schon vor vielen Jahren aber keine API Lösung).

Reload Blattformat Code:

' Makro lädt aktuelles Blattformat neu für alle Blätter
' setzt Blatt 1 wieder aktiv
' Alle Blätter Zoom Grenzen

Sub main()

Dim swApp              As SldWorks.SldWorks
Dim swModel            As SldWorks.ModelDoc2
Dim swDraw             As SldWorks.DrawingDoc
Dim swSheet            As SldWorks.Sheet
Dim vSheetProps        As Variant
Dim vSheetName         As Variant
Dim vTemplateName      As Variant

Dim longstatus         As Long
Dim longwarnings       As Long
Dim nErrors            As Long
Dim nWarnings          As Long
Dim i                  As Long

'***************************************

On Error Resume Next

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

' Check to see if a drawing is loaded.
If swModel Is Nothing Then
        MsgBox "Keine 2D Zeichung geöffnet!"
        Exit Sub
End If
  
If swModel.GetType <> swDocDRAWING Then
        MsgBox "Keine 2D Zeichung geöffnet!"
        Exit Sub
End If

Set swDraw = swModel
  
    vSheetName = swDraw.GetSheetNames

    ' Traverse the drawing sheets
    For i = 0 To UBound(vSheetName)

        swDraw.ActivateSheet vSheetName(i)
        Set swSheet = swDraw.GetCurrentSheet
      
        'Get the current drawing sheet format from this sheet
        vTemplateName = swSheet.GetTemplateName
      
        vSheetProps = swSheet.GetProperties
  
    'Set the sheet format to NONE
    swModel.SetupSheet5 swSheet.GetName, swDwgPapersUserDefined, swDwgTemplateNone, vSheetProps(2), vSheetProps(3), True, "", vSheetProps(5), vSheetProps(6), "Default", True
  
    'Reload original sheet format for this sheet
    swModel.SetupSheet5 swSheet.GetName, swDwgPapersUserDefined, swDwgTemplateCustom, vSheetProps(2), vSheetProps(3), True, vTemplateName, vSheetProps(5), vSheetProps(6), "Default", True
    swDraw.ViewZoomtofit2
  
  
  
  
Next i

    swDraw.ActivateSheet vSheetName(0)
    swDraw.ForceRebuild3 False
    swDraw.Save3 1, nErrors, nWarnings
      
Set Part = swApp.ActiveDoc
Set myModelView = Part.ActiveView
myModelView.FrameState = swWindowState_e.swWindowMaximized


MsgBox "Blatt wurde aktualisiert..."

End Sub


werden die Blöcke umbenamt, darauf würde ich gern verzichten, schon um einen Überblick über die vielen Blöcke zu behalten.


------------------
-----------------------------
der frühe Vogel kann mich mal

[Diese Nachricht wurde von EC-Jens am 13. Nov. 2023 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2025 CAD.de | Impressum | Datenschutz