ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magicsld/Intersections.vb
(Generate patch)

Comparing magicsld/Intersections.vb (file contents):
Revision 40 by bournival, Mon Aug 20 21:30:28 2007 UTC vs.
Revision 48 by bournival, Wed Aug 22 21:18:12 2007 UTC

# Line 1 | Line 1
1 + Imports SolidWorks.Interop
2 + Imports SolidWorks.Interop.swconst
3 + Imports SolidWorks.Interop.swpublished
4 +
5   Module Intersections
6      Public DefAttrInterALAL As SldWorks.AttributeDef
7      Public DefAttrConditionLimite As SldWorks.AttributeDef
# Line 27 | Line 31 | Module Intersections
31          ' *******
32          ' quelques options de performance
33          ' *******
34 <        swApp.SetUserPreferenceIntegerValue(SwConst.swUserPreferenceIntegerValue_e.swAutoSaveInterval, 0)
34 >        swApp.SetUserPreferenceIntegerValue(swconst.swUserPreferenceIntegerValue_e.swAutoSaveInterval, 0)
35          swModel.SetAddToDB(True)
36          swModel.SetDisplayWhenAdded(False)
37          ' ******
# Line 62 | Line 66 | Module Intersections
66  
67          ' traitement des coques-coques
68          DetectionCoqueCoque()
69 <
69 >        DecouperCoqueCoque()
70          '
71  
72  
# Line 70 | Line 74 | Module Intersections
74          ' *******
75          ' quelques options de performance, remettre à la position initiale
76          ' *******
77 <        swApp.SetUserPreferenceIntegerValue(SwConst.swUserPreferenceIntegerValue_e.swAutoSaveInterval, 15)
77 >        swApp.SetUserPreferenceIntegerValue(swconst.swUserPreferenceIntegerValue_e.swAutoSaveInterval, 15)
78          swModel.SetAddToDB(False)
79          swModel.SetDisplayWhenAdded(True)
80          swModel.GraphicsRedraw2()
# Line 84 | Line 88 | Module Intersections
88  
89  
90      ''' <summary>
91 +    ''' Sub qui découpe les coques en fonction des informations placées dans le InterCoqueCoque
92 +    ''' </summary>
93 +    ''' <remarks></remarks>
94 +    Private Sub DecouperCoqueCoque()
95 +        Dim rayon As Double
96 +
97 +
98 +        For Each Coque As SlyFaceCoque In Commun.lst_FaceCoque
99 +            For Each interCC As InterCoqueCoque In Coque.lst_InterCoqueCoque
100 +                rayon = IIf(Coque Is interCC.sFaceCoque1, interCC.sFaceCoque2.GetEpaisseur, interCC.sFaceCoque1.GetEpaisseur)
101 +                Dim sweep As SldWorks.Body2 = interCC.GénérerSweep(interCC.sketch, rayon)
102 +                interCC.DecouperCoque(Coque, sweep)
103 +
104 +                ' reste à retrouver les faces internes.
105 +                interCC.MarquerFacesInternes(IIf(Coque Is interCC.sFaceCoque1, interCC.sFaceCoque2, interCC.sFaceCoque1), IIf(Coque Is interCC.sFaceCoque1, interCC.sFaceCoque1, interCC.sFaceCoque2))
106 +            Next
107 +        Next
108 +
109 +
110 +    End Sub
111 +
112 +    ''' <summary>
113      '''  sub qui créé une instance de la classe interCoqueCoque s'il y a une intersection de ce type
114      ''' </summary>
115      ''' <remarks></remarks>
# Line 91 | Line 117 | Module Intersections
117  
118          Dim sketch As SldWorks.Sketch = Nothing
119          Dim interCC As InterCoqueCoque = Nothing
120 +        Dim Coque1 As SlyFaceCoque, Coque2 As SlyFaceCoque
121  
122 <        For Each Coque1 As SlyFaceCoque In Commun.lst_FaceCoque
123 <            For Each coque2 As SlyFaceCoque In lst_FaceCoque
124 <
125 <                If DetectFaceFace(coque2.SwFace, Coque1.SwFace, True, sketch) Then
122 >        For i As Integer = 0 To Commun.lst_FaceCoque.Count - 2 'For Each Coque1 As SlyFaceCoque In Commun.lst_FaceCoque
123 >            Coque1 = Commun.lst_FaceCoque.Item(i)
124 >            For j As Integer = i + 1 To Commun.lst_FaceCoque.Count - 1 '  For Each coque2 As SlyFaceCoque In lst_FaceCoque
125 >                Coque2 = Commun.lst_FaceCoque.Item(j)
126 >                If DetectFaceFace(Coque2.SwFace, Coque1.SwFace, True, sketch) Then
127                      ' création de l'instance de interFace-face entre coque et coque
128  
129                      interCC = New InterCoqueCoque
130                      interCC.sFaceCoque1 = Coque1
131 <                    interCC.sFaceCoque2 = coque2
131 >                    interCC.sFaceCoque2 = Coque2
132                      interCC.FaceDeSection = False
133                      interCC.sketch = sketch
134  
135                      Coque1.lst_InterCoqueCoque.Add(interCC)
136 <                    coque2.lst_InterCoqueCoque.Add(interCC)
136 >                    Coque2.lst_InterCoqueCoque.Add(interCC)
137                  End If
138  
139 <
140 <            Next
113 <        Next
139 >            Next j
140 >        Next i
141  
142      End Sub
143  
# Line 160 | Line 187 | Module Intersections
187  
188          nom = "InterALAL"
189          DefAttrInterALAL = swApp.DefineAttribute(nom)
190 <        DefAttrInterALAL.AddParameter("X", SwConst.swParamType_e.swParamTypeDouble, 0, 0)
191 <        DefAttrInterALAL.AddParameter("Y", SwConst.swParamType_e.swParamTypeDouble, 0, 0)
192 <        DefAttrInterALAL.AddParameter("Z", SwConst.swParamType_e.swParamTypeDouble, 0, 0)
193 <        DefAttrInterALAL.AddParameter("T", SwConst.swParamType_e.swParamTypeDouble, -1, 0)
190 >        DefAttrInterALAL.AddParameter("X", swconst.swParamType_e.swParamTypeDouble, 0, 0)
191 >        DefAttrInterALAL.AddParameter("Y", swconst.swParamType_e.swParamTypeDouble, 0, 0)
192 >        DefAttrInterALAL.AddParameter("Z", swconst.swParamType_e.swParamTypeDouble, 0, 0)
193 >        DefAttrInterALAL.AddParameter("T", swconst.swParamType_e.swParamTypeDouble, -1, 0)
194          retval = DefAttrInterALAL.Register()
195          If retval = False Then MsgBox("Enregistrement raté pour le InterALAL")
196  
197  
198          nom = "ConditionLimite"
199          DefAttrConditionLimite = swApp.DefineAttribute(nom)
200 <        DefAttrConditionLimite.AddParameter("CL", SwConst.swParamType_e.swParamTypeString, 0, 0)
200 >        DefAttrConditionLimite.AddParameter("CL", swconst.swParamType_e.swParamTypeString, 0, 0)
201          retval = DefAttrConditionLimite.Register()
202          If retval = False Then MsgBox("Enregistrement raté pour le COndition Limite")
203  
# Line 949 | Line 976 | Module Intersections
976          ' function qui détecte si une arête coupe une face, si c'est le cas la function retourne true et remplie le tableau xyz avec le point d'intersection
977  
978          Dim P1 As Object = Nothing, p2 As Object = Nothing
979 <        If swModel.ClosestDistance(swArete, swFace, P1, P2) > Epsilon Then Return False
979 >        If swModel.ClosestDistance(swArete, swFace, P1, p2) > Epsilon Then Return False
980  
981          Dim swCurve As SldWorks.Curve
982          Dim swSurf As SldWorks.Surface

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines