Optellen (2x) of (4x) op M8 of Ø6,5 afmetingen

Hallo

Gisteren heb ik 2 macro's gemaakt om mijn leven in het tekenen te vereenvoudigen, door de (2x) of (4x) op een dimensie toe te voegen.
Het werkt heel goed als de beoordeling kaal is, d.w.z. slechts 95.
Aan de andere kant, als ik een M6 of Ø12 heb, vervangt deze mijn beoordeling door 6 (2x) en 12 (2x), ik verlies elke keer het voorvoegsel. Hoe het te doen, is er een oplossing? Op Creo heb ik deze variabele (2x) in het achtervoegsel gezet, maar het bestaat niet op solidworks.
Bij voorbaat dank

Veel succes met de overgang van Créo naar Solidworks. Ik klaagde veel na de 1e spijt van Sldw ... en nu doe ik het tegenovergestelde :smiley:

Zo niet, kunt u uw VBA-code delen zodat de experts u kunnen helpen met meer aanpassingen dan in het algemene geval?

Maar, van een afstand gezien, heb ik de indruk dat je overschrijft wat er staat om het te vervangen door de dimensie (x2) of de dimensie (x4)
Om het goed te doen, moet je hem liever vertellen om het aantal tekens in je dimensie te tellen, en dan je (x2) of (x4) aan het einde van je teller toe te voegen

Hallo coin37coin

Inderdaad, ik overschrijf wat er geschreven staat...
Maar een macro maken om het aantal tekens te tellen en mijn (2x) optellen die ik niet beheers...
Hier is mijn beginnende macro:
2x.swp (23,5 kB)

Ter informatie, 25 jaar creo achter mij ben ik begonnen met de 2000i versie

Goed gedaan voor de softwarewijziging na zoveel tijd. Dit is een hele logica die in twijfel moet worden getrokken!

U kunt uw code aanzienlijk verlichten
De eerste 4 regels van boolstatus zijn slechts de stap-voor-stap van het schrijven (2x). Je kunt dus gewoon de laatste regel aanhouden.
Dit zou geven

Dim swApp als object

Deel dimmen als object
Dim boolstatus als Booleaanse
Dim longstatus As Long, longwarnings As Long

Sub hoofd()

Stel swApp = Toepassing.SldWorks in

Deel instellen = swApp.ActiveDoc
myModelView dimmen als object
Stel myModelView = Deel.ActiveView in
myModelView.FrameState = swWindowState_e.swWindowMaximized
boolstatus = Part.EditDimensionProperties2(0, 0, 0, "  ", "", Onwaar  , 1, 2, Waar, 12, 12, "  ", " (2x)", Waar, "  ", "", Waar  )
Deel.ClearSelection2 Waar
Einde Sub

En dan droog ik een beetje uit.
De code Part.EditDimensionProperties2 roept de parameters op van de dimensie waarin u de dimensie hebt opgeslagen.
Je zou dus moeten uitzoeken hoe je je huidige instellingen kunt opslaan en ze eraan moet herinneren wanneer je (2x) toevoegt ... of hoe u eenvoudig de 13e parameter van uw functie kunt wijzigen

EditDimensionProperties2-methode (IModelDoc2) - 2012 - Help van de SOLIDWORKS API

Voor alle gaten die met behulp van het symbool voor het boren zijn gemaakt, wordt de hoeveelheid zelf zonder macro geplaatst.

2 likes

Hallo sbadenis
Bedankt voor het antwoord
Ja, ik ken deze oplossing, maar ik vind het niet leuk en bovendien is het geen ISO.

1 like

Hier, na een beetje op het net te hebben gekeken, een oplossing die zou moeten werken
Ik stond mezelf toe om haar een beetje te " pimpen".  Wanneer u op de macro klikt, wordt u gevraagd hoe vaak u wilt herhalen en aan het einde wordt de (x) toegevoegd

Sub QteRepetition()

Dim swApp als SldWorks.SldWorks
Dim swModel als SldWorks.ModelDoc2
Zon swSelMgr As SldWorks.SelectionMgr
Dim swDispDim als SldWorks.DisplayDimension
Dim swDim als SldWorks.Dimension

Dim achtervoegsel Stroom als snaar
Dim NeoSuffix Als String

Stel swApp = Toepassing.SldWorks in
Stel swModel = swApp.ActiveDoc in

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

'Implementeert het huidige achtervoegsel
AchtervoegselCurrent = swDispDim.GetText(swDimensionTextSuffix)
"Tekst in te vullen
NeoSuffix = InputBox(" Aantal herhalingen ")
NeoSuffix = " (" & NeoSuffix & " x) "
'wijzigt het achtervoegsel van de dimensie
swDispDim.SetText swDimensionTextSuffix, NeoSuffix
'wijst het achtervoegsel toe aan de geselecteerde dimensie'
swDispDim.SetText, swDimensionTextSuffix, SuffixCurrent & NeoSuffix

swModel.GraphicsRedraw2
Einde Sub

Als u het vraagvak niet wilt, vervangt u het gewoon

NeoSuffix = Invoervak("Aantal herhalingen")
NeoSuffix = " (" & NeoSuffix & "x)"

bij

NeoSuffix = " (2x) "

2 likes

Dank je wel coin37coin
Maar ik heb hier een fout
NeoSuffix = Invoervak("Aantal herhalingen")
NeoSuffix = " (" & NeoSuffix & "x)"

Kun je me helpen?

Hallo @_Cricri

De fout komt van de Franse aanhalingstekens die moeten worden vervangen door de Engelse aanhalingstekens"

2 likes

De fout zit op de " " rond x denk ik.

Bij het kopiëren was er een verandering in het formaat, dus je moet hebben

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

Laten we eens kijken of het het probleem oplost?

1 like

Ja, en ze moeten gedurende de hele macro worden vervangen :wink:

2 likes

Ja, het is goed dat het werkt, geweldig BEDANKT aan coin37coin en aan Sylk aan het einde