Macrofunctie: OpslaanAls in de functie Opnieuw opbouwen

Hallo 

Ik maak een macrofunctie die een plannummer aan mijn tekeningen toevoegt en een .pdf- en .slddrw-versie op een specifieke locatie opslaat.

De code in mijn functie Opnieuw opbouwen en bewerken die door mijn functiemacro wordt aangeroepen, is identiek, maar wanneer ik mijn tekening reconstrueer, wordt mijn plan niet opgeslagen (de functie Opslaanas retourneert Onwaar), terwijl wanneer ik op mijn functiemacro klik en op "Definitie bewerken" klik, het werkt. Ik heb het gecontroleerd, mijn Rebuild-functie wordt aangeroepen, maar het slaat niet op, terwijl het voor Edit werkt, omdat het precies dezelfde code is. Is er een duistere spreuk die ik niet ken?

Lukt het je om op te slaan in de Rebuild-functie van je functiemacro's?

(Ik gebruik Solidworks Pro 2017 Sp3.0)

Bij voorbaat dank,

Kanton Gauthik

Merk op dat ik deze methode gebruik: http://help.solidworks.com/2017/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.imodeldocextension~saveas.html

En dat de waarde van de parameters "Fouten" en "Waarschuwingen" 0 is in de functie voor opnieuw bouwen en bewerken. Het enige verschil is dat het aan de ene kant False (Rebuild) en aan de andere kant True (Edit) retourneert.

Hallo

Ik heb nog nooit feature macro's gedaan, maar van wat ik hier lees, zijn er duidelijk beperkingen aan wat er kan worden gedaan in de Rebuild-functie, de SaveAs-functie is er waarschijnlijk een van.

Vriendelijke groeten

1 like

Hallo, bedankt voor je antwoord.

Ik las inderdaad ook dat er beperkingen waren aan deze functie (link), aan de andere kant staat er niet echt geschreven dat het onmogelijk is om op te slaan. Ik heb geprobeerd het ding te vervalsen door een macro uit te voeren die opslaat in de rebuild-functie (RunMacro2-methode), maar het werkt ook niet. Een van de laatste mogelijkheden die ik nog heb is om te controleren of het actieve document niet verandert tijdens de rebuild-functie, en het te proberen met de GetSelections3-methode (zoals ik op dit forum heb gelezen).

Op dit moment heb ik een macroknop om op te klikken en het werkt perfect, maar mijn perfectionistische kant dwingt me om geen macroknop te hebben om :) te klikken, maar in het slechtste geval als ik het niet vind, zal het geen probleem zijn.

Hallo

Ik heb het niet geprobeerd, maar het is waarschijnlijk mogelijk om je macrofunctie te koppelen aan een evenement. Het enige dat overblijft is het aanbrengen van de registratiecode op het evenement.

Of maak een macro voor een gebeurtenisabonnement die wordt gestart wanneer SW wordt uitgevoerd.

1 like

Hallo, ik had inderdaad ergens gelezen dat je evenementen kon gebruiken. Op het eerste gezicht is dit niet langer een eenvoudige macro, het vereist het maken van een solidworks-invoegtoepassing. Als ik vrije tijd heb, kom ik er wel achter. Dank u voor uw antwoord.

Hallo

Het is niet nodig om een invoegtoepassing te maken om de ventilatieopeningen te beheren. U kunt ze beheren door een eenvoudige VBA-macro die wordt uitgevoerd wanneer SW wordt geopend. Kijk op het net, je kunt veel tutorials vinden.

FeatureMacro's worden het meest gebruikt voor het bijwerken van gegevens in een model.

In uw geval ga ik door de ventilatieopeningen, wetende dat een onderdeelnummer niet bij elke revisie hoeft te worden bijgewerkt.

1 like

Geweldig, ik kende deze techniek niet. Ik heb inderdaad voorbeelden gevonden van codes waar ze evenementen gebruiken. Dat is wat ik wilde doen. Met deze nieuwe tools kan ik nog efficiëntere macro's maken. Bedankt voor je hulp!