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

# User Rev Content
1 bournival 48 Imports SolidWorks.Interop
2     Imports SolidWorks.Interop.swconst
3     Imports SolidWorks.Interop.swpublished
4    
5 bournival 40 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 bournival 48 Case swconst.swSelectType_e.swSelVERTICES
67 bournival 40 Me.swSommet = swent
68 bournival 48 Case swconst.swSelectType_e.swSelEDGES
69 bournival 40 Me.swArete = swent
70 bournival 48 Case swconst.swSelectType_e.swSelFACES
71 bournival 40 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 bournival 48 Case swconst.swSelectType_e.swSelVERTICES
108 bournival 40 Me.swSommet = swent
109 bournival 48 Case swconst.swSelectType_e.swSelEDGES
110 bournival 40 Me.swArete = swent
111 bournival 48 Case swconst.swSelectType_e.swSelFACES
112 bournival 40 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 bournival 48 Case swconst.swSelectType_e.swSelFACES
272 bournival 40 chaine = "Face" & vbCr
273 bournival 48 Case swconst.swSelectType_e.swSelEDGES
274 bournival 40 chaine = "Arete" & vbCr
275 bournival 48 Case swconst.swSelectType_e.swSelVERTICES
276 bournival 40 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 bournival 48 NewBod(b).Operations2(swconst.swBodyOperationType_e.SWBODYADD, NewBod2(b), err)
565 bournival 40 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 bournival 48 NewBod(b).Operations2(swconst.swBodyOperationType_e.SWBODYADD, NewBod2(b), err)
591 bournival 40 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 bournival 48 NewBod(b).Operations2(swconst.swBodyOperationType_e.SWBODYADD, NewBod2(b), err)
616 bournival 40 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