Hallo zusammen, ich suche gerade nach einer Möglichkeit, die Neuausrichtung der Vorderansicht einer Datei zu automatisieren, die direkt von der Website eines Herstellers importiert wurde, da sonst das Teil auf Altium nicht erkannt wird. Es sind nur die Originalaufnahmen, die nicht gut ausgerichtet sind, und die auf die Website hochgeladene Datei erlaubt es mir nicht, sie zu ändern.
Ich denke, Sie können sich die Funktion "Verschieben kopieren " http://help.solidworks.com/2016/french/solidworks/sldworks/hidd_dve_feat_move_surf.htm
Prüfen Sie, ob die Funktion entspricht und in welchem Fall Sie das Makro dessen speichern können, was Sie interessiert (Drehung um 90° auf X oder Y oder Z)
@MaD, so wie ich es verstehen konnte, geht es nicht darum, den Raum zu bewegen, sondern die Sicht auf den Raum zu verändern.
Versuchen Sie mit dem Makrorekorder, sich darauf zu platzieren und zu sehen, ob Sie einen brauchbaren Code haben.
@KVuilleumier ist es die Ausrichtung des Teils, die ich in Bezug auf das Koordinatensystem ändern möchte, so dass die Vorderansicht die gewünschte ist. Ich muss auch die Platzierung des Markers neu definieren, vielleicht hätte ich das zuerst durchgehen sollen. Ich bin ein Anfänger in Solidworks, ich war vorher auf ProE und weiß daher nicht, wie ich vorgehen soll, zumal ich nicht weiß, wie man Makros macht (ich werde es eines Tages lernen müssen).
Vielen Dank für Ihre Antworten!
Können Sie den Teil, den Sie haben, an den Anfang stellen und uns sagen, in welche Richtung Sie am Ende wollen?
Dies ist das Stück, das nur dazu da ist, physisch zu veranschaulichen, was ich tun möchte. Die Vorderansicht ist derzeit eine durchbohrte Ansicht, ich möchte die Ausrichtung des Teils in Bezug auf das Koordinatensystem ändern, um die Vorderansicht auf der aktuellen Fläche der Oberseite (nicht gebohrt) zu haben.
Dieser Code funktioniert, ich überlasse ihn Ihnen, angepasst an Ihre Bedürfnisse
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
Für die Funktion siehe diesen Link
Für das SW-Beispielmakro 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
Vielen Dank für die Hinweise, ich werde versuchen, das alles umzusetzen. Ich werde Sie auf dem Laufenden halten, ob das Makro meinerseits funktioniert.
Nun, ich habe das Makro ausprobiert, nachdem ich den Dreh raus hatte. Ich habe den Dateinamen so geändert, dass er das gewünschte Teil hat, aber beim Ausführen des Makros wurde das Teil nur sehr weit von seinen Ebenen ausgestoßen , aber seine Ausrichtung bleibt gleich und die Ebenen haben auf ihren jeweiligen Oberflächen die gleiche Übereinstimmung wie vor dem Makrolauf.
Ich werde versuchen, mich besser über mein Problem zu erklären. Ich möchte meine Ansicht von oben nach vorne ändern. Denn wenn ich meine Zeichnung in SW machen möchte, möchte ich ein Projekt der Ansichten meiner Frontebene erstellen.
Ich hoffe, ich bin klar genug, auch wenn ich zugeben muss, dass ich ein wenig Schwierigkeiten habe, zu erklären, was ich tun möchte, danke auf jeden Fall!
Das zweite Makro ist ein Beispiel mecro in Ihrem Fall geändert
InsertMoveCopyBody2(0.1, 0.2, 0.3, 0#, 0#, 0#, 0#, 0#, 0#, 0#, False, 1)
bis
InsertMoveCopyBody2(0, 0, 0, 0, 0, 0, 0, 0, 0, 1.5707963267949, False, 1)
wobei 1,57 der Rotationswert im Bogenmaß ist
Weitere Informationen zur Funktion "InsertMoveCopy " http://help.solidworks.com/2016/english/api/sldworksapi/solidworks.interop.sldworks~solidworks.interop.sldworks.ifeaturemanager~insertmovecopybody2.html
Das Makro funktioniert einwandfrei, nachdem ich die Zeile insertmovecopybody ersetzt habe, aber ich habe festgestellt, dass ich das Teil gerne um 180° auf Y gedreht hätte, während mein Koordinatensystem und meine Ebenen fixiert bleiben.
Vielen Dank für dieses Makro, das für mich sehr nützlich ist!
Ich lasse Sie Ihr Problem in diesem Fall als gelöst markieren, was die Y-Drehung betrifft, ich lasse Sie den Wert in dieselbe Zeile setzen, die Sie geändert haben, schauen Sie in der zuvor bereitgestellten Hilfe nach, um die Position der Y-Drehung zu lochen
Okay und zur Information habe ich auch den Pfad des Dateinamens so geändert, dass beim Ausführen des Makros mein Teil in SOLIDWORKS aktiv ist und nicht immer derselbe ist wie der Dateiname, auf dem die Operation ausgeführt wird.
Nochmals vielen Dank für Ihre sehr wertvolle Hilfe!