Dodawanie (2x) lub (4x) na wymiarach M8 lub Ø6,5

Witam

Wczoraj stworzyłem 2 makra, aby uprościć moje życie w rysowaniu, dodając (2x) lub (4x) na wymiarze.
Działa bardzo dobrze, gdy ocena jest goła, czyli tylko 95.
Z drugiej strony, gdy mam M6 lub Ø12 to zamienia moją ocenę na 6 (2x) i 12 (2x), za każdym razem gubię prefiks. Jak to zrobić, czy jest jakieś rozwiązanie? Na Creo umieściłem tę zmienną (2x) w polu sufiksu, ale nie ma jej w solidworks.
Z góry dziękuję

Życzymy powodzenia w przejściu z Créo na Solidworks. Bardzo narzekałem po 1. żałowaniu Sldw ... a teraz robię odwrotnie :smiley:

Jeśli nie, czy możesz udostępnić swój kod VBA, aby eksperci mogli pomóc Ci w większej liczbie dostosowań niż w ogólnym przypadku?

Ale tak jak to widziane z daleka, mam wrażenie, że nadpisujesz to, co jest napisane, aby zastąpić wymiarem (x2) lub wymiarem (x4)
Aby zrobić to dobrze, powinieneś raczej powiedzieć mu, aby policzył liczbę znaków w twoim wymiarze, a następnie dodać twoje (x2) lub (x4) na końcu twojego licznika

Witaj coin37coin

Rzeczywiście, nadpisuję to, co jest napisane...
Ale zrobienie makra do zliczania liczby znaków i dodanie mojego (2x), którego nie opanowuję...
Oto moje makro dla początkujących:
2x.swp (23,5 KB)

Dla Twojej informacji, 25 lat creo za mną zacząłem od wersji 2000i

Dobra robota za zmianę oprogramowania po tak długim czasie. Jest to cała logika, którą należy zakwestionować!

Możesz znacznie rozjaśnić swój kod
Pierwsze 4 wiersze boolstatus to tylko krok po kroku pisania (2x). Możesz więc po prostu zachować ostatnią linię.
To dałoby

Dim swApp As Object

Przyciemnij część jako obiekt
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()

Ustaw swApp = Application.SldWorks

Ustaw część = swApp.ActiveDoc
Przyciemnij myModelView jako obiekt
Ustaw myModelView = Part.ActiveView
myModelView.FrameState = swWindowState_e.swWindowMaximized
boolstatus = Part.EditDimensionProperties2(0, 0, 0, "  ", "", Fałsz  , 1, 2, Prawda, 12, 12, "  ", " (2x)", Prawda, "  ", ", Prawda  )
Part.ClearSelection2 Prawda
Koniec subwoofera

A potem trochę wysycham.
Kod Part.EditDimensionProperties2 przywołuje parametry wymiaru, w którym zapisano wymiar.
Więc musiałbyś znaleźć sposób na zapisanie bieżących ustawień i przypomnienie im o dodaniu (2x) ... lub jak po prostu zmodyfikować 13. parametr swojej funkcji

Metoda EditDimensionProperties2 (IModelDoc2) - 2012 - Pomoc SOLIDWORKS API

Dla wszystkich otworów wykonanych za pomocą strony if z symbolem wiercenia, ilość jest wprowadzana sama bez makra.

2 polubienia

Witaj sbadenis
Dziękuję za odpowiedź
Tak, znam to rozwiązanie, ale mi się nie podoba, a poza tym nie jest to ISO.

1 polubienie

Tutaj, po troche poszukaniu w sieci, rozwiązanie, które powinno zadziałać
Pozwoliłem sobie na trochę ją " odpicować".  Gdy klikniesz na makro, zapyta Cię, ile razy chcesz powtórzyć i dodaje na końcu z (x)

Sub QteRepetition()

Dim swApp jako SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Sun swSelMgr jako SldWorks.SelectionMgr
Dim swDispDim As SldWorks.DisplayDimension
Dim swDim As SldWorks.Dimension

Dim SuffixCurrent As Ciąg
Dim NeoSuffix jako ciąg

Ustaw swApp = Application.SldWorks
Ustaw swModel = swApp.ActiveDoc

Ustaw swSelMgr = swModel.SelectionManager
Ustaw swDispDim = swSelMgr.GetSelectedObject6(1, 0)
Ustaw swDim = swDispDim.GetDimension

'Implementuje bieżący sufiks
SuffixCurrent = swDispDim.GetText(swDimensionTextSuffix)
"Tekst do wypełnienia
NeoSuffix = InputBox(" Liczba powtórzeń ")
NeoSuffix = " (" & NeoSufiks & " x) "
'Zmienia sufiks wymiaru
swDispDim.SetText swDimensionTextSuffix, NeoSuffix
'Przypisuje przyrostek do wybranego wymiaru'
swDispDim.SetText, swDimensionTextSuffix, SuffixCurrent & NeoSuffix

swModel.GraphicsRedraw2
Koniec subwoofera

Jeśli nie chcesz pola pytania, po prostu zamień je

NeoSuffix = InputBox("Liczba powtórzeń")
NeoSuffix = " (" & NeoSuffix & "x)"

przez

NeoSufiks = " (2x) "

2 polubienia

Dziękuję coin37coin
Ale tu mam błąd
NeoSuffix = InputBox("Liczba powtórzeń")
NeoSuffix = " (" & NeoSuffix & "x)"

Czy możesz mi pomóc?

Witam @_Cricri

Błąd wynika z francuskich cudzysłowów, które muszą być zastąpione angielskimi znakami cudzysłowu"

2 polubienia

Myślę, że błąd występuje na " " około x.

Podczas kopiowania nastąpiła zmiana formatu, więc musisz mieć

NeoSuffix = " (" & NeoSufiks & " x) "

Zobaczmy, czy to rozwiąże problem?

1 polubienie

Tak, i należy je wymieniać w całym makro :wink:

2 polubienia

Tak, dobrze, że działa, świetnie DZIĘKUJĘ coin37coin i Sylkowi na końcu