Autor
|
Thema: MaxxDB64.dll (4391 mal gelesen)
|
Baltenweck Mitglied Konstrukteur
 
 Beiträge: 170 Registriert: 13.03.2001 SolidWorks 2010 64bit, MaxxDB 3.0/MySQL
|
erstellt am: 19. Okt. 2011 15:56 <-- editieren / zitieren --> Unities abgeben:         
Hallo zusammen, nachdem ich ein Programm geschrieben habe das den Zeichnungsrahmen tauscht soll die Zeichnung über MaxxDB gespeichert werden damit der Zeichnungskopf aktualisiert wird. Ich spreche die MaxxDB64.dll an und habe folgendes gemacht: MaxxDB : ICMaxx . . MaxxDB = CoCMaxx.Create //funktioniert UN = MaxxDB.GetDBUserName //funktioniert MaxxDB.SearchMaxxDB //MAxxDB-Fenster wird aufgerufen aber wohl nicht die dazugehörige DB MaxxDB.SaveMaxxDB //Fehler: external:SIGSEGV Ich vermute mal dass man irgenwie noch angeben muss wie man an die SQL-DB rankommt Hat jemand nen Tip ? Gruß Patrick ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Press play on tape Ehrenmitglied Konstrukteur und sonst nix!
    
 Beiträge: 1945 Registriert: 30.04.2007
|
erstellt am: 19. Okt. 2011 16:44 <-- editieren / zitieren --> Unities abgeben:          Nur für Baltenweck
Hallo, ich habe tatsächlich die gleiche Problematik hier. Mein Weg scheint aber anders zu sein als Dein Weg. Ich habe ein Makro genutzt um die Zeichnungsrahmen zu tauschen und dieses mittels eines scripts in der MaxxDB ablaufen lassen. Das einzige was man über scripts nichts hinbekommt ist das aktualisieren bzw. Zeichnung speichern (MaxxDB speichern) somit blieben meine Rahmen unausgefüllt. Bei mir hat die Problematik intern/extern zu 2 Zeichnungsvorlagen geführt. Vorteil meiner Methode ich kann mittels Listeransicht (sortiert nach Datum) viele Zeichnungen Stapelverarbeiten Steckengeblieben bin ich beim speichern , da muß alle im moment öffnen und speichern Das mal einfach zum Thema als anderer Lösungsansatz. Zum eigentlichen Problem selbst, dem speichern, sties ich hier im Forum auf diesen Beitrag von Jochen Renz. leider sind meine Makro/Programmierkentnisse seh begrenzt sonst hätte ich das schon mal probiert. Aber da Du in dieser hinsicht wesentlich weiter als ich zu sein scheinst könnte Dir das vielleicht helfen. gruß Heiko ------------------ CAD.de Treffen Stuttgart nicht nur Pro/E!!!! 64bit sind kein Thema mehr ;-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Baltenweck Mitglied Konstrukteur
 
 Beiträge: 170 Registriert: 13.03.2001 SolidWorks 2010 64bit, MaxxDB 3.0/MySQL
|
erstellt am: 19. Okt. 2011 17:07 <-- editieren / zitieren --> Unities abgeben:         
Hallo Heiko (und andere), vielen Dank für das Feedback. Wie du ja schon geschrieben hast gibt es verschiedene Wege zum Thema Rahmenaustausch. Funktioniert ja auch. Bleibt halt wirklich "nur" die eine oder andere MaxxDB-Funktion. Den einzig verwertbare Tip habe ich auch in dem Beitrag von Hr. Renz gesehen (pwbasic.bas). Habe mit Teilen des Basicprogramms experimentiert - leider kein Erfolg. Möglicherweise ist das auch nicht mehr für die MaxxDB 3 auf dem aktuellen Stand (copyright geht von 1999 bis 2007). Hab mal den Makrorecorder gestartet. Dort wird das aufgezeichnet: If Not maxxDB Is Nothing Then maxxDB.SaveMaxxDB Will man das Makro wieder starten wird ein fehlendes Objekt bemängelt. Ich hab über Delphi die DLL mal importiert und könnte das Ergebnis hier posten, weiss aber nicht ob das ne Rechteverletzung ist. Gruß Patrick ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Metallica88 Mitglied Konstrukteur; CAD Admin
 
 Beiträge: 379 Registriert: 01.04.2009 ehem. CAx Admin für ~70 Konstrukteure in verteilten Standorten.
