Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  SolidWorks
  Auf der Suche nach einem Makro für das Erstellen von Zeichnungsansichten

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
  
SolidCAM im Einsatz bei der August Weckermann KG
Autor Thema:  Auf der Suche nach einem Makro für das Erstellen von Zeichnungsansichten (2629 mal gelesen)
danuberacer
Mitglied



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

Beiträge: 466
Registriert: 24.07.2004

SWX 2018X64 SP0.1
Computer mit Bildschirm, Tastatur und Maus

erstellt am: 06. Dez. 2016 17:01    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 bin auf der Suche nach einem Makro für das Erstellen von Zeichnungsansichten.
Konkret geht es um folgendes (Beispielszenario):
- In einer Baugruppe befinden sich 10 Einzelteile
- Nun wird eine neue Zeichnung erstellt
- Diese neue Zeichnung sollte nun auf EINEM Blatt von JEDEM dieser 10 Einzelteile eine Ansicht (Vorderansicht) enthalten.
- Die Zeichnung erstelle ich manuell, nur das Erzeugen der 10 Ansichten sollte mit einem Klick gehen. Das Ausrichten auf dem Blatt kann dann gerne wieder manuell passieren.
- Ganz Toll wäre die Möglichkeit aus der Baugruppe nur eine bestimmte Anzahl von Einzelteilen auswählen zu können (Beispiel: Nur 7 von 10 sollten auf der Zeichnung landen).

Hätte hier jemand eine Idee für mich?

Nachsatz:
Ich habe mich schon durchs Web gesucht und auch hier im Forum habe ich nichts passendes gefunden.
In der API-Hilfe gibt es dafür offensichtlich auch die entsprechenden Codes, ich kann aber damit leider nichts anfangen.
Ein Makro habe ich gefunden, nur erstellt mir dieses für jedes Teil eine eigene Zeichnung.
Die standardmäßig in SW verfügbaren Methoden gehen ja nicht schlecht nur sind sie doch ein wenig zu aufwändig (Beispiel: Wenn ich ein Einzelteil aus dem Windows-Explorer direkt auf ein SW-Zeichnungsblatt ziehe muss ich immer den Haken "Mehrere Ansichten erstellen" deaktivieren; ich kann den nicht per default ausschalten oder?).

Bin für jeden Tipp dankbar.

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

Christian_W
Ehrenmitglied V.I.P. h.c.
Konstrukteur (Dipl-Ing)


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

Beiträge: 3189
Registriert: 04.04.2001

CSWP 12/2015<P>SWX2021sp5 Win10/11
(SWX2016, SWX2012)
proAlpha6.2e00/calinkV9
(Tactonworks)
(Medusa7, NesCAD2010,
solidEdge19)

erstellt am: 06. Dez. 2016 18:25    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 Nur für danuberacer 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von danuberacer:
...
- Diese neue Zeichnung sollte nun auf EINEM Blatt von JEDEM dieser 10 Einzelteile eine Ansicht (Vorderansicht) enthalten.
...

Die standardmäßig in SW verfügbaren Methoden gehen ja nicht schlecht nur sind sie doch ein wenig zu aufwändig (Beispiel: Wenn ich ein Einzelteil aus dem Windows-Explorer direkt auf ein SW-Zeichnungsblatt ziehe muss ich immer den Haken "Mehrere Ansichten erstellen" deaktivieren; ich kann den nicht per default ausschalten oder?).
...


Hallo,

hört sich als Idee für ein Makro nicht schlecht an. Am besten dann noch auswählen, welche Ansicht genommen werden soll ...  ( oder optional die Abwicklung ... )

Die Ansichtspalette müsste doch auch einigermaßen zügig zum gewünschten Ergebnis führen ... oder ist das mit der Komponentenauswahl noch zu aufwändig?

Gruß, Christian

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

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



Sehen Sie sich das Profil von bk.sc an!   Senden Sie eine Private Message an bk.sc  Schreiben Sie einen Gästebucheintrag für bk.sc

Beiträge: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 07. Dez. 2016 07:25    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 Nur für danuberacer 10 Unities + Antwort hilfreich

Hallo,

Zitat:
Ein Makro habe ich gefunden, nur erstellt mir dieses für jedes Teil eine eigene Zeichnung.

