Macro voor het wijzigen van de oriëntatie van weergaven in solidworks

Hallo allemaal, ik ben momenteel op zoek naar een manier om de heroriëntatie van het vooraanzicht van een bestand dat rechtstreeks van de site van een fabrikant is geïmporteerd, te automatiseren, anders wordt het onderdeel niet herkend op Altium. Het zijn alleen de originele foto's die niet goed georiënteerd zijn, en het bestand dat naar de site is geüpload, staat me niet toe om het te wijzigen.

Ik denk dat je kunt kijken naar de functie Kopiëren verplaatsen http://help.solidworks.com/2016/french/solidworks/sldworks/hidd_dve_feat_move_surf.htm

kijk of de functie overeenkomt en in welk geval u de macro kunt opslaan van wat u interesseert (rotatie 90° op X of Y of Z)

@MaD, zoals ik kon begrijpen, probeert het niet de kamer te verplaatsen, maar het uitzicht op de kamer te veranderen.

Probeer met de macrorecorder jezelf erop te plaatsen en kijk of je een bruikbare code hebt.

@KVuilleumier, het is de oriëntatie van het onderdeel dat ik wil kunnen wijzigen ten opzichte van het coördinatensysteem, zodat het vooraanzicht degene is die ik wil. Ik moet ook de plaatsing van de marker opnieuw definiëren, misschien had ik dat eerst moeten doornemen. Ik ben een beginneling in solidworks, ik was eerder op ProE en dus weet ik niet hoe ik het moet aanpakken, vooral omdat ik niet weet hoe ik macro moet doen (ik zal het op een dag moeten leren). 

Dank u voor uw antwoorden! 

Kun je het deel dat je aan het begin hebt plaatsen en ons vertellen welke richting je uiteindelijk wilt?

Dit is het stuk dat er alleen is om fysiek te illustreren wat ik wil doen. Het vooraanzicht is momenteel een doorboorde aanzicht, ik wil de oriëntatie van het onderdeel ten opzichte van het coördinatensysteem wijzigen om het vooraanzicht op het huidige vlak van de bovenkant te hebben (niet geboord). 

Deze code werkt, ik laat het aan u over, aangepast aan uw behoeften

Dim swApp As Object

Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long

Sub main()

Set swApp = Application.SldWorks

Set Part = swApp.ActiveDoc

boolstatus = Part.Extension.SelectByID2("Congé9", "SOLIDBODY", 0.306720518918638, 0.145146136734809, 2.68172410638385E-02, False, 1, Nothing, 0)
Dim myFeature As Object

Set myFeature = Part.FeatureManager.InsertMoveCopyBody2(0, 0, 0, 0, 0, 0, 0, 0, 0, 1.5707963267949, False, 1)
End Sub

Voor de functie zie deze link

http://help.solidworks.com/2016/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.ifeaturemanager~insertmovecopybody2.html

 

Voor het voorbeeld van een macro http://help.solidworks.com/2016/english/api/sldworksapi/Move_Bodies_Example_VB.htm

'-------------------------------------------------------------
' Preconditions:
' 1. Specified part document to open exists.
' 2. Run the macro.
'
' Postconditions: All of the bodies in the part document
' are moved to the specified location.
'
' NOTE: Because this part is used elsewhere, do not save
' any changes when closing it.
'--------------------------------------------------------------
Option Explicit
Sub SelectBodies(swApp As SldWorks.SldWorks, swModel As SldWorks.ModelDoc2, bodyArr As Variant)
' Select and mark the bodies to move
    Dim swSelMgr As SldWorks.SelectionMgr
    Dim swSelData As SldWorks.SelectData
    Dim body As Variant
    Dim swBody As SldWorks.Body2
    Dim status  As Boolean
    Set swSelMgr = swModel.SelectionManager
    Set swSelData = swSelMgr.CreateSelectData
    If IsEmpty(bodyArr) Then Exit Sub
    For Each body In bodyArr
        Set swBody = body
        swSelData.Mark = 1
        status = swBody.Select2(True, swSelData)
    Next body
