Automatyczna edycja

Witam wszystkich .

Jestem użytkownikiem oprogramowania z istniejącymi  (historycznymi) profilami.

Ze swojej strony uważam je za nieco "staromodne".

Chciałbym zautomatyzować kilka rzeczy:

  • Automatyczna aktualizacja przeglądarki, na przykład o nazwę sesji systemu Windows. (Environ("NAZWA UŻYTKOWNIKA"))
  • Automatyczne tworzenie specyficznego dla konfiguracji parametru o nazwie "Kod produktu"
  • I 3 rzecz, w niektórych przypadkach, gdy bierzemy istniejącą część jako istniejącą bazę, chciałbym zastąpić datę w kartuszu , który wywołujący na parametr daty utworzenia pliku, przez aktualną datę.

Czy masz przykłady kodu lub praktyczne rozwiązania?

 

Z góry dziękuję.

 

Jey Jey powiedział:

Aby zaktualizować daty, wprowadziłem do kasety datę ostatniego wydruku

W ten sposób plan zawsze ma odpowiednią datę dnia.

Co do reszty, jeśli masz narzędzia mycadtools, może to być przydatne

5 polubień

Witam

 

Jeśli chodzi o aktualną datę, umieściłem jako link do adnotacji "SW-Date Courte(ShortDate)", czyli aktualną datę, kiedy ją otwierasz. Ale jest też długa randka itp...

 

Mam nadzieję, że to może pomóc

2 polubienia

niezłe jako rozwiązanie Bart☺

Dziękuję

Jeśli chodzi o edycję swojego imienia i nazwiska w kartridżu,

Tę ostatnią musisz edytować, dodać notatkę, która będzie w miejscu nazwiska autora w tabelce rysunkowej, zastosować właściwość do tej notatki. Utwórz właściwość dla pliku, przypisz nazwę do tej właściwości, w poniższym przykładzie jest to "Sesja", wpisz "text" i ustaw wartość $PRP: "Ostatnio zapisane przez", kliknij ok.

 

Na liście Link to Property (Połącz z właściwością) po prostu wybierz właściwość Session, a notatka zmieni się na nazwę użytkownika komputera.

 

Otóż to


tuto_mise_a_jour_auto_de_lauteur.png

Witam

Ustawiłem formularz właściwości niestandardowych, data jest wybierana w małym kalendarzu bardzo praktycznym, nazwiska desinnatorów / weryfikatorów / zatwierdzających są wybierane na listach rozwijanych, wszystko aż do indeksu C, aby móc szybko rozwijać stare plany. Reszta jest wykonywana automatycznie, nazwy planów = nazwy plików, ....

Ta metoda pozwala szybko skompletować wszystkie wkłady wszystkich arkuszy w ten sam sposób, a więc, aby mieć różne arkusze, musiałem zrobić kasetę 3D i trzeba żonglować warstwami, aby ukryć niektóre niestandardowe właściwości. Nie musimy jednak pracować nad wieloma folio we własnym zakresie, więc ta metoda jest naprawdę przydatna, ponieważ regularnie edytujemy stare plany.

2 polubienia

P.Guyader : Dziękuję, ale mam już kartridż, który aktualizuje się automatycznie.

To, co zamierzam zmienić, to imię i nazwisko drugiej osoby, która znajduje się we właściwościach dokumentu.

Jeśli to możliwe za pomocą makra, wszystko byłoby dobrze.

 

A.Leblanc : Czy ma Pan/Pani jakieś przykłady?

Jey Jey powiedział:

Witam ponownie

Nikt nie ma rozwiązania, aby dodać konkretny parametr do konfiguracji nazwy 'Kod Produktu'?

Ani na datę?

 

Jey Jey powiedział:

Cze wszystkim.