Könntest du uns sagen welches Macro das ist, evtl. kann mann das so umbauen dass es nur auf einer Zeichnung die Ansichten erzeugt.

So würde ich das Macro aufbauen:
1. Baugruppe Travesieren (TopLevel) [Traverse Assembly and Hide All Sketches Example (VBA)]
2. Zu jeder Komponente Titel und Pfad in ein (alternativ 2) Arry(s) schreiben [Name2 Property (IComponent2)und GetPathName Method (IComponent2)]
3. UserForm mit SelectBox erstellen und diese mit den Titeln aus dem Arry befüllen [Arry und SelectBox in der VBA-Editor Hilfe suchen]
4. Neue Zeichnung erstellen [NewDocument Method (ISldWorks)]
5. Zu jeder selektierten Auswahl in der SelectBox eine Ansicht mit Hilfe des Pfades aus dem Arry erstellen [CreateDrawViewFromModelView3 Method (IDrawingDoc)]

Alternativ könntest du auch an stelle von Ansichten erstellen auch  nur die Ansichtspalette mit den Komponenten befüllen (GenerateViewPaletteViews Method (IDrawingDoc))

Interresant wäre noch zu wissen wie mit Unterbaugruppen wenn vorhanden umgegangen werden soll, ob Konfigurationen berücksichtigt werden sollen, ob evtl. Instanzen von Komponenten vorhanden sein können die vorher ausgefiltert werden sollen und weitere Randinformationen die das Macro beeinflussen könnten.

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete  

[Diese Nachricht wurde von bk.sc am 07. Dez. 2016 editiert.]

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

dimikuhn
Mitglied
Freiberuflicher Ingenieur


Sehen Sie sich das Profil von dimikuhn an!   Senden Sie eine Private Message an Dimitrie Kuhn  Schreiben Sie einen Gästebucheintrag für Dimitrie Kuhn

Beiträge: 10
Registriert: 05.11.2011

erstellt am: 07. Dez. 2016 23:36    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 Nur für danuberacer 10 Unities + Antwort hilfreich


CreateViewsFromSelectedCompInDrawing_V_1_0.zip

 
Hallo danuberacer,

ich hoffe, ich habe dein Beispielszenario richtig verstanden und umsetzen können.
Es ist mit Sicherheit noch nicht jedes Szenario getestet, dafür fehlt mir die Zeit.
Auch kann vieles noch erweitert werden (z. B. Konfigurationen und Ansichten wählen, ...).
Zumindest sollte es einen guten Start für dein Vorhaben darstellen.

Probiere es einfach mal aus.

Grüße und viel Erfolg!
Dimi

**************************************************************************************

' Makro Name: CreateViewsFromSelectedCompInDrawing
' Version: 1.0
' Ersteller: Dimitrie Kuhn
' Datum: 07.12.2016

' Dieses Makro fügt die "*Vorderseite" aller selektierten Komponenten (Teile, Baugruppen) einer Baugruppe in eine bereits geöffnete Zeichnung ein.
' Der Maßstab jeder eingefügten Ansicht wird auf "1:1" gesetzt.

' Startvoraussetzungen:
'       1. Es darf nur eine Zeichnung geöffnet sein (Ansichten werden auf aktivem Zeichenblatt platziert).
'       2. Eine Baugruppe muss geöffnet und aktiv sein.
'       3. Auf der Baugruppe muss mindestens ein Teil oder eine Baugruppe selektiert sein.

Option Explicit

Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim myModel As Variant
Dim myModels() As ModelDoc2
Dim swSelMgr As SldWorks.SelectionMgr
Dim countSel As Long
Dim swComp As SldWorks.Component2
Dim swDraw As SldWorks.DrawingDoc
Dim swView As SldWorks.View
Dim strOpenDrw As String
Dim countOpenDrw As Integer
Dim CompPathNames() As String
Dim LocX As Double
Dim LocY As Double
Dim i As Integer
Dim iRet As Integer
Dim longstatus As Long

