Solidworks API Artikeleigenschap toevoegen en deze vervolgens in de tekening weergeven

Hallo

Ik heb een macro die een "Nom_Modificateur" eigenschap toevoegt in een deel, Het probleem is dat wanneer ik mijn lay-out open (nog steeds in de macro) de achtergrond niet verandert, ik ben gedwongen om de achtergrond plan te bewerken en vervolgens het blok te laten ontploffen en de mijn gegeven verschijnt. Om te weten of ik vanaf het begin het blok laat barsten, werkt de macro perfect. Maar ik wil de blokkade niet doorbreken omdat ik een andere macro heb die ook reinheid schrijft die in de cartridge zit en die werkt terwijl de code identiek is.

Hier is de code:

Deel instellen = swApp.OpenDoc6(Bestand, 1, 0, "", longstatus, longwarnings)
    Stel swApp = Toepassing.SldWorks in
    'We krijgen het actieve document
    Stel swModel = swApp.ActiveDoc in

swCustPropMgr.Add3 "Type_Validation", swCustomInfoText, "", 2
swCustPropMgr.Add3 "Date_Validation", swCustomInfoText, "", 2
swCustPropMgr.Add3 "Index", swCustomInfoText string, 2
Als string = "02" Dan
swCustPropMgr.Add3 "Raison_Modification_A02", swCustomInfoText, Reden, 2
swCustPropMgr.Add3 "Nom_Modificateur_A02", swCustomInfoText, Nom_Modif, 2
ElseIf string = "03" Dan
swCustPropMgr.Add3 "Raison_Modification_A03", swCustomInfoText, Reden, 2
swCustPropMgr.Add3 "Nom_Modificateur_A03", swCustomInfoText, Nom_Modif, 2
ElseIf string = "04" Dan
swCustPropMgr.Add3 "Raison_Modification_A04", swCustomInfoText, Reden, 2
swCustPropMgr.Add3 "Nom_Modificateur_A04", swCustomInfoText, Nom_Modif, 2
Einde als

swApp.CloseDoc Bestandsnaam

Bedankt 

Hallo

 

Ingewikkeld om mee te werken zo weinig geven, kun je de code van je andere macro zetten? Als je de andere start ben je al bezig met de tekening, of opent hij ook een document?

Hallo

Bewerk gewoon de achtergrond en laat vervolgens uw blok exploderen en sla de basiskaartsjabloon opnieuw op als een blok en standaard vergrendeld in bewerking.

2 likes

Dank u voor uw antwoord,

Ik zal de volledige macro op je zetten, ik zal het uitvoeren vanuit een vergadering -->

- U moet een component selecteren uit de componentenboom en vervolgens de macro starten

(Ik weet dat de macro niet is geoptimaliseerd, maar voordat ik deze optimaliseer, probeer ik alles te laten werken)

 


3_prise_dindice.swp

Ik heb verschillende .slddrt-planformaten (A4H, A4V, A3H...) Al deze formaten hebben een bloklink naar een blokbestand om alles te definiëren wat in het titelblok (.sldblk-bestand) moet staan. Hierdoor voeg ik, als ik een element wil toevoegen, het toe aan het sldblk-bestand en worden al mijn formaten gewijzigd. Het is beter dan bewerken op alle abonnementsformaten (ik ben 30)

Dus als mijn basemap een ontploft blok heeft, verlies ik dan de link?

Ja, je verliest de link omdat deze wordt verbrijzeld.

Hallo

Moet je echt het blok opbreken om rekening te houden met de veranderingen of is een eenvoudige reconstructie voldoende?

Ter informatie: voor de wijzigingen die door macro worden aangebracht, moet vaak rekening worden gehouden met een reconstructie , het is de beroemde CTRL + Q die een beetje een reflex is.

Vriendelijke groeten

1 like

d.roger, Wederopbouw doet niets

De macro kan niet werken met het blok omdat het blok tegen schrijven is beveiligd, tenzij u een vak rechtstreeks aan de naam van de modifier toevoegt en in een eigenschap van het onderdeel vult.

Dat is precies wat ik doe, ik voeg een persoonlijke eigenschap toe aan mijn 3D-bestand en in mijn cartridge heb ik de naam van deze eigenschap die hetzelfde zijn. Maar mijn probleem is dat het niet komt opdagen. En zelfs als ik mijn blok van tevoren laat ontploffen, moet ik nog steeds het achtergrondplan bewerken om het te laten verschijnen

 

En hoe verschijnen de andere eigenschappen in het titelblok?

Op dezelfde manier en er is geen probleem(zie bijlage). Daarom begrijp ik er helemaal niets van


propriete_piececartouche.png

Maar dat is  waar je de eigenschap "Nom_Modificateur" moet toevoegen en vervolgens de link in het blok moet maken.

1 like

Ja dat is wat ik doe, als ik naar mijn deel eigenschappen kijk, zijn ze inderdaad toegevoegd, maar niets in het titelblok terwijl er een link is

Maar daar in uw eigendommen is er geen "Nom_Modificateur" volgens de zeefdruk die u heeft gemaakt...

Zoals ac cobra zegt, lijkt de variabele niet te bestaan, dus je code zou hiermee moeten overeenkomen:

swCustPropMgr.Add3 "Type_Validation", swCustomInfoText, "", 0
swCustPropMgr.Add3 "Date_Validation", swCustomInfoText, "", 0
swCustPropMgr.Add3 "Index", swCustomInfoText string, 0
Als string = "02" Dan

...

 

Op de onderstaande link zie je dat de variabelen moeten bestaan als je een "2" aan het einde zet, het vervangt de waarde alleen als deze laatste bestaat. Met een 0 maakt het de variabele aan als deze niet bestaat.

http://help.solidworks.com/2018/english/api/swconst/SOLIDWORKS.Interop.swconst~SOLIDWORKS.Interop.swconst.swCustomPropertyAddOption_e.html

 

Aan de andere kant, wees voorzichtig dat je een stap moet plannen als je gaat, anders zal de eerste keer dat je het gebruikt de A02 - A03 maken .... En de volgende keer dat je ze gebruikt, omdat ze al zijn gemaakt, zal hij niets doen. En als je "1" zet, wordt het elke keer herschreven, zodat je geen geschiedenis meer hebt.

Ik heb mijn probleem opgelost. Tijdens de eerste macro die gegevens invoegt, zet ik al mijn toekomstige indexwaarden en ik weet niet waarom, als er al een waarde is gemaakt, de tweede keer dat het de update zelf uitvoert. 

Bedankt voor al je antwoorden, ik weet dat niet alles duidelijk is...