Wracam z vancance, ożywiam problem.

  • Automatyczna aktualizacja przeglądarki, na przykład o nazwę sesji systemu Windows. (Environ("NAZWA UŻYTKOWNIKA")).
    - Wersja "ostatniego użytkownika" jest dobra, ale mi nie odpowiada.
    - Chciałbym mieć możliwość aktualizacji pola za pomocą 1 kliknięcia
  • Automatyczne tworzenie specyficznego dla konfiguracji parametru o nazwie "Kod produktu"
    zwłaszcza, jeśli używam utworów historycznych.
  • W przypadku aktualizacji daty ustawienie "data drukowania" nie jest złe, ale nie działa historycznie.
    A.Leblanc : Jeśli masz przykład, który mógłbym zaadaptować, to byłoby fajnie.

Dziękuję Wam wszystkim 

Witam
Podobnie jak a.leblanc, ustawiłem formularz właściwości niestandardowych w postaci zewnętrznego programu wywoływanego za pomocą makra, ten formularz może być również makrem bezpośrednio w zależności od jego złożoności.
Ten formularz umożliwia utworzenie wszystkich niestandardowych właściwości w nowym 3D, ale także pobranie wszystkich właściwości istniejącego 3D i zmodyfikowanie ich w razie potrzeby.
Stworzyłem kilka niestandardowych właściwości (w moim przypadku około trzydziestu), a w szczególności autora, twórcę wersji (niekoniecznie jest on pierwotnym autorem), datę utworzenia, datę wersji, oznaczenie wersji, oznaczenie itp. Dostaję też materiał, nazwę pliku (w moim przypadku identyczną z kodem artykułu), masę itp. i oczywiście napełniam mój wkład 2D tymi właściwościami.
Właściwości Author i ReviewCreator są oczywiście równe nazwie użytkownika komputera, daty utworzenia i zmiany są datami dnia (tylko jeśli są puste w momencie ładowania makra dla daty utworzenia) i można je edytować za pomocą małego kalendarza (do zarządzania historią lub kopiami części).
Aby zarządzać niestandardowymi właściwościami przez API, musisz przejść do http://help.solidworks.com/2016/English/api/sldworksapi/SOLIDWORKS.Interop.sldworks~SOLIDWORKS.Interop.sldworks.IConfiguration~CustomPropertyManager.html , wszystko inne to tylko programowanie i testowanie w zależności od tego, co chcesz zrobić.

Pozdrowienia


capture-dr.jpg
2 polubienia

Witam

Wypełniam wszystko w pokoju za pomocą formularza, a kiedy tworzę mojego MEP-a, jest on wypełniany automatycznie dzięki linkom utworzonym między nimi.

1 polubienie

