So überprüfen Sie die Interferenz zwischen zwei Flächen API Solidworks

Hallo

Ich arbeite an einem 3D-Modell in Solidworks. Ich möchte wissen, mit welcher Funktion ich insbesondere Interferenzen zwischen zwei Flächen (von unterschiedlichen Bauteilen) überprüfen muss? Wenn jemand ein Makro hat, bin ich wirklich interessiert.

Vielen Dank für Ihre Antworten :)

Hallo

SolidWorks verfügt über eine Funktion zur Überprüfung von Kollisionen in der Baugruppe: http://help.solidworks.com/2015/english/solidworks/sldworks/hidd_dve_interference.htm

Kennen Sie diese Funktion ?

Hallo

Vielen Dank für Ihre Antwort. Ja Ich kenne diese Funktion, aber ich möchte Interferenzen automatisch mit einem Makro auf Visual Basic For Application überprüfen.

In diesem Fall können Sie dieses Beispiel lesen: http://help.solidworks.com/2015/english/api/sldworksapi/run_interference_detection_example_vb.htm

Und auch Ergebnisse für die Suche in der SolidWorks APi Webhilfe : http://help.solidworks.com/SearchEx.aspx?query=Interference&version=2015&lang=english&prod=api

Danke YouRemrem für die Links. Ich hatte die Links bereits gesehen. Die erste zeigt die Kollisionen in der globalen Baugruppe. Was ich möchte, ist die Interferenz zwischen zwei Flächen aus verschiedenen Teilen, wie z.B. Fläche1 von Körper1 mit Fläche1 von Körper2. Ich habe im Internet gesucht, ich bin mir nicht sicher, ob es für das Gesicht möglich ist.

Ich versuche ein Makro, aber es funktioniert nicht

Sub-Interferenz()


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

Deklaration von Variablen

Dim OutputPath als Zeichenfolge
Dim OutputFN als String
Komponente als Variante dimmen
Komponenten1 als Variante dimmen
Komponenten als Variante dimmen
Komponenten1 als Variante dimmen
Abwahl als boolescher Wert dimmen
Deauswahl dimmen1 Ace Boolean
Dim arrBody als Variante
Dim arrFace als Variante
Dim arrBody1 als Variante
Dimmen arrFace1 als Variante
Dim a As Boolean
Dim i                           als Integer
Dim i1                          als Ganzzahl
Sonne j                           So lang
Dim k                           Als Ganzzahl
Dim k1                          als Ganzzahl
Schwache Interferenz                   als boolescher Wert
Dim bRet                        als boolescher Wert

Zelle1 = 1
Legen Sie swApp = Application.SldWorks fest

Set swModeler = swApp.GetModeler


"Verwenden Sie das aktive Dokument
Festlegen von swModel = swApp.ActiveDoc

Legen Sie swAssembly = swModel fest

Legen Sie swModelExt = swModel.Extension fest

 Legen Sie swSelMgr = swModel.SelectionManager fest

Set swSelData = swSelMgr.CreateSelectData


 
Komponenten = swAssembly.GetComponents(Falsch)
Komponenten1 = swAssembly.GetComponents(Falsch)
 
' für jede Komponente (Teil) in der Teilesammlung (Baugruppe)
Für jede Komponente in Komponenten
        Festlegen von swComp = Komponente
        Wenn swComp.GetSuppression <> 0 ist, dann
        arrBody = swComp.GetBodies2(0)
        Ende, wenn

   Für i = 0 Bis UBound(arrBody)
   Setze swBody = arrBody(i)
   arrFace = swBody.GetFaces

        Für k = 0 TB UBound(arrFace)
        Set swFace = arrFace(k)
      Set swEnt = swFace
      a = swEnt.Select4(Wahr, swSelData)
    
   
  Für jede Komponente1 In Komponenten1
    Legen Sie swComp1 = Komponente1 fest
    Wenn swComp1.GetSuppression <> 0 ist, dann
    arrBody1 = swComp1.GetBodies2(0)
    Ende, wenn
   
   
   Für i1 = 0 Bis UBound(arrBody1)
   Legen Sie swBody1 = arrBody1(i) fest.
   arrFace1 = swBody1.Gesichter abrufen

        Für k1 = 0 TB UBound(arrFace1)
        Festlegen von swFace1 = arrFace1(k1)
      Legen Sie swEnt1 = swFace1 fest
      a1 = swEnt1.Select4(Wahr, swSelData)
     

    Interferenz = swModeler.ICheckInterference3(swFace, swFace1, Nichts)
    Debug.Print "Interferenz"; Interferenz
    Wenn swModel.GetEntityName(swFace) <> swModel.GetEntityName(swFace1) dann
    DeselectionFace = swEnt1.DeSelect()
    Ende, wenn
   
    Weiter k1
    Nächster i1

    Nächste Komponente1

DeselectionFace1 = swEnt.DeSelect()

Weiter k
Weiter i
Nächste Komponente
  
   
Ende Sub