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 |
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 |
|
' ****** |
66 |
|
|
67 |
|
' traitement des coques-coques |
68 |
|
DetectionCoqueCoque() |
69 |
< |
|
69 |
> |
DecouperCoqueCoque() |
70 |
|
' |
71 |
|
|
72 |
|
|
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() |
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> |
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 |
|
|
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 |
|
|
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 |