Aangepaste eigenschappen vervangen

Is er een manier om de aangepaste eigenschappen van een artikelbestand te verwijderen en automatisch nieuwe terug te plaatsen. We hebben een aantal bestanden die niet de eigenschappen hebben die wij gebruiken (bijv. profielbestand  voor de gelaste monteur). Het doel is om de nieuwe eigenschappen in deze bestanden snel te herstellen.

We gebruiken SW 2016 Premium-versie - We hebben de MyCad-tools niet.

 

 

Hallo

Kijk naar de taakplanner? Ik weet het niet zeker, maar ik denk dat het zou moeten werken.

4 likes

Ik heb het net gecontroleerd en het zou moeten werken.

http://help.solidworks.com/2016/french/solidworks/sldworks/r_task_sched_task_sidebar.htm

1 like

Ja, u kunt bestaande eigenschappen bijwerken of nieuwe maken, maar er is geen mogelijkheid om bestaande eigenschappen te verwijderen om niet te eindigen met een belangrijke lijst met eigenschappen en onnodige velden. Hoe kan ik bestaande eigenschappen verwijderen?

U kunt de taakplanner gebruiken om uw eigenschappen te maken en te vervangen, en als u de macrorecorder gebruikt om eigenschappen te verwijderen die u niet nodig heeft. U kunt het ook starten met de planner en de betreffende bestanden kiezen.

Hallo

Als het een macro is, is hier de functie:

Dim swModel As SldWorks.ModelDoc2
Dim swModelDocExt As SldWorks.ModelDocExtension
Dim config As SldWorks.Configuration
Dim cusPropMgr As SldWorks.CustomPropertyManager
Dim lRetVal As Long
Dim ValOut As String
Dim ResolvedValOut As String
Dim wasResolved As Boolean
Dim nNbrProps As Long
Dim vPropNames As Variant
Dim vPropTypes As Variant
Dim vPropValues As Variant
Dim resolved As Variant
Dim custPropType As Long
Dim K As Long
Dim NomProperty As String

Set cusPropMgr = swModelDocExt.CustomPropertyManager("")

nNbrProps = cusPropMgr.Count
vPropNames = cusPropMgr.GetNames
For K = 0 To nNbrProps - 1
    cusPropMgr.Get2 vPropNames(K), ValOut, ResolvedValOut
    custPropType = cusPropMgr.GetType2(vPropNames(K))
    If vPropNames(K) = "Description" Then
        NomProperty = ResolvedValOut
    End If
    If vPropNames(K) = "Dessinateur" Then
        PropMgr.Delete(vPropNames(K))
    End If
Next K

De lijnen:

Als vPropNames(K) = "Beschrijving" dan
        PropertyName = OpgelostValOut
Einde als

Meet de waarde van de aangepaste eigenschap 'Beschrijving'.

De lijnen:

Als vPropNames(K) = "Tekenaar" dan
        PropMgr.Delete(vPropNames(K))
Einde als

Verwijder de aangepaste eigenschap 'Tekenaar'.

Daar moet je mee kunnen jongleren.

Vriendelijke groeten

Ok, ik zie het principe, maar op het niveau van de macro weet ik niet genoeg in VBA, om het te maken, ik heb geprobeerd om een macro aecla verwijdering van de eigenschappen op te slaan, maar het werkt niet ... De macro is bijna "leeg"


del_pte.swp

Hallo

Hier is uw gewijzigde macro met de regels om een aangepaste eigenschap ("DRAFTER" in dit geval) te verwijderen.

Vriendelijke groeten


del_pte.swp

Perfect, ik wil nog een laatste ding doen in de taakplanner, ik start de macro met "voer de aangepaste taak uit", maar kunnen we deze of die map targeten, ik wil eerst een test doen met een aantal bestanden.

Hallo

Wanneer u uw taak aanmaakt, selecteert u de map waar uw bestanden zich bevinden, zie bijgevoegde afbeelding.

Vriendelijke groeten


capture.png

Ok, om te beginnen met het maken van een nieuwe eigenschap op een map, maar om de verwijdermacro te gebruiken gebruik ik "taak uitvoeren" (zie bijgevoegde afbeelding) er zijn geen velden om naar een bepaalde map te verwijzen...


2017-09-05_15_20_52-planificateur_de_taches_solidworks.png

Ik weet niet genoeg over deze functie, maar niets weerhoudt je ervan om het in je macro te beheren door een bestand te laden met de lijst van je 3D om te verwerken. Uw macro moet dan elk bestand in SW openen, de aangepaste eigenschappen verwijderen en het vervolgens opslaan voordat u naar het volgende gaat.

