Hoi allemaal
Ik ben op zoek naar een manier om een gebruikersformulier te openen bij het openen van een nieuw onderdeelbestand.
Een beetje zoals in Excel met WorkbookOpen(), maar ik zie niets dat op apartOpen() zou lijken.
Iemand een idee
Hoi allemaal
Ik ben op zoek naar een manier om een gebruikersformulier te openen bij het openen van een nieuw onderdeelbestand.
Een beetje zoals in Excel met WorkbookOpen(), maar ik zie niets dat op apartOpen() zou lijken.
Iemand een idee
Hallo
Dit onderwerp gaat erover, maar de beperking is dat het alleen van toepassing is op nieuwe bestanden.
Voer een VBA-macro uit bij het laden van het model met behulp van de macrofunctie en de SOLIDWORKS-API (codestack.net)
Een andere methode zou zijn om met SW-gebeurtenissen te spelen om informatie over het openen van bestanden vast te leggen, maar daarvoor moet u het uitvoerbare bestand voor het starten van SW wijzigen om een macro te hebben die op de achtergrond wordt uitgevoerd
Dankzij @Cyril_f , ja dat is precies wat ik wil, dat het alleen draait bij het maken van een nieuw bestand om de tekenaar te dwingen een vooraf gedefinieerd materiaal te kiezen in een combobox van de gebruikersvorm.
We hebben het dus alleen nodig voor de creatie van het nieuwe stuk.
Ik zal het bestuderen, maar de code ziet er op het eerste gezicht vrij moeilijk uit!
Er kan een manier zijn om het een beetje eenvoudiger te maken dan de code die wordt aangeboden door Codestack, ik kijk hiernaar omdat ik al codes heb die SW-gebeurtenissen gebruiken, maar ik beheer het op dit moment niet bij het rechtstreeks starten van SW (ik start SW en een macro vanuit Excel)
Bedankt, het is leuk om me een handje te helpen over dit specifieke onderwerp.
In de tussentijd zal ik kijken naar de Codestack code.
Ik begrijp niet hoe ik een functiemacro moet maken, blijkbaar moet je een schets in het model openen.
Maar ik zie niet in wat ik nu moet doen.
EDIT: Sorry, ik had de video moeten bekijken!
Na verschillende pogingen werkt de Codestack-code niet voor mijn gebruik.
De macro wordt uitgevoerd voordat het bestand wordt geopend en dus kan ik het materiaal niet bewerken omdat de map met functiebeheer niet actief is.
Nog een idee om mijn probleem op te lossen?
Hallo @treza88
Ik ga de vraag niet beantwoorden, maar iets meer over het probleem. Een alternatief zou het anders kunnen regelen;
Documentsjablonen maken voor nieuwe documenten. Met een sjabloon voor elk materiaal, en door het originele standaardsjabloon te verwijderen, aangezien het een kwestie is van het forceren van de keuze van de ontwerper, zal hij alleen nieuwe documenten kunnen openen met een van de vooraf gedefinieerde sjablonen, dus alleen met een van de vooraf gedefinieerde materialen. En dit gebeurt direct vanuit het ZW-openingsvenster.
Hallo en bedankt @Sylk,
Het probleem is dat ik er minstens dertig modellen mee zou maken, omdat mijn materiaal het type materiaal bepaalt, maar ook de dikte van mijn plaatwerk, van het type " Inox_2.0 ".
Hierdoor kan ik deze informatie ophalen voor mijn DXF-exports.
Aan de andere kant heb ik een oplossing die bij mij past en die vrij simplistisch is, namelijk om een macro te maken die een nieuw onderdeel maakt en na het maken mijn gebruikersformulier opent.
Of beter gezegd in deze volgorde: Een macro die het gebruikersformulier opent en vervolgens een nieuwe ruimte aanmaakt met de opties die in het gebruikersformulier zijn gekozen.
Kortom, wat ik a priori zou doen, is:
PS: in het geval van onjuiste parameters of sluiting (annuleren) van de userform/macro, het sluiten van het "in creatie " doc zonder op te slaan, lijkt het noodzakelijk om docs zonder haalbare configuratie te vermijden.
Hallo
Het probleem met macro's die niet autonoom starten, is dat het afhankelijk blijft van de gebruiker (ik heb een aantal zeer nuttige macro's die gebruikers niet gebruiken en die van tijd tot tijd zouden voorkomen dat ze problemen ondervinden met hun bestanden).
Het hebben van een macrofunctie had dus de oplossing kunnen zijn, maar het probleem blijft dat het in alle documentsjablonen.
De " gemakkelijkste " manier om het gebruik te forceren is om een macro te starten wanneer SW wordt geopend, die SW-gebeurtenissen onderschept en u dus in staat zou stellen het gewenste gedrag in te stellen.
Dat gezegd hebbende, vereist deze oplossing dat u de manier waarop SW wordt gestart wijzigt door argumenten toe te voegen aan de SW voor het openen van de opdrachtregel, zodat deze de macro start wanneer deze wordt geopend en een zeer robuuste code om alle gevallen die zich kunnen voordoen te overwinnen.
Misschien makkelijker te beheren en minder beperkend voor de gebruiker (soms heb je een onderdeel nodig om een idee te plaatsen): controleer bij de registratie of de materialen in de lijst staan en open eventueel het gebruikersformulier.
Met een add-in kun je Solidworks events onderscheppen, je hoeft het alleen maar op alle werkstations te installeren.
Persoonlijk vind ik het verrassend om dikte in het materiaal te verwerken.
Er zijn andere manieren om deze dikte automatisch op te halen. (net als het materiaal)
Voorbeeld genoteerd in de kamer en vervolgens de Europarlementariër:
In de kamer:
" Epaisseur@Pièce1.SLDPRT "
In de Europarlementariër:
Dikte $PRPSHEET: " Dikte " mm
Het resultaat:
=> Grote zucht ... Dat gezegd hebbende, voel ik me ineens minder alleen...
Om de vraag van @treza88 te beantwoorden:
Ik ben over het algemeen tegen " Macrofuncties ", het is vaak zwaar (voor de grootte van het bestand), ze zijn ingewikkeld om te delen (vooral met externe mensen die niet dezelfde versie van Solidworks hebben of gewoon administratieve beperkingen op hun werkstation)...
Om dit alles te voorkomen, afhankelijk van de Solidworks-versie die u gebruikt (van Solidworks 2019):
kijk naar het tabblad " Plaatwerk" bij het bewerken van materialen... Ik denk dat dit uw verzoek beantwoordt:
Nou, misschien loop ik een beetje op de zaken vooruit, want zoals je kunt zien, gebruik ik het niet... (Solidworks 2022).
@treza88 ... Ik ben helemaal niet tegen de vermenigvuldiging van informatiebronnen (integendeel), alleen zou het fair play zijn om de resultaten (in geval van resolutie) op de verschillende forums te plaatsen waar u uw verzoeken hebt ingediend:
Onderstaande screenshot van het Solidworks forum
Vriendelijke groeten.
Het antwoord van het SW-forum lost het probleem "het is afhankelijk van de gebruiker" niet op.
Het maken van een macro die een gebruikersformulier start en het maken van een bestand is eenvoudig, maar gebruikers moeten zich nog steeds verwaardigen om op het pictogram te klikken.
@Cyril_f , precies de opmerking die ik tegen mezelf maakte.
De door @sbadenis voorgestelde oplossing lijkt mij interessant (afgezien van het feit dat de tekening een geweldige middelvinger lijkt te zijn)
Persoonlijk is het wat we gebruiken. Wanneer het materiaal niet is ingevuld, beledigt Sldw ons over de tekening, wat het oog alarmeert
U kunt bovendien verfraaien met visuele aanwijzingen. Alles wat door de gebruiker geverifieerd moet worden, staat standaard op rood in je native bestand. En de gebruiker passeert ze in het zwart om te valideren dat hij heeft gecontroleerd.
Ook al hebben we elementen in rood en vet gezet, het springt er bij niemand uit. Ik moet blinde mensen in mijn gebruikers hebben
[HS aan] De enige keer dat we een resultaat kregen, was op bestanden in onze PDM die in een prullenbak liggen, toen de assemblages ernaar verwezen, vervingen we de 3D door een geëxtrudeerde tekst van het type " Dit is niet het juiste bestand ". Omdat ze moeite hebben met de " get the version " en niet " get the latest version ", vreemd genoeg eindigden ze met een ASM met mooie teksten en beperkingsfouten en daar zorgde het ervoor dat [HS Off] reageerde