Pracujesz nad zespołem lub częścią? A jaki? (Belka(e), mała grubość, spawana mechanicznie... inne)
Byłoby interesujące mieć pojęcie o geometrii (1000 ścian ???), na którą przykładasz swoją siłę 1N (1Newton, to niewiele... Czy nie byłoby łatwiej pobawić się grawitacją lub masami? … Moja ciekawość nie będzie miała nic przeciwko małemu zrzutowi ekranu... lub lepiej plik *.sld... (Solidworks 2019 (to staromodny: 2019) ma tę zaletę, że może być wykorzystywany przez dużą liczbę obecnych tutaj forumowiczów...
Dzięki za zainteresowanie tematem! Badanie statyczne jest wykonywane albo w pliku części, albo na części w zespole. We wszystkich przypadkach część ma objętość (wytłoczenie) o grubości około 1,6 mm. W razie potrzeby mogę dostarczyć plik sld w wiadomości prywatnej.
Arf Wiem tylko to, że... To wyjaśnia 1,6 mm, mógłbym o tym pomyśleć, ale żeby było 1000 twarzy, albo ma cholernie oryginalny kształt, pełen dziur i wycięć, albo dołączasz komponenty, ale tam wszystko zmienia się w symulacji.
Domyślam się, że stałe punkty podparcia, o których mówisz, to obszary, w których płytka drukowana jest trzymana i mocowana.
Czy celem symulacji jest symulacja deformacji płytki drukowanej, jeśli na przykład znajduje się ona w elastycznej obudowie, czy też symulacja jej deformacji, jeśli obiekt na nią naciska?
@Sylk mierzę Moc i jej niezwykłe zdolności, takie jak telekineza, jasnowidzenie i manipulacja umysłem. Zostałem wyszkolony w sztuce samokontroli i medytacji. ale z solidworks jesteśmy w innym świecie, tylko Dassault ma nad nim kontrolę... w rzeczywistości nie myślę, że nawet my nie wiemy
FYI, oto kod, którego używam do wstawiania siły na każdej powierzchni w pętli:
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
Ale jak " zgrupować " kilka powierzchni w " partię ", która byłaby wywoływana przez polecenie wstawiania??? Chyba, że to nie jest właściwa logika?
Witaj fgauvreau, Spróbuj tego. Będzie przebiegać przez gry selekcyjne i tworzyć ukrytą siłę dla każdego (choć bez etapu tworzenia jej tylko po pierwszej stronie. Być może nie zrozumiałem powodu tego kroku)
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
Dziękuję bardzo! To jest dokładnie to, czego potrzebowałem... Udało mi się zintegrować kod z moim makrem, zarządzając wartością siły zgodnie z grą wyboru i tworząc stałe podpory na tej samej zasadzie.
StudyObj.ShowOrHideForce = FałszTexte préformaté nikiel, aby rozjaśnić zabieg!