Automatisch bewerken

Hallo allemaal .

Ik ben een SW gebruiker met bestaande  (geschiedenis) profielen.

Van mijn kant vind ik ze een beetje 'ouderwets'.

Ik wil graag een aantal zaken automatiseren:

  • Automatische update van de browser, bijvoorbeeld met de naam van de Windows-sessie. (Environ("GEBRUIKERSNAAM"))
  • Automatische aanmaak van een configuratiespecifieke parameter van de naam 'Productcode'
  • En 3e ding, in sommige gevallen waarin we een bestaand onderdeel als een bestaande basis nemen, zou ik de datum in de cartouche die aanroeper op de parameter van de datum van aanmaak van het bestand, willen vervangen door de huidige datum.

Heeft u codevoorbeelden of praktische oplossingen?

 

Bij voorbaat dank.

 

Jey 

Om de datums bij te werken, heb ik in mijn cartridge de datum van de laatste afdruk ingevoerd

Op die manier heeft het plan altijd de juiste datum van de dag.

Voor de rest, als je de mycadtools-tools hebt, kan het handig zijn

5 likes

Hallo

 

Wat betreft de huidige datum, ik heb als een eigendomslink naar de annotatie "SW-Date Courte(ShortDate)" geplaatst, d.w.z. de huidige datum wanneer je deze opent. Maar er is ook een lange datum etc...

 

In de hoop dat dit kan helpen

2 likes

niet slecht als oplossing Bart☺

Bedankt

Wat betreft het bewerken van uw naam in de cartridge,

Je moet de laatste bewerken, een notitie toevoegen die op de plaats komt van de naam van de auteur in het titelblok, een eigenschap toepassen op deze notitie. Maak een eigenschap voor het bestand, wijs een naam toe aan deze eigenschap, in het volgende voorbeeld is het "Sessie", zet type "tekst" en stel de waarde in $PRP: "Laatst opgeslagen door", klik op ok.

 

In de lijst Koppelen aan eigenschappen neemt u gewoon de eigenschap Sessie en de notitie verandert in de naam van de pc-gebruiker.

 

Dat is alles


tuto_mise_a_jour_auto_de_lauteur.png

Hallo

Ik heb een formulier voor aangepaste eigenschappen opgezet, de datum is geselecteerd in een kleine kalender, heel praktisch, de namen van de ontwerpers / verificateurs / goedkeurders worden geselecteerd in vervolgkeuzelijsten, allemaal tot aan de C-index om snel oude plannen te kunnen ontwikkelen. De rest wordt automatisch ingevuld, plannamen = bestandsnamen, ....

Met deze methode kun je snel alle cartridges van alle vellen op dezelfde manier voltooien, en om verschillende vellen te hebben, moest ik een 3D-cartridge maken en je moet jongleren met de lagen om enkele aangepaste eigenschappen te verbergen. Maar we hoeven niet in eigen beheer aan meerdere folio's te werken, dus deze methode is erg handig, omdat we regelmatig oude plannen bewerken.

2 likes

P.Guyader : Bedankt, maar ik heb al een cartridge die automatisch wordt bijgewerkt.

Wat ik ga veranderen is de naam van de andere persoon die in de documenteigenschappen staat.

Als het mogelijk is met behulp van een macro, zou ik in orde zijn.

 

A.Leblanc : Heeft u enkele voorbeelden?

joel

Hallo weer

heeft niemand een oplossing om een specifieke parameter toe te voegen aan de configuratie van de naam 'Productcode'?

Ook niet voor de date?

 

Jey

Hoi allemaal.

Terug uit de verovering, blaas ik het probleem nieuw leven in.

  • Automatische update van de browser, bijvoorbeeld met de naam van de Windows-sessie. (Environ("GEBRUIKERSNAAM")).
    - De versie 'laatste gebruiker' is goed, maar past niet bij mij.
    - Ik wil graag het veld in 1 klik kunnen updaten
  • Automatische aanmaak van een configuratiespecifieke parameter van de naam 'Productcode'
    vooral als ik historische stukken gebruik.
  • Voor de update van de datum is de instelling 'afdrukdatum' niet slecht, maar werkt historisch gezien niet.
    A.Leblanc : Als je een voorbeeld hebt dat ik zou kunnen aanpassen, zou dat cool zijn.

Dank u allen 

Hallo
Net als a.leblanc heb ik een formulier voor aangepaste eigenschappen opgezet in de vorm van een extern programma dat via een macro wordt aangeroepen, deze vorm kan ook direct de macro zijn, afhankelijk van de complexiteit ervan.
Met dit formulier kunt u alle aangepaste eigenschappen op een nieuwe 3D aanmaken, maar ook alle eigenschappen van de bestaande 3D ophalen en indien nodig wijzigen.
Ik heb verschillende aangepaste eigenschappen gemaakt (ongeveer dertig in mijn geval) en in het bijzonder de auteur, de maker van de revisie (hij is niet noodzakelijkerwijs de oorspronkelijke auteur), de aanmaakdatum, de revisiedatum, de revisieaanduiding, de aanduiding, enz... Ik krijg ook het materiaal, de bestandsnaam (identiek aan de artikelcode in mijn geval), de massa, enz... en natuurlijk vul ik mijn 2D cartridge met deze eigenschappen.
De eigenschappen Author en ReviewCreator zijn uiteraard gelijk aan de gebruikersnaam van de PC, de aanmaak- en revisiedata zijn die van de dag (alleen als deze leeg is op het moment van laden van de macro voor de aanmaakdatum) en kunnen worden bewerkt via een kleine kalender (voor geschiedenisbeheer of deelkopieën).
Om aangepaste eigenschappen via API te beheren, moet je naar http://help.solidworks.com/2016/English/api/sldworksapi/SOLIDWORKS.Interop.sldworks~SOLIDWORKS.Interop.sldworks.IConfiguration~CustomPropertyManager.html gaan, al het andere is gewoon programmeren en testen, afhankelijk van wat je wilt doen.

Vriendelijke groeten


capture-dr.jpg
2 likes

Hallo

Ik vul alles in de kamer in via een formulier en wanneer ik mijn MEP aanmaak , wordt het automatisch ingevuld dankzij de koppelingen die tussen hen worden gemaakt.

1 like

Om mijn vorige bericht op te volgen, hier zijn 3 voorbeelden van functies (in C#) om aangepaste eigenschappen te maken, op te halen en te verwijderen, wees voorzichtig, dit zijn slechts voorbeelden met links op tekstvakken van een UserForm:

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

Vriendelijke groeten

Bedankt.

Je hebt een heleboel aanwijzingen voor mij om te volgen.

Ik ga dat allemaal bekijken en proberen er iets uit te halen.

Indien nodig neem ik contact met je op.

 

Bedankt

 

Jey

Hallo

SmartPropeties zou het begin van een oplossing kunnen zijn. U zult ook in staat zijn om de eigenschappen te beheren volgens de configuratie van uw onderdeel/assemblage zoals u hebt gevraagd.

2 likes