| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für SOLIDWORKS |
| |
| SPS |
Autor
|
Thema: Makro Zeichnung öffnen (3482 mal gelesen)
|
TZ777 Mitglied
Beiträge: 4 Registriert: 06.04.2005
|
erstellt am: 29. Apr. 2005 10:55 <-- editieren / zitieren --> Unities abgeben:
Hallo, Ich suche ein Makro das mir Zeichnungen direkt aus den Modellen öffnet. Diese Funktion gibt es so schon in SW05, nur ich bräuchte eine etwas abgeänderte funktion. Und zwar das er sich die Zeichnungsnummer aus den Konfigurationsspezifischen Eigenschaften holt. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
FlorianGerteisz Mitglied IT-Anwendungsentwickler
Beiträge: 43 Registriert: 28.04.2005
|
erstellt am: 29. Apr. 2005 11:12 <-- editieren / zitieren --> Unities abgeben: Nur für TZ777
Zitat: Original erstellt von TZ777: Und zwar das er sich die Zeichnungsnummer aus den Konfigurationsspezifischen Eigenschaften holt.
Hallo TZ777, wenn du die Zeichnung öffnest kannst du die Zeichnungsnummer doch aus den Eigenschaften auslesen. Oder hab ich dein Problem falsch verstanden? gruß Flo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TZ777 Mitglied
Beiträge: 4 Registriert: 06.04.2005
|
erstellt am: 29. Apr. 2005 11:32 <-- editieren / zitieren --> Unities abgeben:
Jo da hast du mich leider falsch verstanden. Wenn du ein modell offen hast, mit der rechten maustaste auf den Teile Namen gehst hast du den Befehl Zeichnung öffnen. Solidworks öffnet dann automatisch die dazugehörige Zeichnung(Zeichnung muss im selben Ordner sein und der name der Datei muss mit dem Modelnamen übereinstimmen, sonst funktioniert das ganze nicht). Wenn ich nun mehrere Konfigurationen in diesem Modell habe öffnet er mir nur die Zeichnung mit dem Modellnamen.Ich kann also nur eine Zeichnung erstellen mit mehreren Blättern, will ich aber nicht. Da ich aber in den eigenschaften für jede Konfiguration eine seperate Zeichnungsnummer eingeben kann (die steht bei uns im schriftfeld und ist auch der Dateiname der Zeichnung), soll er mir diese nun aus den Eigenschaften rausziehen, und die dazugehörige Datei öffnen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
FlorianGerteisz Mitglied IT-Anwendungsentwickler
Beiträge: 43 Registriert: 28.04.2005
|
erstellt am: 29. Apr. 2005 11:41 <-- editieren / zitieren --> Unities abgeben: Nur für TZ777
Zitat: Original erstellt von TZ777: Da ich aber in den eigenschaften für jede Konfiguration eine seperate Zeichnungsnummer eingeben kann (die steht bei uns im schriftfeld und ist auch der Dateiname der Zeichnung), soll er mir diese nun aus den Eigenschaften rausziehen, und die dazugehörige Datei öffnen.
Du hast doch die Lösung schon hingeschrieben 1. Eigenschaft (Zeichnungsnummer) auslesen 2. Datei Öffnen -> SldWorks.OpenDoc (ggf. Dateiname zusammensetzen Zeichnungsnummer + ".sldrw") gruß flo ------------------ [Diese Nachricht wurde von FlorianGerteisz am 29. Apr. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TZ777 Mitglied
Beiträge: 4 Registriert: 06.04.2005
|
erstellt am: 29. Apr. 2005 12:14 <-- 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: 29. Apr. 2005 12:20 <-- editieren / zitieren --> Unities abgeben: Nur für TZ777
Hallo TZ777, normalerweise mach ich so etwas auch im Kundenauftrag, zumal dein Profil keinen Schluss darüber zulässt, wer du bist und was du machst, aber da ich gerade die API-Umgebung der SW2006 ein bisschen testen wollte hab ich dir was gebastelt. Code:
' ************************************************************************ ' * Makro holt sich vom aktiven Modell aus der konfigurations-spezifischen ' * Dateieigenschaft DRWNAME (unten festlegen) den Namen der passenden ' * Zeichnungsnumemr heraus und öffnet diese in SOlidWorks ' * ' * 29.04.2005 Stefan Berlitz (stefan.berlitz@solidworks.cad.de) ' * http://solidworks.cad.de ' * http://swtools.cad.de ' **********************************************************************' this Constants are editable to customize behaviour ' Name der konfspezifischen Dateieigenschaft, in der der Name des ' Zeichnungsdokumentes steht Const DRWNAME = "znr" ' ********************************************************************** ' do not edit below this line unless you know what you are doing ;-)) Const swDocNONE = 0 Const swDocPART = 1 Const swDocASSEMBLY = 2 Const swDocDRAWING = 3 Const swOpenDocOptions_Silent = 1 Const swOpenDocOptions_ReadOnly = 2 Const swOpenDocOptions_ViewOnly = 4 Const swOpenDocOptions_RapidDraft = 8 Const swOpenDocOptions_LoadModel = 16 Const swOpenDocOptions_AutoMissingConfig = 32 Sub main() Dim swApp As Object Dim ModelDoc As Object Dim ModelPathName As String Dim ActiveConfname As String Dim DrwFileName As String Dim DrwFullPath As String Dim DrawingDoc As Object Dim errors As Long Dim warnings As Long ' 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 "Nur für Modelle geeignet" Exit Sub End If ' dann den Namen der aktuellen Konfiguration raussuchen, dazu brauchen ' wir den dateinamen des aktuellen Modells ModelPathName = ModelDoc.GetPathName ActiveConfname = swApp.GetActiveConfigurationName(ModelPathName) ' damit jetzt die Dateieigenschaft auslesen, in der der Zeichnungsname drinsteht DrwFileName = ModelDoc.CustomInfo2(ActiveConfname, DRWNAME) If DrwFileName = "" Then ' dann gibt es die konfigspezifische Dateieigenschaft nicht MsgBox "Dateieigenschaft " & DRWNAME & " nicht vorhanden oder leer" Else ' sicherheitshalber ein .SLDDRW anhängen, falls nicht vorhanden If LCase(Right(DrwFileName, 7)) <> ".slddrw" Then DrwFileName = DrwFileName & ".slddrw" End If ' dann diese Datei im Ordner der Zeichnung suchen DrwFullPath = GetFullPath(ModelPathName) & "\" & DrwFileName If FileExists(DrwFullPath) Then ' dann Zeichnung öffnen Set DrawingDoc = swApp.OpenDoc6(DrwFullPath, swDocDRAWING, 0, "", errors, warnings) Else ' Datei existiert nicht MsgBox "Zeichnung " & DrwFileName & " existiert nicht im Verzeichnis." & vbCrLf & _ DrwFullPath End If End If End Sub Private Function GetFullPath(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 GetFullPath = Left$(strPath, intCounter - 1) End Function Private Function FileExists(strDest As String) As Boolean ' checks if file strDest exists Dim intLen As Integer If strDest <> vbNullString Then On Error Resume Next intLen = Len(Dir$(strDest)) On Error GoTo 0 FileExists = (Not Err And intLen > 0) Else FileExists = False End If End Function
Ich hab's auch mal als Makro angehangen, du musst es nur so anpassen, dass eben der Name der Eigenschaft eingetragen wird, wie sie bei dir heißt. Ciao und schönes Wochenende, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
TZ777 Mitglied
Beiträge: 4 Registriert: 06.04.2005
|
erstellt am: 29. Apr. 2005 12:24 <-- editieren / zitieren --> Unities abgeben:
|
GunnarHansen Mitglied Engineer
Beiträge: 752 Registriert: 16.09.2009 Creo Parametric 9.0.5.0 Creo View 9.1 Windchill 12.1.0.3-6.0.0 Google Chrome Lenovo Thinkpad P15 3DConnexion Wireless SpaceMouse
|
erstellt am: 14. Jun. 2012 13:59 <-- editieren / zitieren --> Unities abgeben: Nur für TZ777
ACHTUNG! Sie antworten auf einen Beitrag der älter als 1 Jahr ist! Hallo Stefan. Ist das Macro immer noch lauffähig, glaubst du.
Ich kriege das nicht hin. Was muss ich ändern? Eigenschafft=properties?? Und welche/wo? Nicht einfach mit meiner englischen Version.... mfG Gunnar 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: 14. Jun. 2012 14:14 <-- editieren / zitieren --> Unities abgeben: Nur für TZ777
Hallo GunnarHansen, Zitat: Original erstellt von GunnarHansen: Ist das Macro immer noch lauffähig, glaubst du.
Ja, sicher. SolidWorks hat die angenehme Eigenschaft an den APIs nichts zu ändern sondern nur neue dazuzumachen, deswegen sind selbst 7 Jahre alte Makros in der Regel noch lauffähig (wenn man es denn versionsunabhängig gemacht hat). In diesem Fall bin ich mir sicher, ich hab es gerade noch mal runtergeladen und probiert. Zitat: Original erstellt von GunnarHansen: Ich kriege das nicht hin. Was muss ich ändern? Eigenschafft=properties?? Und welche/wo? Nicht einfach mit meiner englischen Version....
Was bekommst du nicht hin? Verstehst du, was da Makro macht? Es sucht sich eine konfigurationsspezifische Eigenschaft (configuration specific file property), dessen Name mit der Konstanten DRWNAME definiert ist (im Beispiel muss die Eigenschaft "znr" heißen, holt sich den Wert davon und versucht dies als Zeichnung zu öffnen. Ohne diese Eigenschaft im Modell macht das Makro gar nix - d.h. es schmeißt eine Warnmeldung raus. Und ebenso, wenn es keine Zeichnung findet, die so heißt. Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GunnarHansen Mitglied Engineer
Beiträge: 752 Registriert: 16.09.2009
|
erstellt am: 14. Jun. 2012 14:51 <-- editieren / zitieren --> Unities abgeben: Nur für TZ777
Hallo Stefan. Ok es funzt ja! Super. Wenn die Zeicnung schon offen ist kommt sie aber nicht "nach vorne". Das war bei mir jetzt das Problem. Ist es möglich, das eine schohn offene Zeichnung nach vorne kommt? Gunnar Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GunnarHansen Mitglied Engineer
Beiträge: 752 Registriert: 16.09.2009 Creo Parametric 9.0.5.0 Creo View 9.1 Windchill 12.1.0.3-6.0.0 Google Chrome Lenovo Thinkpad P15 3DConnexion Wireless SpaceMouse
|
erstellt am: 14. Jun. 2012 14:59 <-- editieren / zitieren --> Unities abgeben: Nur für TZ777
Und noch eine Frage: Fals dieser Parameter noch keinen Wert hat muss ich immer einen Wert eintasten. Der wert muss immer gleich den Konfigurationsnamen sein. Ist es möglich ein Macro zu machen, der den Konfigurationsnamen liest und in den Parameter eingibt? MfG Gunnar 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: 14. Jun. 2012 15:06 <-- editieren / zitieren --> Unities abgeben: Nur für TZ777
Zitat: Original erstellt von GunnarHansen: Ist es möglich, das eine schohn offene Zeichnung nach vorne kommt?
Klar, das geht mit SldWorks::ActivateDoc2 Zitat: Original erstellt von GunnarHansen: Der wert muss immer gleich den Konfigurationsnamen sein. Ist es möglich ein Macro zu machen, der den Konfigurationsnamen liest und in den Parameter eingibt?
Klar, Konfigurationsnamen kannst du auslesen mit Configuration::Name Also alles klar, aber:
Zitat: Original erstellt von StefanBerlitz: normalerweise mach ich so etwas auch im Kundenauftrag, [...] aber da ich gerade die API-Umgebung der SW2006 ein bisschen testen wollte [...]
Der Betatest der 2006 ist vorbei Ciao, Stefan ------------------ Inoffizielle deutsche SolidWorks Hilfeseite http://solidworks.cad.de
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
GunnarHansen Mitglied Engineer
Beiträge: 752 Registriert: 16.09.2009
|
erstellt am: 14. Jun. 2012 15:44 <-- editieren / zitieren --> Unities abgeben: Nur für TZ777
Zitat: -------------------------------------------------------------------------------- Klar, das geht mit SldWorks::ActivateDoc2 -------------------------------------------------------------------------------- Das verstehe ich nicht. Wie sieht das im .svp file aus? -------------------------------------------------------------------------------- Klar, Konfigurationsnamen kannst du auslesen mit Configuration::Name --------------------------------------------------------------------------------
Das verstehe ich gar nicht. Wie wo.... Aber was dazulernen möchte ich gerne. Wenns geht......?
mfG Gunnar Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |