Afmetingen van de kamer

Hallo

Ik probeer de afmetingen van een kamer in SW te bepalen, daarbij verwijzend naar het feit dat ik VB.NET gebruik.

Ik wacht op uw hulp en dank u.

Hallo

Op een gegeven moment had ik een klein hulpprogramma gemaakt waarmee ik iets soortgelijks kon doen, zie HIER.

Vriendelijke groeten

1 like

Hier is nog een model dat, zoals gezegd, "zonder een Privilege-abonnement 1 maand kan worden gebruikt en getest.", zie HIER.

Vriendelijke groeten

1 like

En hier is een versie van het hulpprogramma dat ik had gemaakt, maar met de toevoeging van een knop om de voetafdruk te berekenen op het onderdeel of de assemblage die al in Solidworks is geladen.

Vriendelijke groeten


boundingbox-4.zip
3 likes

Hallo en bedankt voor je hulp,

het is niet precies dat, ik probeer de lengte en breedte (of diameter) van een onderdeel in SW te bepalen met behulp van de VB.NET-code.

Hallo

Waarschijnlijke vergissing van mijn kant, als ik het goed begrijp, probeer je dan VB.NET kansen te vergroten?

Vriendelijke groeten

2 likes

Hallo

waar ik precies naar op zoek ben, is het bepalen van de lengte en diameter van een schroef in een assemblage op SW met behulp van VB.net, om ze later te gebruiken.

Hallo

Om dit te doen, kunt u de configuraties gebruiken. Je maakt je schroef en voor elke lengte of diameter maak je een extra configuratie.

Hallo

Ik begrijp de uiteindelijke behoefte niet echt, want voor schroeven, zoals ac cobra 427 zegt, is er de mogelijkheid om configuraties te gebruiken, of om de gereedschapskist te gebruiken. Als het nu gaat om het rijden van afmetingen op een SW-onderdeel, is het mogelijk om het te doen zoals hieronder.

Als we ervan uitgaan dat het in SW geladen onderdeel is samengesteld uit een "Boss.-Extru.1"-functie gemaakt van een "Sketch1"-schets waarin we de afmetingen "D1@Esquisse1" en "D2@Esquisse1" vinden voor breedte en lengte, en dat de diktedimensie van de extrusie "D1@Boss.-Extru.1" wordt genoemd, dan kunnen we ze als volgt controleren:

Dim swApp As Object
Dim Part As Object
Dim myDimension As Object
Dim boolstatus As Boolean

Sub main()
    Set swApp = Application.SldWorks
    Set Part = swApp.ActiveDoc
    Set myDimension = Part.Parameter("D1@Esquisse1")
    myDimension.SystemValue = 0.11
    Set myDimension = Part.Parameter("D2@Esquisse1")
    myDimension.SystemValue = 0.05
    Set myDimension = Part.Parameter("D1@Boss.-Extru.1")
    myDimension.SystemValue = 0.002
    boolstatus = Part.ForceRebuild3(True)
    Part.ClearSelection2 True
End Sub

Vriendelijke groeten

1 like

Hallo en bedankt voor je antwoord,

Het probleem is dat ik de afmetingen wil bepalen van de standaardelementen die zijn toegevoegd uit SW-bibliotheken (schroeven, moeren, enz.), zodat ik geen toegang heb tot hun schetsen.

Hallo

Wat bedoel je met standaardelementen die zijn toegevoegd uit de SW-bibliotheek? Kunt u een voorbeeld plaatsen van een onderdeel voor analyse?

Vriendelijke groeten

Hallo

Een voorbeeld is bijgevoegd.

Dus ik heb dit algoritme geprobeerd, maar ik kreeg geen resultaten:

        swModel = swApp.ActiveDoc

        swConfigMgr = swModel.ConfigurationManager

        swConfig = swConfigMgr.ActiveConfiguration
        Dim swDocExt als ModelDocExtension
        Dim boo als Booleaanse
        swModel.ClearSelection2(Waar)
        swDocExt = swModel.Extension()
        boo = swDocExt.SelectByID2("part@assembly", "COMPONENT", 0, 0, 0, True, 1, Nothing, 0)
 
        Dim strCompModelname2 als tekenreeks
        strCompModelname2 = "deel.sldprt"
        swModel = swApp.ActiveDoc

        swDim = swModel.Parameter(strCompModelname2)

        vConfigNameArr = swModel.GetConfigurationNames

        Voor elke vConfigName in vConfigNameArr

            sSpecConfigNameArr(0) = vConfigName

            vSpecConfigNameArr = sSpecConfigNameArr

            vDimValArr = swDim.GetValue3(swInConfigurationOpts_e.swSpecifyConfiguration, vSpecConfigNameArr)
            Debug.Assert(0 = UBound(vDimValArr))

            Voor elke vDimVal In vDimValArr

                Debug.Print("      " & vConfigName & " -->" & vDimVal)

            Volgend

        Volgend


din-933.jpg

Hallo

Met " Kunt u een voorbeeld van een onderdeel voor analyse plaatsen?", Bedoelde ik een van uw stukken in sldprt formaat, niet een jpeg afbeelding!

Vriendelijke groeten

1 like

Goedenavond

Hier is het voorbeeld in .sldprt-formaat


jaw_screw.sldprt

Hallo

Dat is wat ik vermoedde, dit zijn geïmporteerde onderdelen, dus u zult geen offertes kunnen vinden aangezien die er niet zijn:

Vriendelijke groeten

Hallo

Om schetsen in een geïmporteerde body mogelijk te maken, kunt u Featurworks gebruiken , die alle functies van een onderdeel herkent...

Het is een mogelijkheid, maar gezien het onderdeel denk ik dat het beter is om het volledig opnieuw op te bouwen, het zal de verdienste hebben dat het volledig beperkte schetsen en iets meer "intelligente" functies heeft.

Of neem een deel uit de Toolbox als er een equivalent is.

Voor de featureWorks moet je eerst de "Body-Move" move-functie verwijderen, anders is FeatureWorks niet bruikbaar:

Vriendelijke groeten

1 like

Hallo

Ik heb "Body-Move" verwijderd, vervolgens heb ik op featureworks geklikt - herken de functies ...

er wordt een foutmelding weergegeven "afbeelding", en als ik op ok klik, sluit de SW zichzelf.


image.png

Hallo

Het lijkt niet van uw kant te komen (behandeling gedaan op SW 2017):

Dus zie over uw instellingen of uw installatie van SW (welke versie?)

Vriendelijke groeten

1 like

Hallo

Het lukte me om de schets van de onderdelen te bekijken.

Het probleem is nu om de lengte van een geselecteerd onderdeel te bepalen door middel van de schets. 

Ik ga je een voorbeeld laten zien van een algoritme dat ik heb getest, maar zonder enig resultaat:

1 /

    Dim vDimVal als object
        Dim deel als ModelDoc2
        Deel = swApp.ActiveDoc
Dim swDim als dimensie
        swDim = Deel.Parameter("D2@Esquisse1@part1@assembly")
       vDimVal = swDim.GetSystemValue3(swInConfigurationOpts_e.swThisConfiguration, niets)
        vDimVal = swSelMgr.GetSelectedObject6(1, -1)
        MsgBox(vDimVal)

 

resultaat = lege doos