Ik wil een macro maken om de axemble smartproperties te starten en deze te valideren om enkele eigenschappen te kunnen bijwerken die alleen door de smartproperties worden aangestuurd.
Het probleem is dat ik de vba niet ken en dat de macrorecorder niet lijkt te werken voor deze macro, die vrij eenvoudig lijkt te zijn.
Het doel is om deze macro vervolgens op te nemen om er een functiemacro van te maken die de eigenschappen van het onderdeel bij elke wijziging bijwerkt.
Het maakt niet uit hoeveel ik kijk op Google en andere, ik hoef niet de juiste zoekitems te typen om een macro te starten vanuit een SW-macro ...
Elke keer dat het bestand wordt gewijzigd, omdat we de aanduiding van de ruimte ophalen om onze bestellingen automatisch te doen met onze ERP en de bandbreedte en de lengte in de aanduiding moeten worden bijgewerkt en dit wordt alleen gedaan bij het starten van smartproperties.
EDIT: Vandaar de wens om deze macro op te nemen in een functie macro
Het probleem is dat slechts 1 munt van de 500 heeft deze macro, dus ik kan het niet uitvoeren via Custom Toolbar / lokale hulp
Ik zie een macro-functie, maar daarvoor zou ik een macro moeten maken die een andere macro:SmartProperties 2014-Auto.swp start en die niet in dezelfde map staat als de eerste macro
Voorbeeld van de huidige directory van C:\Macro macro's en smartproperties in C:\Smartproperties
Ik had hetzelfde gevonden, behalve RunMacro in plaats van RunMAcro2, ik probeer dat en dan kom ik terug om het resultaat te vertellen.
Anders, hoe kan ik er zeker van zijn dat de persoon de macro start door een macrofunctie uit te voeren, omdat het voor de 1e keer handmatig wordt gestart als ik het goed heb begrepen en dan start het zichzelf bij elke wijziging, zie voorbeeld macro zwaartepunt bijgevoegd (maar de code is vergrendeld door de auteur ->Axemble)
EDIT: voor de eigenschappen die moeten worden bijgewerkt, zijn ze meerdere, afhankelijk van het type onderdeel
1-) Lengte en breedte van een plaatwerk voor plaatwerk
2-) Striplengte berekend op basis van het type strip
- PVC = Lgbelt+4‰
- Modulair = Lgbelt+100mm
- .....
3-) Aanduiding die soms enkele van de hierboven genoemde eigenschappen in beslag neemt
De macro zelf werkt goed, hij start, voegt de macro in de kamerboom in, start de smartproperties valideert het. Als je dan de minste wijziging aan de kust aanbrengt, start hij goed, aan de andere kant heb ik een probleem, afhankelijk van de gebruikte methode, stort hij neer.
Als ik een dimensie wijzig en valideer in het dialoogvenster en vervolgens op Ctrl+Q druk of opnieuw opbouw, is er geen probleem.
Aan de andere kant, als ik de dimensie wijzig en opnieuw bouw in het dialoogvenster voordat ik valideer, crasht de smartproperties.
Als iemand een idee heeft om dit te omzeilen, is de macrocode bijgevoegd in het tekstbestand (onmogelijk om deze in het antwoord te zetten omdat het antwoord te lang is)
Voor de crash heeft onderhoud geen idee, daarom doe ik een beroep op de community!
Hier is de reactie van het onderhoud:
"Het probleem moet zijn dat we proberen een AddIn te lanceren en Solidworks moet dat niet leuk vinden terwijl een macrofunctie actief is."
Voor nu ben ik op zoek in de smartproperties proberen om een run eigenschap toe te voegen met de optie om te wachten op het einde van de applicatie of met update eigenschappen.
Hallo; Ik sta mezelf toe om dit onderwerp op te graven (7 jaar in ieder geval)... het is mogelijk om de Smartproperties aan te roepen vanuit een andere Macro (optioneel te gebruiken met de Integratie tool. In de installatiemap van Visiativ Tools: Zoeken en bewerken (met de Solidworks Macro Editor) SmartProperties.swp Zoek naar de ToolbarID en het nummer dat is gekoppeld aan "Set swDCAddIn = swApp.GetAddInObject"{...}")
Vervolgens om de Smartproperties te initialiseren en te starten:
Sub main()
Dim swApp As Object
Dim swModel As Object
Dim swDCAddIn As Object
Dim strDllFileName As String
Dim strExecutablePath As String
Dim strRegFileName As String
Dim lStatus As Long
Dim retval As Long
Dim ToolbarId As Long
On Error Resume Next
ToolbarId = ***Le N° du ToolBarID*** 'Attention, il faut recuperer le numero de la toolbar SmartProperties depuis la macro "Smarproperties_Auto.swp" la plus recente
'On récupére l'application SW
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
If swModel Is Nothing Then
MsgBox ("Pas de document actif")
End
Else
Dim stPathMacro As String
stPathMacro = swApp.GetCurrentMacroPathName
strRegFileName = Replace(stPathMacro, "-Auto.swp", ".dll")
strDllFileName = strRegFileName
'on initialise l'Add-ins
lStatus = swApp.LoadAddIn(strDllFileName)
'on récupére l'Add-ins (Attention, il faut recuperer le numero de l'app SmartProperties depuis la macro "Smarproperties_Auto.swp" la plus recente)
Set swDCAddIn = swApp.GetAddInObject("{***XXXXX-XXX-XXXX***}")
....
'on lance SmartProperties
swDCAddIn.OpenAndValidateSmartProperties
End If
End Sub
Waarschuwing: de ToolBarID- en AppSmarproperties-nummers veranderen bij elke nieuwe update van de MyCad-tools... (En hun locatie ook).