Sub main()

    ' An SolidWorks anbinden
    Set swApp = Application.SldWorks
   
    ' An aktives Dokument anbinden
    Set swModel = swApp.ActiveDoc

   ' Prüfen ob eine Baugruppe geoeffnet ist, wenn nicht -> abbrechen
    If swModel Is Nothing Or swModel.GetType <> swDocASSEMBLY Then
        swApp.SendMsgToUser2 "Bitte öffnen/aktivieren Sie eine Baugruppe und selektieren Sie Komponenten (Teile und Baugruppen).", swMbWarning, swMbOk
        GoTo Abbrechen
    End If
   
    ' An SelectionMgr anbinden
    Set swSelMgr = swModel.SelectionManager
   
    ' Ermitteln wieviel selektiert wurde
    countSel = swSelMgr.GetSelectedObjectCount2(-1)
   
    ' Wenn nichts selektiert wurde -> abbrechen
    If countSel = 0 Then
        swApp.SendMsgToUser2 "Bitte selektiere Komponenten (Teile und Baugruppen)", swMbWarning, swMbOk
        GoTo Abbrechen
    End If
   
    ' Array initialisieren
    ReDim CompPathNames(0)
   
    ' Prüfe für jedes selektierte Objekt ...
    For i = 1 To countSel
   
        ' Wenn selektiertes Objekt eine Komponente (Teil, Baugruppe) ist, tue ...
        If swSelMgr.GetSelectedObjectType3(i, -1) = swSelectType_e.swSelCOMPONENTS Then
           
            ' An Komponente anbinden
            Set swComp = swSelMgr.GetSelectedObject6(i, -1)
           
            ' Arraygröße um eins erweitern
            ReDim Preserve CompPathNames(UBound(CompPathNames) + 1)
           
            ' Array an letzter Stelle mit Pfad+Dateiname+Endung füllen (Index(0) bleibt leer!)
            CompPathNames(UBound(CompPathNames)) = swComp.GetPathName
           
        End If
       
    Next i

    ' Speichere alle (im Arbeitsspeicher) geöffneten Dokumente in ein Array des Types "ModelDoc2"
    myModels = swApp.GetDocuments
   
    ' Setze Zählervariable für geöffnete Zeichnungen auf "0"
    countOpenDrw = 0
   
    ' Für jede Datei in "myModels" tue ...
    For Each myModel In myModels
   
        ' Wenn Datei vom Typ "swDocDRAWING" und wenn Datei sichtbar (eigenes Fenster, bzw. offen) tue ...
        If myModel.GetType = SwConst.swDocumentTypes_e.swDocDRAWING And myModel.Visible = True Then
               
                ' Speichere den Titel der Datei
                strOpenDrw = myModel.GetTitle
               
                ' Zähler hochsetzen
                countOpenDrw = countOpenDrw + 1
           
        End If
       
    Next
   
    ' Wenn mehr oder weniger als eine Zeichnung geöffnet ist -> abbrechen
    If countOpenDrw <> 1 Then
        swApp.SendMsgToUser2 "Es sind " & countOpenDrw & " Zeichnungen geöffnet." & Chr(13) & "Es darf nur eine Zeichnung geöffnet sein!", swMbWarning, swMbOk
        GoTo Abbrechen
    End If
   
    ' User fragen ob Ansichten tatsächlich in die jeweilige Zeichnung auf dem benannten Blatt platziert werden sollen
    iRet = swApp.SendMsgToUser2("Sollen die Ansichten in die Zeichnungsdatei: " & strOpenDrw & " eingefügt werden?", swMbQuestion, swMbYesNo)
   
    ' Wenn Antwort = Nein, dann abbrechen
    If iRet = swMbHitNo Then GoTo Abbrechen
   
    ' Dokument (Zeichnung) aktivieren
    Set swDraw = swApp.ActivateDoc2(strOpenDrw, False, longstatus)
   
    ' Positionsvariablen auf "0" setzen
    LocX = 0
    LocY = 0

    ' Für jede Komponente (Teil, Baugruppe) tue ...
    For i = 1 To UBound(CompPathNames)
   
        ' Position ändern
        LocX = LocX + 0.075
        LocY = LocY + 0.05
       
        ' Zeichenansicht "*Vorderseite" aus Komponente erstellen und positionieren
        Set swView = swDraw.CreateDrawViewFromModelView3(CompPathNames(i), "*Vorderseite", LocX, LocY, 0)
       
        ' Maßstab auf "1:1" setzen
        swView.ScaleDecimal = 1
    Next i

    ' Wiederaufbau der Zeichnung
    swDraw.ForceRebuild3 True

