ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magicsld/EncapCL.vb
Revision: 40
Committed: Mon Aug 20 21:30:28 2007 UTC (17 years, 8 months ago) by bournival
File size: 23336 byte(s)
Log Message:
Projet de these de Sylvain Bournival. Attention projet VB.

File Contents

# Content
1 Public Class EncapCL
2
3
4 Private Structure CCF
5 Dim Tipe As String
6 Dim valeur As Double
7 End Structure
8
9 Private Structure PointC
10 Dim xp As Double ' P pour proche
11 Dim yp As Double
12 Dim zp As Double
13 Dim xA As Double ' A pour axe
14 Dim yA As Double
15 Dim zA As Double
16 End Structure
17
18 Private swEnt As SldWorks.Entity
19 Private Conditions As New Collection
20 Private swSommet As SldWorks.Vertex
21 Private swArete As SldWorks.Edge
22 Private swFace As SldWorks.Face2
23 Private Commentaire As Object ' le commentaire
24
25 Private Shared NoCL As Long ' un compteur sur les numéros de conditions, pour avoir un nom unique...
26
27
28 ''' <summary>
29 ''' Constructeur si l'entité est un feature d'attribut
30 ''' </summary>
31 ''' <param name="Feature">Un feature étant un attribut</param>
32 ''' <remarks>Plante probablement si le feature n'est pas un attribut....</remarks>
33 Public Sub New(ByRef Feature As SldWorks.Feature)
34 If Not Feature.GetTypeName = "Attribute" Then Exit Sub
35 Dim attribut As SldWorks.Attribute
36 attribut = Feature.GetSpecificFeature2()
37 Dim p As SldWorks.Parameter
38 Dim chaine As String
39 Dim nb As Integer
40 Dim i As Integer
41 Dim c As CCF
42
43 Dim swent As SldWorks.Entity
44
45 Intersections.RegisterAttribut()
46 p = attribut.GetParameter("CL")
47 chaine = p.GetStringValue
48 If chaine = "" Then Exit Sub
49
50 nb = Left(chaine, 2)
51
52 For i = 1 To nb ' chaque instance de Condition a 14 caractères, 2 pour le type et 12 pour la valeur
53 c = New CCF
54 c.Tipe = Mid(chaine, (i - 1) * 14 + 3, 2)
55 c.valeur = CDbl(Mid(chaine, (i - 1) * 14 + 5, 12))
56 Conditions.Add(c)
57 Next i
58
59 swent = attribut.IGetEntity2()
60
61 Select Case swent.GetType
62 Case SwConst.swSelectType_e.swSelVERTICES
63 Me.swSommet = swent
64 Case SwConst.swSelectType_e.swSelEDGES
65 Me.swArete = swent
66 Case SwConst.swSelectType_e.swSelFACES
67 Me.swFace = swent
68 End Select
69 End Sub
70
71
72 ''' <summary>
73 ''' Constructeur si l'entité est un attribut
74 ''' </summary>
75 ''' <param name="Attribut">L'attribut</param>
76 ''' <remarks></remarks>
77 Public Sub New(ByRef Attribut As SldWorks.Attribute)
78 Dim p As SldWorks.Parameter
79 Dim chaine As String
80 Dim nb As Integer
81 Dim i As Integer
82 Dim c As CCF
83
84 Dim swent As SldWorks.Entity
85
86 Intersections.RegisterAttribut()
87 p = Attribut.GetParameter("CL")
88 chaine = p.GetStringValue
89 If chaine = "" Then Exit Sub
90
91 nb = Left(chaine, 2)
92
93 For i = 1 To nb ' chaque instance de Condition a 14 caractères, 2 pour le type et 12 pour la valeur
94 c = New CCF
95 c.Tipe = Mid(chaine, (i - 1) * 14 + 3, 2)
96 c.valeur = CDbl(Mid(chaine, (i - 1) * 14 + 5, 12))
97 Conditions.Add(c)
98 Next i
99
100 swent = Attribut.IGetEntity2()
101
102 Select Case swent.GetType
103 Case SwConst.swSelectType_e.swSelVERTICES
104 Me.swSommet = swent
105 Case SwConst.swSelectType_e.swSelEDGES
106 Me.swArete = swent
107 Case SwConst.swSelectType_e.swSelFACES
108 Me.swFace = swent
109 End Select
110
111 End Sub
112
113 ''' <summary>
114 ''' Constructeur si l'entité est un sommet
115 ''' </summary>
116 ''' <param name="Sommet"></param>
117 ''' <remarks></remarks>
118 Public Sub New(ByRef Sommet As SldWorks.Vertex)
119 Intersections.RegisterAttribut()
120 swEnt = Sommet
121 swSommet = Sommet
122 Initialiser()
123 End Sub
124
125
126 ''' <summary>
127 ''' Constructeur si l'entité est une arète
128 ''' </summary>
129 ''' <param name="Arete"></param>
130 ''' <remarks></remarks>
131 Public Sub New(ByRef Arete As SldWorks.Edge)
132 Intersections.RegisterAttribut()
133 swEnt = Arete
134 swArete = Arete
135 Initialiser()
136 End Sub
137
138 ''' <summary>
139 ''' Constructeur si l'entité est une face
140 ''' </summary>
141 ''' <param name="Face"></param>
142 ''' <remarks></remarks>
143 Public Sub New(ByRef Face As SldWorks.Face2)
144 Intersections.RegisterAttribut()
145 swEnt = Face
146 swFace = Face
147 Initialiser()
148 End Sub
149
150
151 ''' <summary>
152 ''' Sub qui vient prendre l'attribut et qui lit les conditions déjà présentes pour remplir les listes
153 ''' </summary>
154 ''' <remarks></remarks>
155 Public Sub Initialiser()
156 ' si on fait new et que l'on a déja un attribut, il faut décoder les anciennes conditions
157 Dim attr As SldWorks.Attribute
158 Dim p As SldWorks.Parameter
159 Dim chaine As String
160 Dim nb As Integer
161 Dim i As Integer
162 Dim c As CCF
163
164 attr = Attribut()
165 p = attr.GetParameter("CL")
166 chaine = p.GetStringValue
167 If chaine = "" Then Exit Sub
168
169 nb = Left(chaine, 2)
170
171 For i = 1 To nb ' chaque instance de Condition a 14 caractères, 2 pour le type et 12 pour la valeur
172 c = New CCF
173 c.Tipe = Mid(chaine, (i - 1) * 14 + 3, 2)
174 c.valeur = CDbl(Mid(chaine, (i - 1) * 14 + 5, 12))
175 Conditions.Add(c)
176 Next i
177
178
179 End Sub
180
181
182 ''' <summary>
183 ''' Function retourne l'attribut de l'entité ou qui le créée s'il n'existe pas
184 ''' </summary>
185 ''' <returns></returns>
186 ''' <remarks>Ne prend pas la variable privete de l'attribut, mais va voir directement sur l'entité...</remarks>
187 Private Function Attribut() As SldWorks.Attribute
188 Dim attr As SldWorks.Attribute
189 Dim nom As String = Nothing
190
191 attr = swEnt.FindAttribute(Intersections.DefAttrConditionLimite, 0)
192
193 While attr Is Nothing
194 nom = "Condition_" & Format(NoCL, "0000")
195 NoCL += 1
196 attr = Intersections.DefAttrConditionLimite.CreateInstance5(swModel, swEnt, nom, 0, 2) ' 0 = swThisconfig
197 End While
198
199 Commun.GererDossiers("Conditions Limites", nom)
200
201 Return attr
202
203 End Function
204
205
206 ''' <summary>
207 ''' Sub qui ajoute une condition à la liste.
208 ''' </summary>
209 ''' <param name="Tipe">Le type de condition aux limites (Fx, Fy, Px ...)</param>
210 ''' <param name="valeur">La valeur de la condition</param>
211 ''' <remarks>Ajoute à la liste ET à l'attribut.</remarks>
212 Public Sub AjouterCondition(ByRef Tipe As String, ByRef valeur As Double, Optional ByVal dessiner As Boolean = True)
213 Dim Cond As New CCF
214 Cond.Tipe = Tipe
215 Cond.valeur = valeur
216 Conditions.Add(Cond)
217 EcrireAttribut()
218 If dessiner Then Me.DessinerCondition(Cond)
219 End Sub
220
221 ''' <summary>
222 ''' Sub qui écrit sur l'attribut la condition aux limite
223 ''' </summary>
224 ''' <remarks></remarks>
225 Private Sub EcrireAttribut()
226 Dim chaine As String
227 Dim p As SldWorks.Parameter
228 Dim C As CCF
229 Dim attr As SldWorks.Attribute
230
231 attr = Attribut()
232
233 p = Attribut.GetParameter("CL")
234 chaine = (Format(CInt(Conditions.Count), "00"))
235 For Each C In Conditions
236 chaine = chaine & C.Tipe
237 If C.valeur < 0 Then
238 chaine = chaine & Format(C.valeur, "0.0000e+000")
239 Else
240 chaine = chaine & "+" & Format(C.valeur, "0.0000e+000")
241 End If
242
243 Next
244
245 If chaine.Contains(",") Then
246 For i As Integer = 1 To Len(chaine)
247 If Mid(chaine, i, 1) = "," Then Mid(chaine, i, 1) = "."
248 Next i
249 End If
250
251 p.SetStringValue2(chaine, 2, "") ' 2 = allconfigurations
252
253 ' options user friendly... on ajoute un commentaire
254 Dim swFeat As SldWorks.Feature
255 Dim ext As SldWorks.ModelDocExtension
256 Dim selmgr As SldWorks.SelectionMgr
257 ext = swModel.Extension
258 selmgr = swModel.SelectionManager
259
260 Try
261
262 ext.SelectByID2(attr.GetName, "ATTRIBUTE", 0, 0, 0, False, 0, Nothing, 0)
263 swEnt = selmgr.GetSelectedObject5(1)
264 swFeat = swEnt
265 swEnt = attr.GetEntity2()
266 Select Case swEnt.GetType
267 Case SwConst.swSelectType_e.swSelFACES
268 chaine = "Face" & vbCr
269 Case SwConst.swSelectType_e.swSelEDGES
270 chaine = "Arete" & vbCr
271 Case SwConst.swSelectType_e.swSelVERTICES
272 chaine = "Sommet" & vbCr
273 End Select
274
275 For Each C In Conditions
276 chaine = chaine & vbCr & C.Tipe & " "
277 If C.valeur < 0 Then
278 chaine = chaine & Format(C.valeur, "0.0000e+000")
279 Else
280 chaine = chaine & "+" & Format(C.valeur, "0.0000e+000")
281 End If
282
283 Next
284
285 If chaine.Contains(",") Then
286 For i As Integer = 1 To Len(chaine)
287 If Mid(chaine, i, 1) = "," Then Mid(chaine, i, 1) = "."
288 Next i
289 End If
290 swFeat.addComment(chaine)
291
292 Catch
293 MsgBox("N'arrive pas à mettre de commentaires sur le feature: " & swFeat.Name)
294 End Try
295
296
297 End Sub
298
299 ''' <summary>
300 ''' Routine qui efface une condition
301 ''' </summary>
302 ''' <param name="laquelle">Le numéro de la condition à effacer</param>
303 ''' <remarks>Efface de la liste et de l'attribut</remarks>
304 Public Sub EffacerCondition(ByRef laquelle As Integer)
305 If laquelle > Conditions.Count Then Debug.Write("On demande d'effacer une condition qui n'existe pas... Demande non processée") : Exit Sub
306 Conditions.Remove(laquelle)
307 EcrireAttribut()
308 End Sub
309
310
311 ''' <summary>
312 ''' Routine qui efface toutes les conditions
313 ''' </summary>
314 ''' <remarks></remarks>
315 Public Sub EffacerTouteCondition()
316 Conditions.Clear()
317 Attribut.Delete(True)
318 End Sub
319
320 ''' <summary>
321 ''' Donne de nombre d'attributs
322 ''' </summary>
323 ''' <returns></returns>
324 ''' <remarks></remarks>
325 Public Function GetNbCondition() As Integer
326 Return Conditions.Count
327 End Function
328
329
330 ''' <summary>
331 ''' Donne le type de la condition aux limite
332 ''' </summary>
333 ''' <param name="Laquelle">Laquelle parmis la liste</param>
334 ''' <returns>Une chaine de 2 caractère</returns>
335 ''' <remarks>Retourne NOTHING si le numéro n'est pas bon. Note: l'indice commence à 1 et non pas à 0</remarks>
336 Public Function GetTipeCondition(ByRef Laquelle As Integer) As String
337 If Laquelle > Conditions.Count Then Debug.Write("On demande de retourner une condition qui n'existe pas... On retourne NOTHING") : Return Nothing
338 Dim c As CCF
339 c = Conditions.Item(Laquelle)
340 Return c.Tipe
341 End Function
342
343
344
345 ''' <summary>
346 ''' Donne la valeur d'une condition aux limites
347 ''' </summary>
348 ''' <param name="Laquelle">Le numéro de la condition à retourber</param>
349 ''' <returns></returns>
350 ''' <remarks>Retourne NOTHING si le numéro n'est pas bon. Note: l'indice commence à 1 et non pas à 0</remarks>
351 Public Function GetValeurCondition(ByRef Laquelle As Integer) As Double
352 If Laquelle > Conditions.Count Then Debug.Write("On demande de retourner une condition qui n'existe pas... On retourne NOTHING") : Return Nothing
353 Dim c As CCF
354 c = Conditions.Item(Laquelle)
355 Return c.valeur
356 End Function
357
358
359
360
361
362
363
364
365
366
367 ''' <summary>
368 ''' Sub qui dessine quelquechose pour représenter les conditions aux limites
369 ''' </summary>
370 ''' <param name="Cond"></param>
371 ''' <remarks></remarks>
372 Private Sub DessinerCondition(ByRef Cond As CCF)
373
374 Dim modeler As SldWorks.Modeler
375 Dim lstPoints As New Collection
376 Dim Grosseur As Double
377 Dim p As PointC
378 Dim b As Integer
379 Dim normale() As Double
380 Dim facteur As Double
381 Dim View As SldWorks.ModelView
382 Dim stream As Object = Nothing
383
384 View = swModel.ActiveView()
385
386 Dim volume As Double
387 Dim surface As Double
388 Dim swMprop As SldWorks.MassProperty
389 swMprop = swModel.Extension.CreateMassProperty
390 volume = swMprop.Volume
391 surface = swMprop.SurfaceArea
392 Grosseur = (volume / surface) / 6
393
394 modeler = swApp.GetModeler
395 ' prendre les coordonnées du/des points où mettre un truc...
396 If Me.swFace IsNot Nothing Then
397 ' on prend les UV que l'on divise en 5, on garde juste l'intérieur et on a 16 points.
398 ' on prend leur valeur sur la face et s'il sappartiennent à la face alors Bingo!, on retient le point
399 Dim F As New SuperFace(swFace, True)
400 Dim Umin As Double, Umax As Double, Vmin As Double, Vmax As Double, U As Double, V As Double
401 Dim i As Integer, j As Integer, Uinc As Double, Vinc As Double
402 p = New PointC
403 F.UVMinMax(Umin, Umax, Vmin, Vmax)
404 V = Vmin
405 U = Umin
406 Uinc = (Umax - Umin) / 5
407 Vinc = (Vmax - Vmin) / 5
408
409 For i = 1 To 4
410 U += Uinc
411 V = Vmin
412 For j = 1 To 4
413 V += Vinc
414 p = New PointC
415 If F.Evaluer(U, V, p.xp, p.yp, p.zp) Then
416 If Cond.Tipe = "Da" Or Cond.Tipe = "Pn" Then ' on doit avoir l'orientation de la face dans ce cas particulier
417 normale = F.Normale(p.xp, p.yp, p.zp)
418 p.xA = normale(0) : p.yA = normale(1) : p.zA = normale(2)
419 End If
420 lstPoints.Add(p)
421 End If
422 Next j
423 Next i
424 ElseIf Me.swArete IsNot Nothing Then
425 Dim a As New SuperArete(swArete, True)
426 Dim Tmin As Double, Tmax As Double
427 Dim incT As Double, i As Integer, T As Double
428 p = New PointC
429
430 Tmax = a.GetTMax()
431 Tmin = a.GetTMin
432 incT = (Tmax - Tmin) / 5
433
434 If Cond.Tipe = "Da" Or Cond.Tipe = "Pn" Then
435 p.xA = 1 : p.yA = 0 : p.zA = 0
436 End If
437
438
439 T = Tmin
440 For i = 1 To 4
441 T += incT
442 a.Evaluer(T, p.xp, p.yp, p.zp)
443 lstPoints.Add(p)
444 Next i
445
446
447
448 ElseIf Me.swSommet IsNot Nothing Then
449 p = New PointC
450 Dim s As New SuperSommet(swSommet, True)
451 p.xp = s.GetX
452 p.yp = s.GetY
453 p.zp = s.GetZ
454 If Cond.Tipe = "Da" Or Cond.Tipe = "Pn" Then
455 p.xA = 1 : p.yA = 0 : p.zA = 0
456 End If
457 lstPoints.Add(p)
458 End If
459
460 Dim Pt As PointC
461 If Cond.valeur < 0 Then facteur = -1 Else facteur = 1
462
463 Select Case Cond.Tipe
464 Case "Da"
465 For Each Pt In lstPoints
466 'Commun.MettreUnPoint(Pt.x, Pt.y, Pt.z)
467 Dim liste(8) As Double, vListe As Object
468 Dim NewBod() As SldWorks.Body2
469 ReDim NewBod(lstPoints.Count)
470 liste(0) = Pt.xp : liste(1) = Pt.yp : liste(2) = Pt.zp : liste(3) = Pt.xA : liste(4) = Pt.yA : liste(5) = Pt.zA
471 liste(6) = Grosseur * 2.5 ' extrusion dans la direction de l'axe
472 liste(7) = Grosseur * 2.5
473 liste(8) = Grosseur * 2.5
474 vListe = liste
475 NewBod(b) = modeler.CreateBodyFromBox(vListe)
476 NewBod(b).Display2(swPart, RGB(100, 0, 100), 0)
477 b += 1
478 Next Pt
479
480
481 Case "Dx"
482
483 Case "Dy"
484
485 Case "Dz"
486
487 Case "Fx"
488 For Each Pt In lstPoints
489 'Commun.MettreUnPoint(Pt.x, Pt.y, Pt.z)
490 Dim liste(8) As Double, vListe As Object
491 Dim NewBod() As SldWorks.Body2
492 ReDim NewBod(lstPoints.Count)
493 liste(0) = Pt.xp : liste(1) = Pt.yp : liste(2) = Pt.zp : liste(3) = -facteur : liste(4) = 0 : liste(5) = 0
494 liste(6) = 0 ' base radius
495 liste(7) = Grosseur * 2 'top radius
496 liste(8) = Grosseur * 5 ' hauteur
497 vListe = liste
498 NewBod(b) = modeler.CreateBodyFromCone(vListe)
499 NewBod(b).Display2(swPart, RGB(255, 0, 0), 0)
500 b += 1
501 'NewBod(b).Save(stream)
502 Next Pt
503
504 Case "Fy"
505 For Each Pt In lstPoints
506 'Commun.MettreUnPoint(Pt.x, Pt.y, Pt.z)
507 Dim liste(8) As Double, vListe As Object
508 Dim NewBod() As SldWorks.Body2
509 ReDim NewBod(lstPoints.Count)
510 liste(0) = Pt.xp : liste(1) = Pt.yp : liste(2) = Pt.zp : liste(3) = 0 : liste(4) = -facteur : liste(5) = 0
511 liste(6) = 0 ' base radius
512 liste(7) = Grosseur * 2 'top radius
513 liste(8) = Grosseur * 5 ' hauteur
514 vListe = liste
515 NewBod(b) = modeler.CreateBodyFromCone(vListe)
516 NewBod(b).Display2(swPart, RGB(255, 0, 0), 0)
517 b += 1
518 Next Pt
519
520
521
522 Case "Fz"
523 For Each Pt In lstPoints
524 'Commun.MettreUnPoint(Pt.x, Pt.y, Pt.z)
525 Dim liste(8) As Double, vListe As Object
526 Dim NewBod() As SldWorks.Body2
527 ReDim NewBod(lstPoints.Count)
528 liste(0) = Pt.xp : liste(1) = Pt.yp : liste(2) = Pt.zp : liste(3) = 0 : liste(4) = 0 : liste(5) = -facteur
529 liste(6) = 0 ' base radius
530 liste(7) = Grosseur * 2 'top radius
531 liste(8) = Grosseur * 5 ' hauteur
532 vListe = liste
533 NewBod(b) = modeler.CreateBodyFromCone(vListe)
534 NewBod(b).Display2(swPart, RGB(255, 0, 0), 0)
535 b += 1
536 Next Pt
537
538
539 Case "Px"
540 For Each Pt In lstPoints
541 'Commun.MettreUnPoint(Pt.x, Pt.y, Pt.z)
542 Dim liste(8) As Double, vListe As Object
543 Dim err As Integer
544 Dim NewBod() As SldWorks.Body2
545 Dim NewBod2() As SldWorks.Body2
546 ReDim NewBod(lstPoints.Count)
547 liste(0) = Pt.xp : liste(1) = Pt.yp : liste(2) = Pt.zp : liste(3) = -facteur : liste(4) = 0 : liste(5) = 0
548 liste(6) = 0 ' base radius
549 liste(7) = Grosseur 'top radius
550 liste(8) = Grosseur * 2 ' hauteur
551 vListe = liste
552 NewBod(b) = modeler.CreateBodyFromCone(vListe)
553 ReDim NewBod2(lstPoints.Count)
554 liste(0) = Pt.xp : liste(1) = Pt.yp : liste(2) = Pt.zp : liste(3) = -facteur : liste(4) = 0 : liste(5) = 0
555 liste(6) = 0 ' base radius
556 liste(7) = Grosseur 'top radius
557 liste(8) = Grosseur * 5 ' hauteur
558 vListe = liste
559 NewBod2(b) = modeler.CreateBodyFromCone(vListe)
560 NewBod(b).Operations2(SwConst.swBodyOperationType_e.SWBODYADD, NewBod2(b), err)
561 NewBod(b).Display2(swPart, RGB(0, 0, 255), 0)
562 b += 1
563 Next Pt
564
565 Case "Py"
566 For Each Pt In lstPoints
567 'Commun.MettreUnPoint(Pt.x, Pt.y, Pt.z)
568 Dim liste(8) As Double, vListe As Object
569 Dim err As Integer
570 Dim NewBod() As SldWorks.Body2
571 Dim NewBod2() As SldWorks.Body2
572 ReDim NewBod(lstPoints.Count)
573 liste(0) = Pt.xp : liste(1) = Pt.yp : liste(2) = Pt.zp : liste(3) = 0 : liste(4) = -facteur : liste(5) = 0
574 liste(6) = 0 ' base radius
575 liste(7) = Grosseur 'top radius
576 liste(8) = Grosseur * 2 ' hauteur
577 vListe = liste
578 NewBod(b) = modeler.CreateBodyFromCone(vListe)
579 ReDim NewBod2(lstPoints.Count)
580 liste(0) = Pt.xp : liste(1) = Pt.yp : liste(2) = Pt.zp : liste(3) = 0 : liste(4) = -facteur : liste(5) = 0
581 liste(6) = 0 ' base radius
582 liste(7) = Grosseur 'top radius
583 liste(8) = Grosseur * 5 ' hauteur
584 vListe = liste
585 NewBod2(b) = modeler.CreateBodyFromCone(vListe)
586 NewBod(b).Operations2(SwConst.swBodyOperationType_e.SWBODYADD, NewBod2(b), err)
587 NewBod(b).Display2(swPart, RGB(0, 0, 255), 0)
588 b += 1
589 Next Pt
590 Case "Pz"
591 For Each Pt In lstPoints
592 'Commun.MettreUnPoint(Pt.x, Pt.y, Pt.z)
593 Dim liste(8) As Double, vListe As Object
594 Dim err As Integer
595 Dim NewBod() As SldWorks.Body2
596 Dim NewBod2() As SldWorks.Body2
597 ReDim NewBod(lstPoints.Count)
598 liste(0) = Pt.xp : liste(1) = Pt.yp : liste(2) = Pt.zp : liste(3) = 0 : liste(4) = 0 : liste(5) = -facteur
599 liste(6) = 0 ' base radius
600 liste(7) = Grosseur 'top radius
601 liste(8) = Grosseur * 2 ' hauteur
602 vListe = liste
603 NewBod(b) = modeler.CreateBodyFromCone(vListe)
604 ReDim NewBod2(lstPoints.Count)
605 liste(0) = Pt.xp : liste(1) = Pt.yp : liste(2) = Pt.zp : liste(3) = 0 : liste(4) = 0 : liste(5) = -facteur
606 liste(6) = 0 ' base radius
607 liste(7) = Grosseur 'top radius
608 liste(8) = Grosseur * 5 ' hauteur
609 vListe = liste
610 NewBod2(b) = modeler.CreateBodyFromCone(vListe)
611 NewBod(b).Operations2(SwConst.swBodyOperationType_e.SWBODYADD, NewBod2(b), err)
612 NewBod(b).Display2(swPart, RGB(0, 0, 255), 0)
613
614 b += 1
615 Next Pt
616 Case "Pn"
617
618
619 End Select
620
621 End Sub
622
623
624 Public Sub DessinerToutesConditions()
625 Dim c As CCF
626
627 For Each c In Me.Conditions
628 DessinerCondition(c)
629 Next
630 End Sub
631
632
633
634 End Class