Aby nawiązywać do mojego poprzedniego postu, oto 3 przykłady funkcji (w C#) do tworzenia, pobierania i usuwania właściwości niestandardowych, uważaj, są to tylko przykłady z linkami w polach tekstowych z formularza użytkownika:

// Exemple de fonction pour créer les propriétés personnalisées
private void CreerProprietes()
{
try
{
ModelDoc2 swModel = null;
swModel = ((ModelDoc2)(Program.swapp.ActiveDoc));
CustomPropertyManager PropMgr = null;
CustomPropertyManager PropMgr0 = null;
ConfigurationManager swConfigMgr;
Configuration swConfig;
swConfigMgr = swModel.ConfigurationManager;
swConfig = swConfigMgr.ActiveConfiguration;

int nb = 3;
string[] PropName = new string[nb];
string[] PropVal = new string[nb];

int i = 0;

PropName[i] = CodeArticle;
PropVal[i] = textBox1.Text.Trim();
i++;

PropName[i] = CreateDate;
if (textBox9.Text == "")
{
PropVal[i] = System.DateTime.Today.ToShortDateString();
}
else
{
PropVal[i] = textBox9.Text.Trim();
}
i++;

PropName[i] = Dessinateur;
if (textBox19.Text == "")
{
PropVal[i] = System.Environment.UserName.ToUpperInvariant();
}
else
{
PropVal[i] = textBox19.Text;
}
i++;

PropMgr0 = swModel.Extension.get_CustomPropertyManager("");

int value = 0;
for (int m = 0; m <= (nb - 1); m++)
{
value = PropMgr0.Add2(PropName[m], (int)swCustomInfoType_e.swCustomInfoText, PropVal[m]);
}
}
catch (Exception)
{
MessageBox.Show("Erreur lors de la création des propriétés personnalisées, Contactez l'administrateur.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Stop);
}
}

// Exemple de fonction pour récupérer les propriétés personnalisées
private void ObtenirProprietes()
{
try
{
ModelDoc2 swModel = null;
swModel = ((ModelDoc2)(Program.swapp.ActiveDoc));
CustomPropertyManager PropMgr = null;
ConfigurationManager swConfigMgr;
Configuration swConfig;
swConfigMgr = swModel.ConfigurationManager;
swConfig = swConfigMgr.ActiveConfiguration;

int nNbrProps;
int j;
object[] vPropNames;
string valOut;
string resolvedValOut;
int custPropType;

PropMgr = swConfig.CustomPropertyManager;

nNbrProps = PropMgr.Count;

vPropNames = (object[])PropMgr.GetNames();

for (j = 0; j <= nNbrProps - 1; j++)
{
PropMgr.Get2(vPropNames[j].ToString(), out valOut, out resolvedValOut);
custPropType = PropMgr.GetType2(vPropNames[j].ToString());

if (vPropNames[j].ToString() == CodeArticle)
{
textBox1.Text = resolvedValOut.ToString();
}
if (vPropNames[j].ToString() == CreateDate)
{
textBox9.Text = resolvedValOut.ToString();
}
if (vPropNames[j].ToString() == Dessinateur)
{
textBox19.Text = resolvedValOut.ToString();
}
}
}
catch (Exception)
{
MessageBox.Show("Erreur lors de l'obtention des propriétés personnalisées, Contactez l'administrateur.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Stop);
}
}

// Exemple de fonction pour effacer toutes les propriétés personnalisées
private void EffacerProprietes()
{
try
{
ModelDoc2 swModel;
swModel = ((ModelDoc2)(Program.swapp.ActiveDoc));
CustomPropertyManager PropMgr;
ConfigurationManager swConfigMgr;
Configuration swConfig;
swConfigMgr = swModel.ConfigurationManager;
swConfig = swConfigMgr.ActiveConfiguration;
PropMgr = swConfig.CustomPropertyManager;

int nNbrProps;
object[] vPropNames;

nNbrProps = PropMgr.Count;

vPropNames = (object[])PropMgr.GetNames();

int h;
for (h = 0; h <= nNbrProps - 1; h++)
{
object[] configNameArr = null;
string configName = null;
int j = 0;
configNameArr = (object[])swModel.GetConfigurationNames();
for (j = 0; j <= configNameArr.GetUpperBound(0); j++)
{
configName = (string)configNameArr[j];
swConfig = (Configuration)swModel.GetConfigurationByName(configName);
PropMgr = swModel.Extension.get_CustomPropertyManager(configName);
PropMgr.Delete(vPropNames[h].ToString());
}
PropMgr = swModel.Extension.get_CustomPropertyManager("");
PropMgr.Delete(vPropNames[h].ToString());
}
return;
}
catch (Exception)
{
MessageBox.Show("Erreur lors de l'effacement des propriétés personnalisées, Contactez l'administrateur.", this.Text, MessageBoxButtons.OK, MessageBoxIcon.Stop);
}
}

Pozdrowienia

Dziękuję.

Masz dla mnie całą masę tropów do naśladowania.

Zamierzam przyjrzeć się temu wszystkiemu i spróbować coś z tego wyciągnąć.

W razie potrzeby skontaktuję się z Tobą.

 

Dziękuję

 

Jey Jey powiedział:

Witam

SmartPropeties może być początkiem rozwiązania. Będziesz mógł również zarządzać właściwościami zgodnie z konfiguracją swojej części/zespołu, zgodnie z żądaniem.

2 polubienia