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

# User Rev Content
1 bournival 40 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