Abbrechen:
    ' Objekte (Speicher) freigeben
    Set swSelMgr = Nothing
    Set swView = Nothing
    Set swDraw = Nothing
    Set swComp = Nothing
    Set swModel = Nothing
    Set swApp = Nothing
End Sub


[Diese Nachricht wurde von dimikuhn am 29. Jan. 2017 editiert.]

[Diese Nachricht wurde von dimikuhn am 29. Jan. 2017 editiert.]

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

Locke79
Mitglied
Arbeitsvorbereitung


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

Beiträge: 12
Registriert: 08.03.2022

erstellt am: 11. Mrz. 2022 12:34    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 Nur für danuberacer 10 Unities + Antwort hilfreich

Hallo zusammen,

dies ist ein Makro welches ich schon fast super gebrauchen könnte.
Besteht die Möglichkeit dieses auch so umzuschreiben das es mir automatisch die Abwicklung, anstelle von Vorderansicht einfügt?

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

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



Sehen Sie sich das Profil von bk.sc an!   Senden Sie eine Private Message an bk.sc  Schreiben Sie einen Gästebucheintrag für bk.sc

Beiträge: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 15. Mrz. 2022 16:18    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 Nur für danuberacer 10 Unities + Antwort hilfreich

Hallo Locke,

versuch mal bei

Code:
Set swView = swDraw.CreateDrawViewFromModelView3(CompPathNames(i), "*Vorderseite", LocX, LocY, 0)

an Stelle von "*Vorderansicht" "Abwicklung" oder "*Abwicklung", weil so ist der Name der Ansicht nämlich in der Ansichtspalette.

Falls das nicht klappt müsste man wohl die Konfiguration der Ansicht ändern.

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete 

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

Locke79
Mitglied
Arbeitsvorbereitung


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

Beiträge: 12
Registriert: 08.03.2022

erstellt am: 16. Mrz. 2022 08:20    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 Nur für danuberacer 10 Unities + Antwort hilfreich

Schönen guten Morgen Bernd,

wenn ich das mache kommt ein Laufzeitfehler '91' mit dem Hinweis: Objektvariable oder With-Blockvariable nicht festgelegt.
Leider bin ich noch nicht so fit, dass ich weiß wie man den Fehler korrigiert bzw. was der Fehler aussagt. Hättest du da vielleicht auch einen Tip für?

Grüße Locke

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

bk.sc
Ehrenmitglied V.I.P. h.c.
Konstrukteur Sondermaschinenbau



Sehen Sie sich das Profil von bk.sc an!   Senden Sie eine Private Message an bk.sc  Schreiben Sie einen Gästebucheintrag für bk.sc

Beiträge: 2776
Registriert: 18.07.2012

-Solid Works 2019 SP5
-Pro Engineer WF 3

erstellt am: 16. Mrz. 2022 12:50    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 Nur für danuberacer 10 Unities + Antwort hilfreich

Hallo Locke,

seltsam, bei mir funktioniert es solange nur Bleche selektiert sind und diese keine Multibody-Teile sind.

Hast du es mal mit einer einfachen Baugruppe probiert in der z.B. nur zwei Bleche sind, bei denen wenn du von denen eine Zeichnung erstellst in der Ansichtpalette eine Ansicht Abwicklung angeboten wird?

Gruß
Bernd

------------------
--- Man muß nicht alles wissen, man muß nur wissen wo es steht ---

Staatlich anerkannte Deutschniete 

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

Locke79
Mitglied
Arbeitsvorbereitung


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

Beiträge: 12
Registriert: 08.03.2022

erstellt am: 18. Mrz. 2022 06:48    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 Nur für danuberacer 10 Unities + Antwort hilfreich

Schönen guten Morgen Bernd,

ja, da war ich wieder zu schnell und nicht richtig gelesen.
Ich hatte "*Abwicklung" stehen da gings nicht, jetzt mit "Abwicklung" gehts. Vielen vielen Dank.

Schönen Tag wünsche ich.

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)2024 CAD.de | Impressum | Datenschutz