Jak sprawdzić przenikanie między dwiema ścianami API Solidworks

Cześć

Pracuję nad modelem 3D w Solidworks. Chciałbym wiedzieć, jakiej funkcji muszę użyć, aby w szczególności sprawdzić przenikanie między dwiema powierzchniami (z różnych komponentów)? Jeśli ktoś ma makro, to jestem naprawdę zainteresowany.

Dziękuję za odpowiedzi :)

Witam

SolidWorks posiada funkcję sprawdzania Przenikania w złożeniu: http://help.solidworks.com/2015/english/solidworks/sldworks/hidd_dve_interference.htm

Czy znasz tę funkcję ?

Witam

Dziękuję za odpowiedź. Tak, znam tę funkcję, ale chciałbym sprawdzić automatyczne zakłócenia z makrem w Visual Basic For Application.

W takim przypadku możesz przeczytać ten przykład: http://help.solidworks.com/2015/english/api/sldworksapi/run_interference_detection_example_vb.htm

A także wyniki wyszukiwania w Pomocy WWW SolidWorks APi: http://help.solidworks.com/SearchEx.aspx?query=Interference&version=2015&lang=english&prod=api

Dziękuję YouRemrem za linki. Widziałem już linki. Pierwsza pokazuje przenikania w zespole globalnym. To, czego chcę, to interferencja między dwiema ścianami z różnych części, jak na przykład Twarz1 z Body1 z Face1. Szukałem w internecie, nie jestem pewien, czy to możliwe dla twarzy.

Próbuję użyć makra, ale to nie działa

Zakłócenia podrzędne()


Dim swApp jako SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swAssembly jako SldWorks.AssemblyDoc
Dim swModelExt As SldWorks.ModelDocExtension
Dim swComp As SldWorks.Component2
Dim swComp1 jako SldWorks.Component2
Dim swBody jako SldWorks.Body2
Dim swModeler jako SldWorks.Modeler
Sun swSelMgr jako SldWorks.SelectionMgr
Dim CompArray() jako SldWorks.Component2
Dim swSelData As SldWorks.SelectData

Deklaracja zmiennych

Dim OutputPath As String
Dim OutputFN jako ciąg
Przyciemnij komponent jako wariant
Dim Component1 As Variant
Przyciemnij komponenty jako wariant
Przyciemnij komponenty1 jako wariant
Dim Deselection As Boolean
Dim Deselekcja1 Ace Boolean
Dim arrBody As Variant
Przyciemnij twarz jako wariant
Dim arrBody1 As Variant
Dim arrFace1 As Variant
Dim a As Boolean
Dim i                           jako liczba całkowita
Dim i1                          jako liczba całkowita
Słońce j                           tak długo
Dim k                           As liczba całkowita
Dim k1                          jako liczba całkowita
Zakłócenie                   przyćmione jako wartość logiczna
Dim bRet                        As Boolean

Komórka1 = 1
Ustaw swApp = Application.SldWorks

Ustaw swModeler = swApp.GetModeler


"Użyj aktywnego dokumentu
Ustaw swModel = swApp.ActiveDoc

Ustaw swAssembly = swModel

Ustaw swModelExt = swModel.Extension

 Ustaw swSelMgr = swModel.SelectionManager

Ustaw swSelData = swSelMgr.CreateSelectData


 
Komponenty = swAssembly.GetComponents(False)
Components1 = swAssembly.GetComponents(False)
 
' dla każdego komponentu (artykułu) w zbiorze części (złożeniu)
Dla każdego komponentu w komponentach
        Ustaw swComp = Komponent
        Jeśli swComp.GetSuppression <> 0, to
        arrBody = swComp.GetBodies2(0)
        Zakończ jeżeli:

   Dla i = 0 Do UBound(arrBody)
   Ustaw swBody = arrBody(i)
   arrFace = swBody.GetFaces

        Dla k = 0 TB UBound(arrFace)
        Ustaw swFace = arrFace(k)
      Ustaw swEnt = swFace
      a = swEnt.Select4(True, swSelData)
    
   
  Dla każdego komponentu1 w komponentach1
    Ustaw swComp1 = Komponent1
    Jeśli swComp1.GetSuppression <> 0, to
    arrBody1 = swComp1.GetBodies2(0)
    Zakończ jeżeli:
   
   
   Dla i1 = 0 Do UBound(arrBody1)
   Ustaw swBody1 = arrBody1(i)
   arrFace1 = swBody1.GetFaces

        Dla k1 = 0 TB UBound(arrFace1)
        Ustaw swFace1 = arrFace1(k1)
      Ustaw swEnt1 = swFace1
      a1 = swEnt1.Select4(True, swSelData)
     

    Interferencja = swModeler.ICheckInterference3(swFace, swFace1, Nic)
    Debug.Print "Zakłócenia"; Interferencja
    Jeśli swModel.GetEntityName(swFace) <> swModel.GetEntityName(swFace1) Następnie
    DeselectionFace = swEnt1.DeSelect()
    Zakończ jeżeli:
   
    Następny k1
    Następny i1

    Następny komponent1

DeselectionFace1 = swEnt.DeSelect()

Następny k
Dalej i
Następny komponent
  
   
Koniec subwoofera