Ich arbeite an Solidworks 2019 Prenium... Ergänzung " Simulation "
Ich möchte ein Makro erstellen, das eine Kraft in automatisch einfügt. Die Idee...
Abrufen eines bereits erstellten Auswahlsatzes mit mehreren Flächen
eine Kraft von 1N auf jede Fläche des Auswahlsatzes einfügen
" Verstecken " Sie die Macht, da es mehr als 1000 Gesichter im Auswahlspiel geben kann
Ich habe es geschafft, eine Kraft pro Seite zu erzeugen, indem ich die Steuerung in eine Schleife versetzt habe, aber plötzlich wird der Simulationsbericht sehr schwer und unlesbar.
Wenn ich die Simulationsstudie manuell erstelle, ist hier meine Methode:
Ich wähle eine der Flächen des Auswahlsatzes aus
Ich setze eine Kraft von 1N ein
Ich " verstecke " die Macht
Ich bearbeite die Kraft - Ich lösche die zuvor ausgewählte Fläche - Ich wähle das Auswahlset aus (alle Seiten des Sets passen in eine einzige Kraft"
Die Idee wird auch sein, das Gleiche mit den festen Auflageflächen in einem 2. Schritt zu machen...
Hilfe! Vielen Dank im Voraus an alle Programmierprofis!
Arbeiten Sie an einer Baugruppe oder einem Teil? Und welche Art? (Balken(e),geringe Dicke, mechanisch geschweißt... Sonstiges)
Es wäre interessant, eine Vorstellung von der Geometrie (1000 Flächen ???) zu haben, auf die Sie Ihre Kraft von 1N (1Newton, das ist nicht viel... Wäre es nicht einfacher, mit der Schwerkraft oder mit der Masse zu spielen? … Meine Neugier hat nichts gegen einen kleinen Screenshot ... oder besser die *.sld-Datei... (Solidworks 2019 (das ist altmodisch: 2019) hat den Vorteil, dass es von einer großen Anzahl der hier anwesenden Forenteilnehmer genutzt werden kann...
Vielen Dank für das Interesse an dem Thema! Die statische Studie wird entweder in einer Teiledatei oder an einem Teil in einer Baugruppe durchgeführt. In allen Fällen hat das Teil ein Volumen (Extrusion) von ca. 1,6 mm Dicke. Ich kann bei Bedarf eine sld-Datei in einer privaten Nachricht bereitstellen.
Arf das weiß ich nur... Das erklärt das 1,6mm, ich hätte dran denken können, aber wenn es 1000 Flächen gibt, hat es entweder eine verdammt originelle Form, voller Löcher und Ausschnitte, oder man bezieht die Komponenten mit ein, aber da ändert es alles an der Simulation.
Ich denke, die festen Stützpunkte, von denen Sie sprechen, sind die Bereiche, in denen die Leiterplatte gehalten und fixiert wird.
Besteht der Zweck der Simulation darin, eine Verformung der Leiterplatte zu simulieren, wenn sie sich z.B. in einem flexiblen Gehäuse befindet, oder ihre Verformung zu simulieren, wenn ein Objekt darauf drückt?
@Sylk messe ich mich mit der Macht und ihren außergewöhnlichen Fähigkeiten wie Telekinese, Hellsehen und Gedankenmanipulation auseinander. Ich wurde in der Kunst der Selbstbeherrschung und Meditation geschult. aber mit SOLIDWORKS befinden wir uns in einer anderen Welt, nur Dassault hat die Kontrolle darüber... in der Tat, nein, ich glaube, dass selbst wir es nicht wissen
Zu Ihrer Information, hier ist der Code, den ich verwende, um die Kraft an jeder Oberfläche in der Schleife einzufügen:
Dim swApp As Object
Dim Part As Object
Dim boolstatus As Boolean
Dim longstatus As Long, longwarnings As Long
Sub insert_force(DispatchObj1 As Object)
Set swApp = Application.SldWorks
Set Part = swApp.ActiveDoc
Dim COSMOSWORKSObj As Object
Dim CWAddinCallBackObj As Object
Set CWAddinCallBackObj = swApp.GetAddInObject("CosmosWorks.CosmosWorks")
Set COSMOSWORKSObj = CWAddinCallBackObj.COSMOSWORKS
Dim ActiveDocObj As Object
Dim StudyManagerObj As Object
Dim LoadsAndRestraintsManagerObj As Object
Dim ErrorCodeObj As Long
Dim ContactManagerObj As Object
Set ActiveDocObj = COSMOSWORKSObj.ActiveDoc()
Set StudyManagerObj = ActiveDocObj.StudyManager()
Dim StudyObj As Object
Set StudyObj = StudyManagerObj.GetStudy(0)
Set LoadsAndRestraintsManagerObj = StudyObj.LoadsAndRestraintsManager()
DispArray = Array(DispatchObj1) 'Récupération de la surface
Dim CWForceObj As Object
Dim DistanceValues As Variant
Dim ForceValues As Variant
Dim ComponentValues As Variant
Dim data(6) As Double
data(0) = 1
data(1) = 1
data(2) = 1
data(3) = 1
data(4) = 1
data(5) = 1
ComponentValues = data
Set CWForceObj = LoadsAndRestraintsManagerObj.AddForce3(1, 0, -1, 0, 0, 0, (DistanceValues), (ForceValues), 0, False, 0, 0, 0, 1, (ComponentValues), False, False, (DispArray), Nothing, False, ErrorCodeObj)
' Redraw
Part.GraphicsRedraw2
Set StudyManagerObj = Nothing
Set ActiveDocObj = Nothing
Set CWAddinCallBackObj = Nothing
Set COSMOSWORKSObj = Nothing
End Sub
Aber wie " gruppiert " man mehrere Flächen zu einem " Batch ", der mit dem Einfügebefehl aufgerufen wird??? Es sei denn, es ist nicht die richtige Logik??
Hallo fgauvreau, Versuchen Sie dies. Es wird sich durch die Auswahlspiele ziehen und eine verborgene Kraft für alle erzeugen (allerdings ohne den Schritt, sie nur auf der ersten Seite zu erstellen. Ich habe den Grund für diesen Schritt vielleicht nicht verstanden)
Option Explicit
Dim swApp As SldWorks.SldWorks
Sub main()
Dim swModel As SldWorks.ModelDoc2
Dim swFeat As SldWorks.Feature
Dim swSelectionSetFolder As SldWorks.SelectionSetFolder
Dim vSels As Variant
Dim vSel As Variant
Dim swSelSet As SldWorks.SelectionSet
Set swApp = Application.SldWorks
Set swModel = swApp.ActiveDoc
Set swFeat = swModel.FirstFeature
While Not swFeat Is Nothing
If swFeat.Name = "Selection Sets" Then
Set swSelectionSetFolder = swFeat.GetSpecificFeature2
vSels = swSelectionSetFolder.GetSelectionSets
For Each vSel In vSels
Set swSelSet = vSel
Debug.Print "Nom du jeu de Selection: " & swSelSet.GetName
swModel.ClearSelection2 True
CreateForce swSelSet
Next
End If
Set swFeat = swFeat.GetNextFeature
Wend
End Sub
Sub CreateForce(swSelSet As SldWorks.SelectionSet)
Dim COSMOSWORKSObj As Object
Dim CWAddinCallBackObj As Object
Set CWAddinCallBackObj = swApp.GetAddInObject("CosmosWorks.CosmosWorks")
Set COSMOSWORKSObj = CWAddinCallBackObj.COSMOSWORKS
Dim ActiveDocObj As Object
Dim StudyManagerObj As Object
Dim LoadsAndRestraintsManagerObj As Object
Dim ErrorCodeObj As Long
Dim ContactManagerObj As Object
Set ActiveDocObj = COSMOSWORKSObj.ActiveDoc()
Set StudyManagerObj = ActiveDocObj.StudyManager()
Dim StudyObj As Object
Set StudyObj = StudyManagerObj.GetStudy(0)
Set LoadsAndRestraintsManagerObj = StudyObj.LoadsAndRestraintsManager()
Dim vSelItems As Variant
Dim vSelItemTypes As Variant
Dim swSelItem As SldWorks.SelectionSetItem
Dim swFace As SldWorks.Face2
Dim j As Integer
vSelItems = swSelSet.GetSelectionSetItems
vSelItemTypes = swSelSet.GetSelectionSetItemTypes
Dim DispArray As Variant
Dim cnt As Long
cnt = UBound(vSelItems)
Dim myArray()
ReDim Preserve myArray(cnt)
For j = 0 To cnt
Set swSelItem = vSelItems(j)
'If vSelItemTypes(j) = swSelectType_e.swSelFACES Then
Set myArray(j) = swSelItem.GetCorrespondingItem
'End If
Next
DispArray = myArray
Dim CWForceObj As Object
Dim DistanceValues As Variant
Dim ForceValues As Variant
Dim ComponentValues As Variant
Dim data(6) As Double
data(0) = 1: data(1) = 1: data(2) = 1: data(3) = 1: data(4) = 1: data(5) = 1
ComponentValues = data
Set CWForceObj = LoadsAndRestraintsManagerObj.AddForce3(1, 0, -1, 0, 0, 0, (DistanceValues), (ForceValues), 0, False, 0, 0, 0, 1, (ComponentValues), False, False, (DispArray), Nothing, False, ErrorCodeObj)
StudyObj.ShowOrHideForce = False
Set StudyManagerObj = Nothing
Set ActiveDocObj = Nothing
Set CWAddinCallBackObj = Nothing
Set COSMOSWORKSObj = Nothing
End Sub
Vielen Dank! Das war genau das, was ich brauchte... Ich war in der Lage, den Code in mein Makro zu integrieren, indem ich den Wert der Kraft entsprechend dem Auswahlspiel verwaltete und feste Stützen nach dem gleichen Prinzip erstellte.
StudyObj.ShowOrHideForce = FalschTexte préformaté Nickel zur Aufhellung der Behandlung!