End Sub
Sub main()
    Dim swApp As SldWorks.SldWorks
    Dim swModel As SldWorks.ModelDoc2
    Dim swPart As SldWorks.PartDoc
    Dim bodyArr As Variant
    Dim swFeatMgr As SldWorks.FeatureManager
    Dim swFeat As SldWorks.Feature
    Dim fileName As String
    Dim errors As Long
    Dim warnings As Long
    Set swApp = Application.SldWorks
    fileName = "C:\Program Files\SOLIDWORKS Corp\SOLIDWORKS\samples\tutorial\multibody\multi_inter.sldprt"
    Set swModel = swApp.OpenDoc6(fileName, swDocPART, swOpenDocOptions_e.swOpenDocOptions_Silent, "", errors, warnings)
    Set swPart = swModel
    Set swFeatMgr = swModel.FeatureManager
    swModel.ClearSelection2 True    
    ' Get the bodies to move
    bodyArr = swPart.GetBodies2(swAllBodies, false)
    SelectBodies swApp, swModel, bodyArr
    ' Move the bodies
    Set swFeat = swFeatMgr.InsertMoveCopyBody2(0.1, 0.2, 0.3, 0#, 0#, 0#, 0#, 0#, 0#, 0#, False, 1)
  End Sub

 

Heel erg bedankt voor de indicaties, ik zal proberen dit allemaal uit te voeren. Ik zal je op de hoogte houden als de macro van mijn kant werkt.

Nou, ik heb de macro geprobeerd nadat ik solidworks onder de knie had. Ik heb de bestandsnaam gewijzigd om het deel te hebben dat ik wilde, maar bij het uitvoeren van de macro werd het onderdeel alleen heel ver van zijn vlakken verdreven , maar de oriëntatie blijft hetzelfde en de vlakken hebben hetzelfde toeval op hun respectievelijke oppervlakken als vóór de macro-run. 

Ik zal proberen mezelf beter uit te leggen over mijn probleem. Ik wil mijn uitzicht van boven naar voren veranderen. Want als ik mijn tekening in SW wil maken, wil ik een project maken van de aanzichten van mijn voorvlak. 

Ik hoop dat ik duidelijk genoeg ben, ook al geef ik toe dat ik een beetje moeite heb om uit te leggen wat ik wil doen, in ieder geval bedankt!

De tweede macro is een voorbeeld mecro in uw geval gewijzigd

InsertMoveCopyBody2(0.1, 0.2, 0.3, 0#, 0#, 0#, 0#, 0#, 0#, 0#, False, 1)

bij

InsertMoveCopyBody2(0, 0, 0, 0, 0, 0, 0, 0, 0, 1.5707963267949, False, 1)

waarbij 1,57 de rotatiewaarde in radialen is

https://www.google.fr/webhp?sourceid=chrome-instant&rlz=1C1RLNS_frFR739FR739&ion=1&espv=2&ie=UTF-8#q=90deg+en+radians

 

Meer informatie over de functie InsertMoveCopy http://help.solidworks.com/2016/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.ifeaturemanager~insertmovecopybody2.html

De macro werkt perfect na het vervangen van de insertmovecopybody-regel, maar ik realiseerde me dat ik het onderdeel graag 180° op Y had willen draaien terwijl ik mijn coördinatensysteem en mijn vlakken vast had gehouden.

Bedankt voor deze macro die erg handig voor mij is! 

Ik laat je je probleem markeren als opgelost in dit geval voor zover het de Y-rotatie betreft, ik laat je de waarde op dezelfde regel zetten die je hebt gewijzigd, kijk in de eerder verstrekte hulp om de locatie van de Y-rotatie te bepalen

Oké en ter informatie: ik heb ook het pad van de bestandsnaam gewijzigd, zodat wanneer ik de macro uitvoer, het mijn onderdeel is dat actief is in solidworks en niet altijd hetzelfde is als de bestandsnaam waarop de bewerking wordt uitgevoerd. 

Nogmaals bedankt voor je zeer waardevolle hulp!