| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS | | |  | myPDMtools , eine App
|
Autor
|
Thema: Aus Konfig automatische Zeichnungserstellung (5392 mal gelesen)
|
MIREMI Mitglied Dipl.-Ing.

 Beiträge: 16 Registriert: 17.12.2009 HP EliteBook 8740W, WIN7, 16GB RAM, NVIDIA FX 3800 Quadro 1GB, Intel Core vPro
|
erstellt am: 26. Jul. 2010 06:38 <-- editieren / zitieren --> Unities abgeben:         
Hallo, ich suche einen Makro das aus jeder Konfiguration eines Modells, automatisch Zeichnungen erstellen kann und speichert sie mit Konfigname ab. Kann mir bitte Jemand helfen? Vielen Dank MIREMI
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
j to the b Mitglied Entwicklungskonstrukteur
 
 Beiträge: 130 Registriert: 09.04.2010 >Dell Precision T3500 >>Intel XEON W3540 @ 2,93GHz >>12GB RAM >>NVIDIA Quadro FX 3800 > >>3D CONNEXION Space Navigator > >>Windows XP Professional [ ] >>Windows 7 Professional 64 Bit [x] > >>SolidWorks 2009 Sp5.1 [ ] >>SolidWorks 2010 Sp4.0 [x]
|
erstellt am: 26. Jul. 2010 08:27 <-- editieren / zitieren --> Unities abgeben:          Nur für MIREMI
|
dopplerm Ehrenmitglied V.I.P. h.c. Konstrukteur
     
 Beiträge: 3627 Registriert: 11.02.2005 Win 10 SWX 2019 SP 5.0
|
erstellt am: 26. Jul. 2010 09:11 <-- editieren / zitieren --> Unities abgeben:          Nur für MIREMI
sobald jemand das programm zum automatischen normgerechten zeichnungserstellen fertig hat, wirds dein gesuchtes programm vielleicht auch geben. bis dahin: zeichnung kobieren konfiguration wechseln ein paar masse zurechtschieben speichern lg martin ------------------ Bin jetzt auch unter Skype erreichbar , einfach nach Martin Doppler in Wien suchen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MIREMI Mitglied Dipl.-Ing.

 Beiträge: 16 Registriert: 17.12.2009 HP EliteBook 8740W, WIN7, 16GB RAM, NVIDIA FX 3800 Quadro 1GB, Intel Core vPro
|
erstellt am: 26. Jul. 2010 21:53 <-- editieren / zitieren --> Unities abgeben:         
|
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)

 Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 27. Jul. 2010 11:19 <-- editieren / zitieren --> Unities abgeben:          Nur für MIREMI
Zitat: Original erstellt von MIREMI: Habe viele Modelle mit über 60 Konfig. Vieleicht hast Du ein anderen Vorschlag (auch wenn es etwas kosten sollte) bei dem man nicht dicke Finger bekommt.
Wenn ich das richtig verstanden habe hast du ein Modell XYZ.sldprt mit 60 Konfigs, und eine Zeichnung der Konfig1, so wie sie sein soll. Nun möchtest du von diesem Modell 60 Zeichnungen haben, die jeweils alle Zeichenansichten aller Blätter auf eine der Konfigurationen zeigen lässt. Also Resultat: ein Modell, 60 Konfigs. Hört sich nach der Aufgabe für ein Makro an  Wenn du mir versprichst 10% der dadurch eingesparten Kosten, Zeit und Verbandsmaterial für die dicken Finger (also 50 EUR sollten drin sein ) an deine örtliche Tafel, Kinderschutzbund oder eine andere gemeinnützige Organisation deiner Wahl zu spenden mach ich dir in der Mittagspause das Makro fertig. Deal? Ciao, Stefan
------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Stefans SolidWorks Blog Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MIREMI Mitglied Dipl.-Ing.

 Beiträge: 16 Registriert: 17.12.2009 HP EliteBook 8740W, WIN7, 16GB RAM, NVIDIA FX 3800 Quadro 1GB, Intel Core vPro
