Makro i równanie SolidWorks

Witam

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.

Dziękuję za pomoc i życzę miłego dnia

Przerobiłem plik opisujący problem, aby był bardziej wyraźny.
Dziękuję i życzę miłej niedzieli
pb macro.pdf (234.3 KB)

Dobry wieczór

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.

1 polubienie

Oto taca, którą można skonfigurować za pomocą niestandardowych właściwości, które stworzyłem, mając nadzieję, że może ci pomóc.


Bac.SLDPRT (135.1 KB)

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.

Witam

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.

Witam

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ść "

Witam

Wypróbuj to makro, powinno działać.

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


Diension piece.swp (40 KB)

2 polubienia

Dobry wieczór @pierre_mihailovic1 ,

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.

ExtrusionEpais.zip (76.7 KB)

3 polubienia

Tak, wydaje mi się, że to określenie jest zarezerwowane dla blachy. Myślę, że już spotkałem się z tym problemem!

1 polubienie

Witam

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ą.

2 polubienia

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