Mam mały problem ze stworzeniem makra, przy którym liczyłem na użycie zmiennej globalnej zdefiniowanej podczas tworzenia pliku części. Moje rozczarowanie było ogromne. Załączam opis problemu znalezionego w załączonym dokumencie. pb macro.pdf (138.3 Kb) Próbowałem dokonać odchylenia, tak jak w przypadku krzywych sparametryzowanych, najpierw tworząc szkic, którego wymiar miał zmienną globalną jako wartość, a następnie prosząc makro o przyjęcie tego wymiaru. Wyszedłem pusty.
Dlaczego warto korzystać z makra? Robię to za pomocą formularza. Wchodzę w wszystkie moje wymiary, a część odpowiednio je generuje i modyfikuje. Podam wam przykład utworu, kiedy jestem przed komputerem.
Dobry wieczór ac_cobra _427, Dziękuję za odpowiedź. Doskonale zdaję sobie sprawę z pańskiej propozycji, z której często korzystam, ponieważ jest bardzo istotna. W moim przypadku, jeśli chcę makra, to dlatego, że zaoszczędziłoby mi to wielu kliknięć. Zajmuję się laserowym cięciem sklejki. Mam więc szablon (*.dot), który ma teksturę sklejki i zmienną globalną reprezentującą grubość. Rysuję swoje części, aby wysłać je na stół do cięcia w formacie dxf. Mógłbym zadowolić się wykonaniem tylko szkiców, ale aby mieć globalny pogląd na produkt i zapewnić montaż (montaż, symulacja kinetyczna itp.) modeluję je w 3D. Modelowanie to opiera się tylko na wyciągnięciach w środkowej płaszczyźnie, z grubością jako wartością, stąd zainteresowanie, że jest to zmienna globalna, a zatem dostępna dla równań. Gdybym mógł wykonać te wytłoczenia jednym kliknięciem, byłoby to dla mnie wygodniejsze, ponieważ szybko staje się powtarzalne. Chciałbym więc mieć makro z jego ikoną, którą umieszczę w banerze funkcji i przeskoczę, kliknięcie, koniec.
Prawdopodobnie źle zrozumiałem, ale jeśli masz zmienną globalną i jej wartość 4 zgadza się z wartością wytłaczania, dlaczego zmienna globalna?
Jeśli celem jest możliwość późniejszej zmiany tej wartości grubości, szybciej jest zmienić wymiar bezpośrednio za pomocą: " kliknij na profil w szybie + kliknij na wymiar + 4 + enter ", Natomiast aby zmodyfikować zmienną, musisz: " Otwórz równania + kliknij zmienną + 4 + enter, aby sprawdzić poprawność zmiennej + enter lub kliknij, aby zatwierdzić i zamknąć okno równań ".
Zmienna kosztuje 1 kliknięcie więcej niż za pośrednictwem wyceny.
Problem z makrem polega na tym, że nie można połączyć wyciągnięcia ze zmienną grubości poza funkcją arkusza blachy. Może spróbuj pobrać wartość wymiaru grubości i wstawić tekst typu " = Grubość "
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swSketch As SldWorks.SketchManager
Dim swFeature As SldWorks.Feature
Dim swDimension As SldWorks.Dimension
Dim userInput As String
Dim newLength As Double
Dim newWidth As Double
Dim newHeight As Double
Sub main()
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
If swModel Is Nothing Then
MsgBox "Aucune pièce ouverte.", vbExclamation, "Erreur"
Exit Sub
End If
' Demande les nouvelles dimensions
userInput = InputBox("Entrez la longueur (en mm) :", "Modification de la pièce")
If IsNumeric(userInput) Then newLength = CDbl(userInput) / 1000 Else Exit Sub
userInput = InputBox("Entrez la largeur (en mm) :", "Modification de la pièce")
If IsNumeric(userInput) Then newWidth = CDbl(userInput) / 1000 Else Exit Sub
userInput = InputBox("Entrez la hauteur (en mm) :", "Modification de la pièce")
If IsNumeric(userInput) Then newHeight = CDbl(userInput) / 1000 Else Exit Sub
' Sélection de l'esquisse "Esquisse1"
Set swFeature = swModel.FeatureByName("Esquisse1")
If swFeature Is Nothing Then
MsgBox "L'esquisse 'Esquisse1' n'a pas été trouvée.", vbExclamation, "Erreur"
Exit Sub
End If
swFeature.Select2 False, 0
swModel.EditSketch
' Mise à jour des dimensions
Set swDimension = swModel.Parameter("D1@Esquisse1")
If Not swDimension Is Nothing Then swDimension.SystemValue = newLength
Set swDimension = swModel.Parameter("D2@Esquisse1")
If Not swDimension Is Nothing Then swDimension.SystemValue = newWidth
Set swDimension = swModel.Parameter("D1@Boss.-Extru.1")
If Not swDimension Is Nothing Then swDimension.SystemValue = newHeight
' Validation de l'esquisse et mise à jour
swModel.EditRebuild3
swModel.SetSaveFlag
swModel.EditSketch
MsgBox "Dimensions mises à jour avec succès.", vbInformation, "Succès"
End Sub
Za pomocą dołączonego makra, wyciągnięcie istniejącego szkicu za pomocą dwóch kliknięć myszką, według płaszczyzny środkowej i grubości zarządzanej przez zmienną globalną:
pierwsze kliknięcie, aby wybrać szkic;
drugi, aby uruchomić makro (jeśli istnieje przycisk).
Zmienna globalna jest zdefiniowana w makrze przez stałą o nazwie " Thick ". Musi ona oczywiście istnieć w dokumencie (lub lepiej, w szablonie). PRTDOT). Ocena grubości wytłaczania odnosi się do ogólnej zmiennej.
Uwaga: Próba użycia notacji " Grubość " powoduje błędy w menedżerze równań. Być może jest to słowo zarezerwowane dla blachy.
Tak, jest to związane z blachą, jednak w " normalnej " operacji, po wybraniu opcji Połącz z grubością w funkcji wytłaczania, nadal uwzględnia tę zmienną globalną. Z drugiej strony nie można go modyfikować, można go zmienić tylko poprzez ustawienie funkcji arkusza blachy. Stąd, jak sądzę, fakt, że ta funkcja nie jest dostępna za pośrednictwem makra poza blachą.
Dziękuję wam wszystkim. Przyjrzę się makro zaproponowanemu przez ac_cobra_427. Dużo pracuję ze zmiennymi globalnymi sterowanymi przez zewnętrzny plik. Pozwala mi to na montaż z N częściami, wszystkie wycięte laserowo w sklejce o wspólnej grubości, aby zmodyfikować wszystkie zakładki za jednym razem. Miłego dnia