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
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
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!