|
erstellt am: 27. Jul. 2010 13:53 <-- editieren / zitieren --> Unities abgeben:         
|
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)

 Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 27. Jul. 2010 14:08 <-- editieren / zitieren --> Unities abgeben:          Nur für MIREMI
Hi MIREMI, das hört sich prima an - und jeder, der den Code so gebrauchen und einsetzen kann darf gerne auch noch mal 50 EUR an die Tafel spenden  Code: ' ********************************************************************** ' * Makro ermittelt vom aktiver Modell alle Konfigurationen. ' * Für jede der Konfigurationen wird die Zeichnung ' * auf eben diese Konfiguration umgestellt und unter neuem Namen ' * (Name der Konfiguration) gespeichert. ' * ' * Startbedingung: Das Modell und die Zeichnung MÜSSEN denselben ' * Dateinamen haben und das Modell muss geöffnet sein (Zeichnung kann ' * geschlossen sein, muss dann aber im selben Pfad gespeichert sein ' * wie das Modell) ' * ' * 27.07.2010 Stefan Berlitz ' * http://solidworks.cad.de ' * http://swtools.cad.de ' * ' ********************************************************************** ' this Constants are editable to customize behaviour ' separartor for new filename / Trenner für DateinamenConst mySeparator = "_-_" ' ********************************************************************** ' do not edit below this line unless you know what you are doing ;-)) Dim swApp As Object Dim ModelDoc As Object Dim ModelDocType As Long Dim ModelPathName As String
Dim DrawingDoc As Object Dim DrawingPathName As String Dim DrawingTitle As String Dim DrawingSaveName As String Dim ConfigCount As Long Dim ConfigNames As Variant Dim ActiveSheet As Object Dim ActiveSheetName As String Dim Names As Variant Dim SheetCount As Long Dim View As Object Dim errors As Long Dim warnings As Long Dim i As Long ' loop counter Dim j As Long ' loop counter Const swDocNONE = 0 ' Used to be TYPE_NONE Const swDocPART = 1 ' Used to be TYPE_PART Const swDocASSEMBLY = 2 ' Used to be TYPE_ASSEMBLY Const swDocDRAWING = 3 ' Used to be TYPE_DRAWING Const swDocSDM = 4 ' Solid data manager. Const swSaveAsCurrentVersion = 0 Sub main() ' an SolidWorks anklinken und aktives Assembly holen Set swApp = CreateObject("SldWorks.Application") Set ModelDoc = swApp.ActiveDoc If ModelDoc Is Nothing Then ' dann war gar kein Dokument geöffnet, wie soll da was funktionieren MsgBox "Kein Dokument aktiv" Exit Sub End If If (ModelDoc.GetType = swDocDRAWING) Then ' wenn keine Modell aktiv ist wird das Makro wieder beendet MsgBox "Bitte Basis Modell aktivieren" Exit Sub End If
' get path and type of model ' Pfad und Typ zu diesem Modell merken ModelPathName = ModelDoc.GetPathName If UCase(GetExtensionOnly(ModelPathName)) = ".SLDPRT" Then ModelDocType = swDocPART Else ModelDocType = swDocASSEMBLY End If ' get alle configuration ' dann alle Konfigurationen auslesen ConfigCount = ModelDoc.GetConfigurationCount ConfigNames = ModelDoc.GetConfigurationNames ' Jetzt brauchen wir gleich auch die Zeichnung dazu, die MUSS denselben Namen ' haben und im selben Verzeichnis liegen wie das Basismodell DrawingPathName = GetFullPathNoExtension(ModelPathName) & ".slddrw" ' dann für alle Konfigurationen For i = 0 To ConfigCount - 1 ' das ursprüngliche Modell referenziert auf alle Zeichnungen openconfig = ConfigNames(i) ' die ursprüngliche Zeichnung öffnen Set DrawingDoc = swApp.OpenDoc6(DrawingPathName, swDocDRAWING, 0, "", errors, warnings) ' Now iterate through sheets. We should remember which sheet was ' active so we can avtivate it after the process ' Jetzt durch alle Blätter laufen. Wir merken und das gerade aktive ' Blatt um anschließend dahin zurück zu kehren Set ActiveSheet = DrawingDoc.GetCurrentSheet ActiveSheetName = ActiveSheet.GetName ' get the sheet count and loop over all sheets ' dann die Anzahl der Blätter holen und alle nacheinander anspringen SheetCount = DrawingDoc.GetSheetCount Names = DrawingDoc.GetSheetNames For j = 0 To SheetCount - 1 ' activate sheet ' nächstes Blatt aktivieren DrawingDoc.ActivateSheet Names(j) ' now iterate over the drawing views; the first view is ' always the sheet itself and there is never a model in ' it, but it's easier to check every view the same way ' alle Ansichten nacheiander durchlaufen; die erste View ist immer ' das Blatt selbst und enthält kein Modell, aber der Einfachheit ' halber machen wir für alle Ansichten das Gleiche Set View = DrawingDoc.GetFirstView ' as long as there is a valid view ' solange es noch eine Ansicht gibt While Not View Is Nothing ' check referenced configuration of the view ' überprüfen der Konfiguration der Zeichenansicht ' View.ReferencedConfiguration = ConfigNames(i) ' ... and go for the next view ' ... und die nächste Ansicht Set View = View.GetNextView Wend ' if the preview should be correct we have to rebuild the sheets ' however in this case we try to make the process fast, not pretty ' und damit auch die Vorschau für jedes Blatt richtig ist ein mal durchrechnen ' wer es also schön will einfach das Rebuild einkommentieren ' DrawingDoc.EditRebuild3 Next j ' reactivate sheet which was active ' dann das vorher aktuelle Blatt reaktivieren DrawingDoc.ActivateSheet ActiveSheetName ' generate the name of the drawing ' Namen zusammensetzen DrawingSaveName = GetFullPathNoExtension(ModelPathName) & mySeparator & _ ConfigNames(i) & ".slddrw" If DrawingDoc.SaveAs2(DrawingSaveName, swSaveAsCurrentVersion, False, False) Then If MsgBox("Fehler beim Speichern von " & DrawingSaveName & " Abbrechen?", vbYesNo) = vbYes Then End End If End If ' close model and drawing ' und Model und Zeichnung wieder schließen DrawingTitle = DrawingDoc.GetTitle swApp.CloseDoc DrawingTitle Next i End Sub
Private Function GetFullPathNoExtension(strPath As String) As String ' Dim intCounter As Integer
' rückwärts bis zum Punkt suchen For intCounter = Len(strPath) To 1 Step -1 If Mid$(strPath, intCounter, 1) = "." Then Exit For End If Next intCounter ' und den Wert zurückgeben OHNE den Punkt GetFullPathNoExtension = Left$(strPath, intCounter - 1) End Function Private Function GetExtensionOnly(strPath As String) As String Dim intCounter As Integer ' rückwärts bis zum Punkt suchen For intCounter = Len(strPath) To 1 Step -1 If Mid$(strPath, intCounter, 1) = "." Then Exit For End If Next intCounter ' und den Wert zurückgeben OHNE den Punkt GetExtensionOnly = Mid(strPath, intCounter) End Function Function GetPathPart(strPath As String) As String ' Dim intCounter As Integer ' Parse the string backwards For intCounter = Len(strPath) To 1 Step -1 ' Short-circuit when we reach the slash If Mid$(strPath, intCounter, 1) = "\" Then Exit For End If Next intCounter ' Return the value GetPathPart = Left$(strPath, intCounter) End Function
Ich hoffe du kommst damit klar, ich hab versucht es halbwegs vernünftig zu kommentieren. Vielleicht musst du wieder an dem Dateinamen rumschnitzen, oben in fett markiert. Im Moment wird es einfach als "Originalname - Konfigname" abgespeichert, ähnlich wie in Konfig speichern als Part  Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Stefans SolidWorks Blog Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andi Beck Ehrenmitglied V.I.P. h.c. Konstrukteur

 Beiträge: 2580 Registriert: 02.10.2006 Firma: SW 2024-3.1 + PDM Prof. Windows 10 Pro 64bit, i9-11900 32 GbRAM, Quadro P2200 Home: SW 2023-5.0 Passungstabelle von Heinz Windows 11 Pro 64bit, i7-12700K, 32 GbRAM, GeForce GTX 1050Ti Samsung C34H892, 3440x1440 Pixel
