| | | Future of Design: Design Apps in der Cloud |
Autor
|
Thema: Fragen zum Thema SOLIDWORKS PDM Strukturkopie / Copy tree (2516 / mal gelesen)
|
SWX-Quäler Mitglied Software Developer
Beiträge: 34 Registriert: 04.07.2016 Windows 7 Professionel SP1 SOLIDWORKS Premium 2017 SP2.0 X64 Edition SOLIDWORKS PDM Professional 17.02.0063
|
erstellt am: 11. Apr. 2017 10:42 <-- editieren / zitieren --> Unities abgeben:
Guten Tag, ich habe einige Fragen zum Thema SOLIDWORKS PDM "Strukturkopie / Copy tree" und hoffe dabei auf Eure Hilfe und dass Ihr mich in die richtige Richtung schubsen werdet. Istzustand: Meine Kollegen aus der Konstruktion wünschen sich eine (Teil-)Automatisierung der Strukturkopie, weil sie in unserem PDM immer wieder Geräte (Assemlies) nach einem bestimmten Schema anlegen. Diese Automatisierung bekomme ich auch hin, d.h. Assemblies vom Ort A im PDM nach dem Ort B im PDM zu kopieren. Mein Problem an der Sache ist, dass ich es nicht schaffe, die Referenzen der Dateien (Assembly plus Einelteile) am Ort B zu aktualisieren. Hier stehe ich auf dem Schlauch und hoffe auf Eure hilfreichen Ratschläge. Zur Veranschaulichung hänge ich mal eine grobe Auflistung der von mir genutzten Befehle und drei Screenshots an: Screenshot 1: Ort A im PDM Screenshot 2: Mein Programm Screenshot 3: Ort B im PDM
Code:
------------------------------------ Copytree / Strukturkopie (C++ / VC6) ------------------------------------Tresoransicht holen IEdmVault7Ptr pdmVault = getTresorAnsicht(); Gets an interface to the file with the specified file system path. IEdmFile5Ptr pdmFile = pdmVault->GetFileFromPath(_bstr_t(csQuelle), &pdmQuellOrdner); Gets an interface to the files that reference or are referenced by this file. IEdmReference10Ptr pdmReference = pdmFile->GetReferenceTree(pdmQuellOrdner->ID, 0L); Starts an enumeration of child references for the specified configuration. IEdmPos5Ptr pdmPos = pdmReference->GetFirstChildPosition4( &pbsProjectName, //*pbsProjectName VARIANT_TRUE, //bIsTopParent VARIANT_TRUE, //bPermitReadLocal VARIANT_TRUE, //bGetSuppressedComponent EdmRef_File, //EdmRefFlags Enumeration: EdmRef_File = 1 = Item to file reference _T(""), //If an empty string is passed to bsConfiguration, then the file's common configuration is used. 0L //Version for which to get references; use 0 for latest version ); if (VARIANT_FALSE == pdmPos->IsNull) { Copies a file from a different folder in the vault to this folder. long lRetFileID = pdmZielDir->CopyFile2( pdmReference->GetFileID(), //lFileID pdmReference->GetFolderID(), //lSrcFolderID (long)m_hWnd, //lParentWnd &lErrorCode, //*plErrorCode (_bstr_t)csZielName, //bsNewName EdmAdd_Simple //lFlags ); //------------------------------ //Die weiteren Kinder ermitteln. //------------------------------ while (VARIANT_FALSE == pdmPos->IsNull) { Enumerates the files referenced by this file. IEdmReference10Ptr pdmRef = pdmReference->GetNextChild(pdmPos); Copies a file from a different folder in the vault to this folder. lRetFileID = pdmZielDir->CopyFile2( pdmRef->FileID, //lFileID pdmRef->FolderID, //lSrcFolderID (long)m_hWnd, //lParentWnd, long *plErrorCode, _bstr_t bsNewName, long lFlags) &lErrorCode, //*plErrorCode, _bstr_t bsNewName, long lFlags) (_bstr_t)csZielName, //bsNewName EdmAdd_Simple //lFlags) ); } ...Korrigiere die Referenzen... Creates a utility interface of the specified type. IEdmRawReferenceMgrPtr pdmRefMgr = pdmVault->CreateUtility(EdmUtil_RawReferenceMgr); Opens a file. VARIANT_BOOL varRetval = pdmRefMgr->Open((_bstr_t)csZiel); SAFEARRAY *pSA Get a list of all of the file references in the opened file. HRESULT hres = pdmRefMgr->GetReferences(&pSA); if (S_OK == hres) { Referenzen anpassen für alle Elemente des SafeArrays Dateipfad: Bleibt immer gleich Dateiname: 4000231160.SLDASM bzw. 4000231160_BOLZEN.SLDPRT { pdmRawRef[i].mbsIncludePath = "Auf neuen Dateipfad setzen"; E:\xxxxx EPDM\Geräte\4000231160\CAD\4000231160.SLDASM pdmRawRef[i].mbsRefName = "Auf neuen Dateinamen setzen"; 4000231160.SLDASM } } Updates the include paths for the file references. hres = pdmRefMgr->UpdateReferences(pSA); Closes the opened file. hres = pdmRefMgr->Close(); } Kopieren innerhalb des EPDM funktioniert mit Fehlermeldungen *) und ohne Referenzen (Datenkarten müssen ebenfalls noch ausgefüllt werden)
*) <262719> = <0x4023F> = The vault has the "Do not allow duplicate file names in the file vault" or "Do not allow duplicate file names with these extensions" option selected, and a file with the same name or filename extension exists in the vault
[Diese Nachricht wurde von SWX-Quäler am 11. Apr. 2017 editiert.] [Diese Nachricht wurde von SWX-Quäler am 11. Apr. 2017 editiert.] [Diese Nachricht wurde von SWX-Quäler am 11. Apr. 2017 editiert.] [Diese Nachricht wurde von SWX-Quäler am 11. Apr. 2017 editiert.] [Diese Nachricht wurde von SWX-Quäler am 11. Apr. 2017 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ulf St. Mitglied IT-Verantwortlicher ERP/PDM/CAD
Beiträge: 36 Registriert: 10.04.2017 SolidWorks 2017 SP5 SQL-Server 2008-2016
|
erstellt am: 25. Apr. 2017 22:50 <-- editieren / zitieren --> Unities abgeben: Nur für SWX-Quäler
Hallo SWX-Quäler, ich stehe evtl. vor einer ähnlichen Aufgabe, und mein Ansatz zum Erstellen der Struktur wäre die PackAndGo-API gewesen. Hast du zwischenzeitlich eine Lösung für dein Problem gefunden, um die PDM-Funktion verwenden zu können?
------------------ Mit freundlichen Grüßen Ulf St. bii.ustockburger.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SWX-Quäler Mitglied Software Developer
Beiträge: 34 Registriert: 04.07.2016 Windows 7 Professionel SP1 SOLIDWORKS Premium 2017 SP2.0 X64 Edition SOLIDWORKS PDM Professional 17.02.0063
|
erstellt am: 26. Apr. 2017 13:21 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von Ulf St.: Hallo SWX-Quäler,ich stehe evtl. vor einer ähnlichen Aufgabe, und mein Ansatz zum Erstellen der Struktur wäre die PackAndGo-API gewesen. Hast du zwischenzeitlich eine Lösung für dein Problem gefunden, um die PDM-Funktion verwenden zu können?
Hallo Ulf,
die Vorgabe (Pack and Go vs. EPDM Copy Tree/Strukturkopie) kam von unseren Konstrukteuren. Sie haben sich für EPDM Copy Tree/Strukturkopie entschieden. Leider habe ich noch keine Lösung gefunden. Hier meint ein Forist, dass Copy Tree eventuell einen Fehler hat. https://forum.solidworks.com/thread/113677
Zitat:
Just experienced this same issue. My only suggestion is switch to Pro-E. SolidWorks sucks at top down modeling because of this and many other weaknesses in this area. Very Frustrating. Can we all put in a enhancement request for this functionality. this is unacceptable behavior. In my model one of the inserted parts updated to the new master model and the reset continued to reference the old master. Took me a minute to figure out why one of my parts had updated but the other hadn't. Definitely a bug
Hier mal für Dich eine kleine Entscheidungshilfe für und wider Pack and Go Vs Copy Tree:
Using Pack and Go Vs Copy Tree with SOLIDWORKS PDM http://www.javelin-tech.com/blog/2016/05/pack-go-vs-copy-tree-solidworks-pdm/
Zitat:
Using Pack and GoPack and Go doesn’t know about PDM. It only talks to the SOLIDWORKS files themselves, and gathers its file list directly from them. This works fine outside of a vault, but in the vault we aren’t just working with files, we work with versions of files and there is no way for Pack and Go to know about that. Pack and Go doesn’t have the ability to check information within the PDM database.
SOLIDWORKS PDM Copy Tree Tool http://www.javelin-tech.com/blog/2014/07/solidworks-pdm-copy-tree/
Zitat:
SOLIDWORKS PDM Copy Tree offers the same functionality as SOLIDWORKS Pack & Go, but it contains file management tools that are built specifically for use with SOLIDWORKS PDM.
Pack and Go vs. EPDM's Copy Tree - Who Wins? https://www.3dvision.com/blog/entry/2011/05/12/pack-and-go-vs-epdms-copy-tree-who-wins.html
Zitat:
Pack and Go vs. EPDM's Copy Tree - Who Wins?When working with files outside of the vault, you have no choice -Pack and Go is the only tool you have, and it is a good tool -all the cool kids are using it. However, for copying files within SolidWorks Enterprise PDM, both tools are an option, which one should you use? Easy. Copy Tree. No question, no contest. I don't want to hear your argument for Pack and Go...your argument is bad. Copy Tree gives you: Speed Less Mistakes More Options
Ich wünsche Dir weiterhin viel Erfolg bei Deinen Vorhaben, SWX-Quäler Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ulf St. Mitglied IT-Verantwortlicher ERP/PDM/CAD
Beiträge: 36 Registriert: 10.04.2017 SolidWorks 2017 SP5 SQL-Server 2008-2016
|
erstellt am: 01. Mai. 2017 19:36 <-- editieren / zitieren --> Unities abgeben: Nur für SWX-Quäler
Hallo SWX-Quäler, vielen Dank. So wie ich das verstehe, haben die User in den aufgeführten Threads Probleme mit den Funktionen "Strukturkopie / Copy tree" und "Pack & Go", nicht mit den APIs. Die "Pack & Go-API" funktioniert aus meiner Sicht sehr gut, bis auf die Einschränkung, dass die Namen der Baugruppenkomponenten nicht aktualisiert werden. Das lässt sich aber in meinem Fall problemlos beheben, indem das kopierte Teil nach dem Hinzufügen zum Tresor automatisch geöffnet, neu aufgebaut und gespeichert wird. Zuvor wird über die "EPDM-API" die nächste freie Seriennummer ermittelt, und mit der "SwDocumentManager-API" alle notwendigen Anpassungen in den Modellen und Zeichnungen, wie z.B. das Aktualisieren der Dateieigenschaften, durchgeführt. Empfehlung von mir: Schau es dir an, denn es funktioniert und ist in relativ kurzer Zeit umsetzbar.
------------------ Mit freundlichen Grüßen Ulf St. bii.ustockburger.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|