Zastępowanie właściwości niestandardowych

Czy istnieje sposób na usunięcie niestandardowych właściwości pliku części i automatyczne wstawienie nowych. Posiadamy szereg plików, które nie posiadają właściwości, których używamy (np. plik profilu  dla spawanego mechanika). Celem jest szybkie przywrócenie nowych właściwości w tych plikach.

Korzystamy z wersji SW 2016 Premium - nie posiadamy narzędzi MyCad.

 

 

Witam

Spójrz na harmonogram zadań? Nie jestem pewien, ale myślę, że powinno się udać.

4 polubienia

Właśnie sprawdziłem i powinno działać.

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

1 polubienie

Owszem, pozwala na aktualizację istniejących właściwości lub tworzenie nowych, ale nie ma możliwości usunięcia istniejących właściwości, aby nie skończyć z ważną listą właściwości i niepotrzebnymi polami. Jak mogę usunąć istniejące obiekty?

Za pomocą Harmonogramu zadań będzie można tworzyć i zamieniać właściwości, a jeśli używasz rejestratora makr, usuwać właściwości, które nie są potrzebne. Możesz także uruchomić go za pomocą harmonogramu i wybrać pliki, o których mowa.

Witam

Jeśli przez makro, oto funkcja:

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

Linie:

Jeśli vPropNames(K) = "Opis" to
        PropertyName = ResolvedValOut
Zakończ jeżeli:

Zmierz wartość właściwości niestandardowej "Opis".

Linie:

Jeśli vPropNames(K) = "Kreślarz" Następnie
        PropMgr.Delete(vPropNames(K))
Zakończ jeżeli:

Usuń właściwość niestandardową "Kreślarz".

Musisz być w stanie to pogodzić.

Pozdrowienia

Ok, widzę zasadę, ale na poziomie makra nie znam się na tyle w VBA, aby je stworzyć, próbowałem zapisać makro aecla usunięcie właściwości ale to nie działa... Makro jest prawie "puste"


del_pte.swp

Witam

Oto zmodyfikowane makro z liniami do usunięcia właściwości niestandardowej (w tym przypadku "DRAFTER").

Pozdrowienia


del_pte.swp

Idealnie, chcę zrobić ostatnią rzecz w harmonogramie zadań, uruchamiam makro za pomocą "uruchom zadanie niestandardowe", ale czy możemy kierować się do tego lub innego folderu, najpierw chcę zrobić test z niektórymi plikami.

Witam

Podczas tworzenia zadania wybierasz folder, w którym znajdują się Twoje pliki, patrz załączony obraz.

Pozdrowienia


capture.png

Ok, aby rozpocząć tworzenie nowej właściwości w folderze, ale aby użyć makra usuwania używam "execute task" (patrz załączony obrazek) nie ma pól wskazujących na konkretny folder...


2017-09-05_15_20_52-planificateur_de_taches_solidworks.png

Nie wiem wystarczająco dużo o tej funkcji, ale nic nie stoi na przeszkodzie, aby zarządzać nią w makrze, ładując plik zawierający listę Twojego 3D do przetworzenia. Twoje makro musi następnie otworzyć każdy plik w oprogramowaniu, usunąć niestandardowe właściwości, a następnie zapisać go przed przejściem do następnego.

Witam

Przez jakiś czas myślałem, że narzędzie "BatchProperties" MyCad zostało stworzone do tego, ale nigdy nie udało mi się zrobić tego, co chcesz zrobić....

Bo miałem tę samą potrzebę co ty...

Jeśli ktoś go użyje i odniesie sukces, może być przydatne jego zdobycie, jeśli masz dużo plików do przetworzenia.

Pozdrowienia

Hubert

Witam

Oto fragment kodu C#, który pozwala zrobić to, co opisałem w moim poprzednim poście:

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

Do ulepszenia i przełożenia na VBA...

Pozdrowienia

Dziękuję za opinie i wyjaśnienia, ale naprawdę brakuje mi umiejętności, aby zrobić tego typu makro ... więc wolę zachować prostotę... Czy możliwe jest uruchomienie makra z harmonogramu zadań, określając konkretny folder? Za drugi raz dodam nowe właściwości za pomocą harmonogramu zadań (ta druga część jest dla mnie ok)

Nie wiem, czy jest to możliwe, ale moim zdaniem makro nadal będzie musiało przeanalizować wszystkie pliki znajdujące się w folderze, które zostałyby przekazane jako argument przez harmonogram zadań.

Aby tego typu operacja została wykonana, nie jestem pewien, czy naprawdę istnieje potrzeba stosowania harmonogramu zadań (służy on tylko do uruchamiania makra w rozłożonym w czasie).

Pozdrowienia

Ok, rozumiem d. roger, ale "ac cobra 427" wskazuje, że możesz uruchomić makro z harmonogramu zadań  ...   ac cobra 427  czy możesz mi powiedzieć procedurę, którą należy wykonać i jak wybrać tylko żądane pliki (ok dla właściwości niestandardowych, Nok, aby uruchomić makro na niektórych plikach)

Dsl Nigdy nie potrzebowałem harmonogramu zadań, myślałem, że działa, ponieważ mówią o możliwości uruchomienia makra... W najgorszym przypadku, jeśli nigdy nie miałeś narzędzi Mycad, możesz pobrać i testować przez 1 miesiąc, myślę, że...

Zobacz zrzuty ekranu. Uruchom zadanie niestandardowe.


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

Witam

Aby uruchomić makro za pomocą Harmonogramu zadań, zobacz:

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

Aby utworzyć makro do uruchomienia, zobacz:

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

Pozdrowienia

W przeciwnym razie, jaki jest kod dla VBA, aby utworzyć linię właściwości i skojarzyć wartość, myślałem o zrobieniu tego za pomocą planera zadań,  ale nie działa to zbyt dobrze, nie akceptuje pustych pól (np. opis zostanie później wypełniony ręcznie przez kreślarza)