|
erstellt am: 27. Jul. 2010 20:24 <-- editieren / zitieren --> Unities abgeben:          Nur für MIREMI
Hallo Stefan, Gratuliere, aber sei Ehrlich, wie lang war deine Mittagspause und wieviel existierende Schnipsel konntest du einsetzen? Das is mir schon mal massig U´s wert. Grüße, Andi
------------------ Hast du kein Problem? Such dir eins. ( Und löse es ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)

 Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 28. Jul. 2010 10:41 <-- editieren / zitieren --> Unities abgeben:          Nur für MIREMI
Hallo Andi, Zitat: Original erstellt von Andi Beck: [...] aber sei Ehrlich, wie lang war deine Mittagspause und wieviel existierende Schnipsel konntest du einsetzen?
Also ich bin fast hingekommen, musste 10 Minuten dran hängen - und ich würde mal schätzen, dass ich bestimmt 60% aus anderen Makros zusammenklauen konnte, deswegen geht so was auch meist recht schnell Aber warum ich auf die Idee gekommen bin das Makro teilweise zweisprachig zu kommentieren kann ich auch nicht mehr ganz nachvollziehen  Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Stefans SolidWorks Blog Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MIREMI Mitglied Dipl.-Ing.

 Beiträge: 16 Registriert: 17.12.2009 HP EliteBook 8740W, WIN7, 16GB RAM, NVIDIA FX 3800 Quadro 1GB, Intel Core vPro