|
erstellt am: 20. Okt. 2011 10:40 <-- editieren / zitieren --> Unities abgeben:          Nur für Baltenweck
Hallo auch ich habe (hatte) das selbe Problem. Meine Lösung dafür: Eine "Konvertierung" mit den Tool convswx.exe (gibts von den MaxxDB Entwicklern) wo das Makro ausgeführt werden kann und über die MaxxDB gespeichert wird. Dabei muss über MaxxDB Aktionen >> Konvertierung starten ... >> eine Liste mit Zeichnungen (also nur SLDDRW und den Optionen "MaxxDB speichern" und "Dateien nicht auf SWX -Version prüfen" erstellt werden. Im convswx wird wiederum die Liste und das Makro angeben, hier muss ebenfalls die Option "Dateien nicht auf SWX Version prüfen" aktiviert werden... Mfg Metallica88
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Baltenweck Mitglied Konstrukteur
 
 Beiträge: 170 Registriert: 13.03.2001 SolidWorks 2010 64bit, MaxxDB 3.0/MySQL
|
erstellt am: 20. Okt. 2011 12:05 <-- editieren / zitieren --> Unities abgeben:         
Hallo Metallica88 convswx.exe hab ich auch schon verwendet. Kann "man" auch verwenden wenn für einen bestimmten Datenbestand die Rahmen ausgetauscht werden sollen(Ist auch fürs nächste SWx-Update geplant). Für den Fall "aktuell geladen Zeichnung -> Rahmen tauschen -> MaxxDB speichern" kann ich convswx.exe auch nicht benutzen da ich convswx.exe ja auch anzapfen müsste. convswx.exe kann glaub ich auch über mitgegebene Startparameter aufgerufen werden wobei mein Programm convswx <Parameter> eben aufrufen müsste. Da muss ich mal noch nachlesen ob das geht. Allerdings wärs mir echt lieber ich könnte das über die MaxxDB-DLL lösen, da in Zukunft ausser Speichern das Steuern anderer MaxxDB-Funktionen ebenfalls interessant wäre. Gruß Patrick ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Baltenweck Mitglied Konstrukteur
 
 Beiträge: 170 Registriert: 13.03.2001 SolidWorks 2010 64bit, MaxxDB 3.0/MySQL
|
erstellt am: 11. Nov. 2011 10:18 <-- editieren / zitieren --> Unities abgeben:         
Sooo, jetzt konnte ich mich mal wieder mit meinem "Problem" beschäftigen. Habe mir jetzt nochmal genau die pwbasic.bas zu Gemüte geführt und die Funktionen MyCallBack und pw_save_anyway ausgeschnitten. Jetzt habe ich ein funktionsfähiges Makro: Dim swapp As Object Dim Part As Object Dim boolstatus As Boolean Dim longstatus As Long, longwarnings As Long Dim PWS As Long 'Für Rueckgabewert durch Aufruf von pw_save_anyway
'----------- aus pwbasic.bas kopiert --------------------------------- Public Function MyCallBack(swapp As Object, action As String) As Long Dim maxxdb As Object If swapp Is Nothing Then MyCallBack = -100 Exit Function End If Set maxxdb = swapp.GetAddInObject("MaxxDB.CMaxx") If maxxdb Is Nothing Then MyCallBack = swapp.CallBack("cctools@CallBack", -100, action) Else maxxdb.Callback2 action, MyCallBack End If End Function '----------- aus pwbasic.bas kopiert --------------------------------- Public Function pw_save_anyway(swapp As Object) As Long Dim action As String Dim rc As Long If swapp Is Nothing Then MsgBox "Not connected to SolidWorks!" Exit Function End If action = "SAVE_ANYWAY" rc = MyCallBack(swapp, action) If rc = -100 Then MsgBox "CallBack failed, MaxxDB probably not activated in SolidWorks!" End If pw_save_anyway = rc End Function '----------- MAIN --------------------------------- Sub main() Set swapp = Application.SldWorks PWS = pw_save_anyway(swapp)'MAxxDB Speichern, egal welcher Dateistatus End Sub ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Baltenweck Mitglied Konstrukteur
 
 Beiträge: 170 Registriert: 13.03.2001 SolidWorks 2010 64bit, MaxxDB 3.0/MySQL
|
erstellt am: 11. Nov. 2011 10:38 <-- editieren / zitieren --> Unities abgeben:         
Kleine Ergänzung: Das Makro könnte auch durch ein Programm separat aufgerufen werden. VBA-Aufruf wäre dann z.B: boolstatus = swApp.RunMacro("MaxxDBSpeichern.swp", "MaxxDBSpeichern1", "main") Möglicherweise müsste der Parameter MaxxDBSpeichern.swp durch Pfadangaben erweitert werden, also z.B. C:\Temp\MaxxDBSpeichern.swp Gruß Patrick ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Press play on tape Ehrenmitglied Konstrukteur und sonst nix!
    
 Beiträge: 1945 Registriert: 30.04.2007
|
erstellt am: 11. Nov. 2011 11:35 <-- editieren / zitieren --> Unities abgeben:          Nur für Baltenweck
|