Ersetzen von benutzerdefinierten Eigenschaften

Gibt es eine Möglichkeit, die benutzerdefinierten Eigenschaften einer Teiledatei zu löschen und neue automatisch wiederherzustellen? Wir haben eine Reihe von Dateien, die nicht über die von uns verwendeten Eigenschaften verfügen (z. B. Profildatei  für den geschweißten Mechaniker). Ziel ist es, die neuen Eigenschaften in diesen Dateien schnell wiederherzustellen.

Wir verwenden die SW 2016 Premium-Version - Wir haben die MyCad-Tools nicht.

 

 

Hallo

Schauen Sie sich den Aufgabenplaner an? Ich bin mir nicht sicher, aber ich denke, es sollte funktionieren.

4 „Gefällt mir“

Ich habe gerade nachgesehen und es sollte funktionieren.

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

1 „Gefällt mir“

Ja, es ermöglicht Ihnen, vorhandene Eigenschaften zu aktualisieren oder neue zu erstellen, aber es gibt keine Möglichkeit, vorhandene Eigenschaften zu löschen, um nicht mit einer wichtigen Liste von Eigenschaften und unnötigen Feldern zu enden. Wie kann ich vorhandene Immobilien löschen?

Sie können den Taskplaner verwenden, um Ihre Eigenschaften zu erstellen und zu ersetzen, und wenn Sie die Makroaufzeichnung verwenden, um Eigenschaften zu löschen, die due nicht benötigt. Sie können es auch mit dem Scheduler starten und die betreffenden Dateien auswählen.

Hallo

Wenn per Makro, hier ist die Funktion:

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

Die Zeilen:

Wenn vPropNames(K) = "Beschreibung", dann
        PropertyName = AufgelöstValOut
Ende, wenn

Messen Sie den Wert der benutzerdefinierten Eigenschaft "Beschreibung".

Die Zeilen:

Wenn vPropNames(K) = "Verfasser der Stellungnahme", dann
        PropMgr.Delete(vPropNames(K))
Ende, wenn

Löschen Sie die benutzerdefinierte Eigenschaft "Draftsman".

Das muss man unter einen Hut bringen können.

Herzliche Grüße

Ok, ich sehe das Prinzip, aber auf der Ebene des Makros weiß ich nicht genug in VBA, um es zu erstellen, habe ich versucht, ein Makro zu speichern, das die Eigenschaften löscht, aber es funktioniert nicht ... Das Makro ist fast "leer"


del_pte.swp

Hallo

Hier ist Ihr geändertes Makro mit den Zeilen zum Löschen einer benutzerdefinierten Eigenschaft ("DRAFTER" in diesem Fall).

Herzliche Grüße


del_pte.swp

Perfekt, ich möchte noch eine letzte Sache im Aufgabenplaner tun, ich starte das Makro mit "Benutzerdefinierte Aufgabe ausführen", aber können wir diesen oder jenen Ordner anvisieren, ich möchte zuerst einen Test mit einigen der Dateien durchführen.

Hallo

Wenn Sie Ihre Aufgabe erstellen, wählen Sie den Ordner aus, in dem sich Ihre Dateien befinden, siehe angehängtes Bild.

Herzliche Grüße


capture.png

Ok, um die Erstellung einer neuen Eigenschaft in einem Ordner zu starten, aber um das Löschmakro zu verwenden, verwende ich "Aufgabe ausführen" (siehe beigefügtes Bild) es gibt keine Felder, die auf einen bestimmten Ordner verweisen ...


2017-09-05_15_20_52-planificateur_de_taches_solidworks.png

Ich weiß nicht genug über diese Funktion, aber nichts hindert Sie daran, sie in Ihrem Makro zu verwalten, indem Sie eine Datei laden, die die Liste Ihrer zu verarbeitenden 3D-Dateien enthält. Ihr Makro muss dann jede Datei in SW öffnen, die benutzerdefinierten Eigenschaften löschen und dann speichern, bevor Sie mit der nächsten fortfahren.

Hallo

Ich hatte eine Weile gedacht, dass das Dienstprogramm "BatchProperties" von MyCad dafür gemacht ist, aber ich habe es nie geschafft, das zu tun, was Sie tun möchten....

Denn ich hatte das gleiche Bedürfnis wie du...

Wenn jemand es verwendet und erfolgreich ist, kann es nützlich sein, es zu erwerben, wenn Sie viele Dateien verarbeiten müssen.

Herzliche Grüße

Hubert

Hallo

Hier ist ein Codeausschnitt aus C#, mit dem Sie das tun können, was ich in meinem vorherigen Beitrag beschrieben habe:

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);
}
}

Zu verbessern und in VBA zu übersetzen...

Herzliche Grüße

Vielen Dank für Ihr Feedback und Ihre Erklärungen, aber mir fehlen wirklich die Fähigkeiten, um diese Art von Makro zu erstellen ... also halte ich es lieber einfach... Ist es möglich, das Makro über den Taskplaner zu starten, indem ein bestimmter Ordner angegeben wird? In einem zweiten Mal werde ich die neuen Eigenschaften über den Taskplaner hinzufügen (dieser zweite Teil ist für mich ok)

Ich weiß nicht, ob dies möglich ist, aber meiner Meinung nach muss das Makro immer noch alle Dateien analysieren, die in dem Ordner vorhanden sind, der vom Taskplaner als Argument übergeben worden wäre.

Für diese Art von Operation bin ich mir nicht sicher, ob der Taskplaner wirklich erforderlich ist (er wird nur verwendet, um das Makro zu einem gestaffelten Zeitpunkt auszuführen).

Herzliche Grüße

Ok, ich verstehe d. Roger, aber "ac cobra 427" zeigt an, dass Sie das Makro vom Taskplaner  aus starten können ...   AC Cobra 427  Können Sie mir sagen, wie ich vorgehen muss und wie ich nur die gewünschten Dateien auswähle (ok für benutzerdefinierte Eigenschaften, Nok, um das Makro für einige Dateien zu starten)

Dsl Ich habe den Taskplaner nie gebraucht, ich dachte, es funktioniert, weil sie davon sprechen, ein Makro starten zu können... Im schlimmsten Fall, wenn Sie die Mycad-Tools noch nie hatten, können Sie sie herunterladen und 1 Monat lang testen, denke ich...

Siehe Screenshots. Führen Sie die benutzerdefinierte Aufgabe aus.


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

Hallo

Informationen zum Starten eines Makros mit dem Taskplaner finden Sie unter:

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

Informationen zum Erstellen des zu startenden Makros finden Sie unter:

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

Herzliche Grüße

Ansonsten, wie sieht der Code für VBA aus, um eine Eigenschaftsgrenze zu erstellen und einen Wert zuzuordnen, ich habe darüber nachgedacht, dies mit dem Aufgabenplaner zu tun, aber es funktioniert nicht sehr gut,  es akzeptiert keine leeren Felder (z. B. wird die Beschreibung anschließend vom Zeichner manuell ausgefüllt)