|
erstellt am: 28. Jul. 2010 11:43 <-- editieren / zitieren --> Unities abgeben:         
Hallo Stefan, es funktioniert sehr gut. Die Kosmetik der Zeichnungen muss ich leider noch per Hand machen. Maße sind verschoben. Als Sahneheubchen würde ich noch folgendes hinfügen: - alle Konfig als Teile automatisch (STEP, SAT, XT) abspeichern - alle Zeichnungen automatisch erstellen und abspeichern (SLDDRW) - alle erstellten Zeichnungen als PDF, TIF Abspeichern Ist das ein Vorschlag? Viele Grüße MIREMI
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
StefanBerlitz Guter-Geist-Moderator IT Admin (CAx)

 Beiträge: 8756 Registriert: 02.03.2000 SunZu sagt: Analysiere die Vorteile, die du aus meinem Ratschlag ziehst. Dann gliedere deine Kräfte entsprechend und mache dir außergewöhnliche Taktiken zunutze.
|
erstellt am: 28. Jul. 2010 13:01 <-- editieren / zitieren --> Unities abgeben:          Nur für MIREMI
Hallo MIREMI, Zitat: Original erstellt von MIREMI: - alle Konfig als Teile automatisch (STEP, SAT, XT) abspeichern
Das macht das Makro Nr. 16 von gismo auf http://solidworks.cad.de/mm_boerse02.htm Zitat: Original erstellt von MIREMI: - alle Zeichnungen automatisch erstellen und abspeichern (SLDDRW)
Hm, das verstehe ich nicht. Das macht das Makro doch jetzt, es erstellt die ganzen Zeichnungen automatisch nach der Vorlage und speichert die entsprechende SLDDRW im Verzeichnis des Modells. Falls du was anderes meinst beschreibe es bitte noch mal mit anderen Worten. Zitat: Original erstellt von MIREMI: - alle erstellten Zeichnungen als PDF, TIF Abspeichern
Kein Problem mit PAC4SWX, ist für kurze Zeit vollkommen kostenlos und erfordert danach ein (von den Kosten her sehr moderate) Lizenz. Ciao, Stefan
------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Stefans SolidWorks Blog Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |