ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magicsld/EncapCL.vb
Revision: 48
Committed: Wed Aug 22 21:18:12 2007 UTC (17 years, 8 months ago) by bournival
File size: 23442 byte(s)
Log Message:
On passe aux nouveaux .dll

File Contents

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