Hallo

Ik had een tijdje gedacht dat het hulpprogramma "BatchProperties" van MyCad daarvoor gemaakt was, maar het is me nooit gelukt om te doen wat je wilt doen....

Want ik had dezelfde behoefte als jij...

Als iemand het gebruikt en daarin slaagt, kan het handig zijn om het aan te schaffen als je veel bestanden te verwerken hebt.

Vriendelijke groeten

Hubert

Hallo

Hier is een fragment van C#-code waarmee je kunt doen wat ik in mijn vorige bericht heb beschreven:

private SldWorks swApp;
        
private void Button2Click(object sender, EventArgs e)
{
if (swApp == null)
{
swApp = (SldWorks)Activator.CreateInstance(Type.GetTypeFromProgID("SldWorks.Application"));
swApp.Visible = true;
}

string liste = Application.StartupPath + "\\" + "liste.csv";
foreach(string line in System.IO.File.ReadAllLines(liste, System.Text.Encoding.UTF8))
{
string[] parts = line.Split(';');
char[] MyChar = {'"'};
string fichier = parts[0].TrimStart(MyChar).TrimEnd(MyChar);

ModelDoc2 Part = null;
int longstatus = 0;
int longwarnings = 0;

if (fichier.ToLowerInvariant().Contains(".sldasm"))
{
Part = ((ModelDoc2)(swApp.OpenDoc6(fichier, (int)swDocumentTypes_e.swDocASSEMBLY, 0, "", ref longstatus, ref longwarnings)));
}
else if (fichier.ToLowerInvariant().Contains(".sldprt"))
{
Part = ((ModelDoc2)(swApp.OpenDoc6(fichier, (int)swDocumentTypes_e.swDocPART, 0, "", ref longstatus, ref longwarnings)));
}
else
{
continue;
}

//Mettre la fonction de suppression des propriétés personnalisées ici

Part.Save();

swApp.CloseDoc(fichier);
}
}

Te verbeteren en te vertalen naar VBA...

Vriendelijke groeten

Bedankt voor je feedback en je uitleg, maar ik mis echt de vaardigheden om dit soort macro's te maken ... dus ik hou het liever simpel... Is het mogelijk om de macro vanuit de taakplanner te starten door een bepaalde map op te geven? In een tweede keer zal ik de nieuwe eigenschappen toevoegen via de taakplanner (dit tweede deel is ok voor mij)

Ik weet niet of dit mogelijk is, maar naar mijn mening zal de macro nog steeds alle bestanden in de map moeten analyseren die door de taakplanner als argument zouden zijn doorgegeven.

Om dit soort bewerkingen uit te voeren, weet ik niet zeker of er echt behoefte is aan de taakplanner (deze wordt alleen gebruikt om de macro op een gespreid tijdstip uit te voeren).

Vriendelijke groeten

Ok ik begrijp d. roger, maar "ac cobra 427" geeft aan dat u de macro kunt starten vanuit de taakplanner  ...   ac cobra 427  kunt u mij vertellen de procedure te volgen en hoe alleen de gewenste bestanden te selecteren (ok voor aangepaste eigenschappen, Nok om de macro te starten op sommige bestanden)

Dsl Ik heb nooit de taakplanner nodig, ik dacht dat het werkte omdat ze praten over het kunnen starten van een macro ... In het ergste geval, als je nog nooit de Mycad-tools hebt gehad, kun je 1 maand downloaden en testen denk ik...

Zie screenshots. Voer de aangepaste taak uit.


screenshot_2017-09-06-07-01-29.png

Hallo

Als u een macro wilt starten met de taakplanner, raadpleegt u:

http://help.solidworks.com/2016/french/SolidWorks/sldworks/t_Creating_a_Task_in_Run_Custom_Task_run_custom.htm

Als u de macro wilt maken die u wilt starten, raadpleegt u:

http://help.solidworks.com/2016/french/SolidWorks/sldworks/t_Creating_a_SOLIDWORKS_Macro_Template.htm?id=57b26ed5a4094bd386de49ad15179393#Pg0&ProductType=&ProductName=

Vriendelijke groeten

Anders wat is de code voor VBA om een eigenschapsregel te maken en een waarde te associëren, ik dacht erover om het met de taakplanner te doen, maar het werkt niet erg goed,  het accepteert geen lege velden (de beschrijving wordt bijvoorbeeld achteraf handmatig ingevuld door de tekenaar)