Ik richt mij tot u met een vraag met betrekking tot Enterprise PDM.
In het bedrijf waar ik nu 1 jaar werk, is Enterpise PDM 5 jaar geleden geïmplementeerd zonder dat er enige training of bewustwording is gedaan bij de gebruikers. Iedereen moest erin slagen om PDM te leren gebruiken.
Vandaag bevinden we ons met een kluis die wreed vol raakt en net zo veel vertraagt. De vulling heeft deels te maken met de mogelijkheid om duplicaten in de kluis op te slaan. Deze dubbele onderdelen zijn voornamelijk 3D van commerciële onderdelen die, door een slechte gewoonte (naar mijn mening) worden opgeslagen in de zakelijke mappen in plaats van in een gedeelde bibliotheek... [PERSOONLIJKE REFLECTIE] Ik kon me niet voorstellen dat we nog zo zouden kunnen werken! [/PERSOONLIJKE REFLECTIE]
Mijn vraag is de volgende:
Ik wil graag alle duplicaten opsommen. Is er een tool, een methode of wat dan ook waarmee ik alle duplicaten (identieke namen en/of bestandstypen ), hun locatie in de kluis en de assemblages waarin ze worden gebruikt, kan opsommen?
Native is er, behalve via het zoekformulier, geen directe manier om duplicaten op te sporen. Dus het opsommen van hun use case gebeurt ook in deze interface.
Om het zoeken en analyseren te automatiseren, is het mogelijk om Excel-macro's te gebruiken, maar het moeilijkste is om de criteria te vinden die duplicaten identificeren.
Als de bestandsnaam identiek is, is het gemakkelijk, maar als je dan met de eigenschappen van de bestanden moet spelen om overeenkomsten te vinden, wordt het een beetje complexer.
Voor het antwoord op de persoonlijke reflectie is dit helaas het geval in veel bedrijven (voornamelijk KMO-profiel).
Als ik het goed begrijp, ben ik niet alleen een computerwetenschapper die zeer bedreven is met Excel-macro's om in een database te snuffelen die niet op Excel staat, maar moet ik gewoon de 514 GB van de kluis doorzoeken?
Het is niet erg ingewikkeld, ik kan je stukjes code geven voor het analyseren van het gebruik van dubbele bestanden.
Aan de andere kant is er helaas niets a posteriori waarmee we kunnen controleren op duplicaten. De enige configuratie voor toekomstige bestanden is om dubbele namen in de hele database te voorkomen, deze kan worden ingesteld met de opties voor bestandstypen in de beheerinterface. Dit weerhoudt een slim persoon er echter niet van om een duplicaat met een andere naam te registreren.
De andere manier is om het kopiëren van bepaalde bestanden/mappen te verbieden bij gebruik van de boomkopieerfuncties in de kluis, maar aan de andere kant is deze instelling niet van toepassing als iemand de compositie doorloopt om mee te nemen in Solidworks (ik heb Solidworks gevraagd om een evolutie voor dit onderwerp).
Je kunt het altijd proberen bij je reseller om te zien of hij geen tool beschikbaar heeft om de klus te klaren, maar ik ben bang dat het aan jou is om je stukje code te maken (ik ben bereid om te helpen als dat nodig is) omdat het over het algemeen sterk afhankelijk is van de "klant" (in dit geval je bedrijf).
Ik wil wel dat je stukjes code proberen rond te komen en ik kan een beroep op je doen als ik het echt nodig heb en als er echt een beetje tijd voor me wordt uitgetrokken om dit werk te doen... Hartelijk dank voor uw voorstel in ieder geval.
In ieder geval heb ik bij het analyseren van de situatie de indruk dat ik voor een "menselijk" probleem sta, dat ligt in de onwil om zijn werkgewoonten te veranderen en zijn hersens een beetje te moeten pijnigen als men wordt geconfronteerd met het feit dat een bestand dat men in de kluis wil opslaan al bestaat onder dezelfde naam... Ik heb al geprobeerd het vakje aan te vinken dat duplicaten in de beheerder verbiedt en de situaties dienden zich snel aan!! Gezien de permanente urgentie om verder te gaan met de projecten, moest ik terugkrabbelen...
Dim i As Long
Dim j As Long
Dim k As Long
Dim vault As EdmVault5
Dim folder As IEdmFolder6
Dim varEnum As IEdmEnumeratorVariable5
Dim valueRes As Variant
Dim file As IEdmFile6
Dim ref As IEdmReference6
Dim pos As IEdmPos5
Sub AnalyseHisto()
i = 2
j = 2
k = 2
Set vault = New EdmVault5
vault.LoginAuto "xxx", 0 'Remplacer xxx par le nom du coffre sans le C:\
Do While Worksheets("Feuil1").Cells(i, 2) <> ""
If Worksheets("Feuil1").Cells(i, 3) = "" Then i = i + 1
Worksheets("Feuil2").Cells(k, 1) = Worksheets("Feuil1").Cells(i, 1)
Worksheets("Feuil2").Cells(k, 2) = Worksheets("Feuil1").Cells(i, 2)
Worksheets("Feuil2").Cells(k, 3) = Worksheets("Feuil1").Cells(i, 3)
Set folder = vault.GetFolderFromPath(Worksheets("Feuil2").Cells(k, 1))
Set file = vault.GetFileFromPath(Worksheets("Feuil2").Cells(k, 1) & Worksheets("Feuil2").Cells(k, 2))
Set ref = file.GetReferenceTree(folder.ID, Worksheets("Feuil2").Cells(k, 3))
Set pos = ref.GetFirstParentPosition(Worksheets("Feuil2").Cells(k, 3), False)
If Not pos.IsNull Then j = k
While Not pos.IsNull
Set ref = ref.GetNextParent(pos)
Worksheets("Feuil2").Cells(j, 4) = ref.Name
Worksheets("Feuil2").Cells(j, 5) = ref.folder.LocalPath
Worksheets("Feuil2").Cells(j, 6) = ref.VersionRef
j = j + 1
k = j - 1
Wend
k = k + 1
i = i + 1
Loop
End Sub
Om uit te leggen hoe het werkt, dient blad 1 als een database waarin ik de bestanden heb die ik wil analyseren, blad 2 stelt me in staat om het resultaat van de analyse van de gebruiksscenario's van het bestand weer te geven.
De gegevens zijn als volgt verdeeld:
Kolom A: Volledig pad van type C:\xxx\ (vergeet de laatste \ niet)
Kolom B: Naam van het bestand met extensie
Kolom C: Versienummer van het gescande bestand (optioneel)
Als u het versienummer niet wilt gebruiken, kunt u het criterium Werkbladen ("Blad2") verwijderen. Cellen (k, 3) van Set ref en Set pos en vervangen door 0 krijgt de nieuwste versie van het geanalyseerde bestand.
Uw antwoord doet me twijfelen aan de duidelijkheid van mijn verzoek in feite (of mijn begrip van het antwoord).
Ik ben niet op zoek naar een dubbele zoekopdracht in de lijst van een Excel-bestand ... Ik ben op zoek naar CAD-bestanden met dezelfde naam (die ik niet ken) in de kluis van mijn Enterprise PDM (gekoppeld aan Solidworks).
U kunt de Epdm-zoekfunctie gebruiken om uw zoekopdracht te starten op alle bestanden waarvan de naam de tekst .sld bevat, vervolgens exporteert u dit resultaat in csv om het uiteindelijk in Excel te openen.
Hallo, ik heb een vraag die me stoort. Zodra je de duplicaten hebt gevonden, verwijder je ze! Ja??? En wanneer u een set opent waarin een van de verwijderde duplicaten is gebruikt, moet u het pad in elk van hen terugplaatsen!!
Ik denk dat het het beste is om te laten wat er is gedaan, maar vanaf nu moet je de optie "onmogelijk om duplicaten te archiveren" (of gelijkwaardig) aanvinken.
Hierdoor raak je de oude assemblages niet aan en "herstel" je het probleem.
@G. : Bij ons, zodra een duplicaat wordt gedetecteerd, hernoemen we het naar xxx-doublon om de oude assemblageversies niet op te blazen, maar we zorgen er ook voor dat het bestand niet meer bruikbaar is zodat we gebruikers dwingen het bestand bij te werken met de juiste link (als je eindigt met een tekst in plaats van een schroef, moet je intrekken algemeen). Omdat onze gebruikers de neiging hebben om niet op te letten of ze de nieuwste versie laden of niet, werkt het redelijk goed.
@JMo: Voor het zoeken via macro en analyse kun je je hierop baseren:
Sub Main()
Const cCoffre = "C:\xxx\"
Set vault = New EdmVault5
vault.LoginAuto "xxx", 0
Set folder = vault.GetFolderFromPath(cCoffre)
i = 2
Call Search_File
Call Traitement
End Sub
Sub Search_File()
Set Search = vault.CreateSearch
Search.StartFolderID = folder.ID
Search.FindFolders = False
Search.filename = "" 'Ici, renseigner soit une extension particulière soit rien mais du coup la recherche va sortir tout le contenu du coffre puisque le dossier correspond à la racine (à chnager dans Set folder du module main)
End Sub
Sub Traitement()
Set result = Search.GetFirstResult
While Not result Is Nothing
Set file = vault.GetFileFromPath(result.Path)
Cells(i, 1) = Left(result.Path, InStrRev(result.Path, "\"))
Cells(i, 2) = file.Name
Set result = Search.GetNextResult
i = i+1
DoEvents
Wend
End Sub
Zoals het er nu uitziet, schrijft de macro voor elk gevonden bestand in kolom A de map, in kolom B de bestandsnaam met extensie.
U kunt de resultaten van de bestandsnaam opslaan in een array-variabele en vervolgens wat bewerkingen uitvoeren om de duplicaten te vinden. Anders kunnen formules in Excel voldoende zijn. Als u andere analyses moet doorlopen om duplicaten te identificeren (zoals een referentie of een perfect identieke aanduiding), moet u een extractie van de bestanden doorlopen, de eigenschappen van kaartvariabelen herstellen en vervolgens een vergelijkende analyse uitvoeren.
@G.: Het doel van mijn lijst van duplicaten met hun use cases is om direct te kunnen targeten in welke assemblages elk duplicaat wordt gebruikt. Het idee is daarom, voor zover mogelijk, om elke assembly te openen en de koppelingen en beperkingen opnieuw uit te voeren met de versie van het bestand die correct in de bibliotheek is opgeslagen, om vervolgens het duplicaat te verwijderen. Natuurlijk is pragmatisme vereist, want het zou helemaal gek zijn om tijd te verspillen aan het maken van deze wijzigingen als ik bijvoorbeeld 300 use cases vind! ;-)
Ook wij worden met dit probleem van duplicatie geconfronteerd, vooral bij commerciële stukken die we boekenkasten noemen.
Onze kofferbak is ook 5 jaar oud en het klopt dat hij super snel vol zit. Ik heb regels opgelegd, die niet altijd goed worden geaccepteerd. Maar ik denk dat het belangrijk is om een gemeenschappelijke methodologie te hebben om vooruit te komen. De kritiek moet constructief zijn, maar het moet in 2 richtingen zijn tussen de ontwerpers en de admin.
Ik ben het eens met G. en Cyril.f, het is essentieel om de optie in te stellen om de archivering van duplicaten te weigeren.
Een procedure die je kunt instellen en die bij ons heel goed werkt, is wanneer je een duplicaat tegenkomt:
Identificeer het dubbele bestand en het officiële bestand. (er moeten vaak offers worden gebracht, en dit is moeilijk te horen voor de ontwerper die het duplicaat heeft gearchiveerd) hetzij door anterioriteit of door de meest gebruikte of de gevalideerde....
Wijzig de status -> VEROUDERD (alleen de groep BIBLIOTHECARIS)
Wijzig de naam van het bestand met de toevoeging van een voorvoegsel -> Afgeschaft - .........
Lege gegevenskaarten om ze te " vergeten " (vermijd het te zien verschijnen in een zoekopdracht)
En zet hem in het rood zodat hij zichtbaar is in de assemblage om deze eventueel te vervangen wanneer je een hoesje kopieert om deze op dat moment te vervangen.
Je moet nooit een bestand verwijderen omdat je grote problemen krijgt met je collega's... ;)
Mijn advies, laat het verleden voor wat het is en richt je op nieuwe business. Het begin zal moeilijk zijn, maar na verloop van tijd zul je aan productie winnen. KOP OP.
Vandaag de dag willen we onze blauwdruk onderdelen standaardiseren. En ik zoek naar een manier om de ontwerper te waarschuwen dat hij een duplicaat ontwerpt. Ik weet dat er tools zijn die de geometrie van 3D analyseren. Heeft u dit soort tools al geïmplementeerd?