ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/REPOS_ERICCA/magicsld/EnregistrementProp.vb
Revision: 130
Committed: Wed Jul 30 21:26:03 2008 UTC (17 years, 1 month ago) by bournival
File size: 20537 byte(s)
Log Message:
Une mise à jour, car on aura peut-être besoin de mon code.

File Contents

# Content
1 Imports SolidWorks.Interop
2 Imports SolidWorks.Interop.swconst
3 Imports SolidWorks.Interop.swpublished
4
5 ' la classe des propriétés
6
7 Namespace Enregistrement
8 Public Class Enregistrement
9 Dim iSwApp As SldWorks.SldWorks
10 Dim userAddin As MAGIC.Magic
11 Dim handler As EnregistrementPageHandler
12 Dim ppage As sldworks.PropertyManagerPage2
13
14 'Groupes
15
16 ' les groupes pour l'enregistrement sont ici. On fait (pour l'instant) 2 groupes, le premier demande si l'on veut
17 ' voir la fenêtre originale lors de la sauvegarde et/ou la fenêtre modifiée.
18 ' le deuxième groupe sert à la pré-optimisation de maillage
19
20
21 Private group1 As sldworks.PropertyManagerPageGroup
22 Private group2 As sldworks.PropertyManagerPageGroup ' préoptimisation manuelle
23 Private group3 As sldworks.PropertyManagerPageGroup
24 Private group4 As sldworks.PropertyManagerPageGroup ' pre-optimisation automatique
25
26 ''Controles
27
28 Private check1 As sldworks.PropertyManagerPageCheckbox
29 Private Label1 As sldworks.PropertyManagerPageLabel
30 Private Label2 As sldworks.PropertyManagerPageLabel
31 Private Numberbox1 As sldworks.PropertyManagerPageNumberbox
32 Private Numberbox2 As sldworks.PropertyManagerPageNumberbox
33 Private labelRemi1 As sldworks.PropertyManagerPageLabel
34 Private labelRemi2 As sldworks.PropertyManagerPageLabel
35
36
37 Private checkOriginal As sldworks.PropertyManagerPageCheckbox
38 Private checkModifie As sldworks.PropertyManagerPageCheckbox
39 Private checkMultimodele As sldworks.PropertyManagerPageCheckbox
40
41 Private checkArrondi As sldworks.PropertyManagerPageCheckbox
42 Private checkRentrant As sldworks.PropertyManagerPageCheckbox
43 Private checkMatiere As sldworks.PropertyManagerPageCheckbox
44
45 Private NumberArrondi As sldworks.PropertyManagerPageNumberbox
46 Private NumberRentrant As sldworks.PropertyManagerPageNumberbox
47 Private NumberMatiere As sldworks.PropertyManagerPageNumberbox
48
49 Private curseur As sldworks.PropertyManagerPageSlider
50 Private limiteur As sldworks.PropertyManagerPageNumberbox
51
52 Public checkMiniSurCoques As sldworks.PropertyManagerPageCheckbox
53 Public checkMultiDecoupage As sldworks.PropertyManagerPageCheckbox
54 Private LabelMiniSurCoques As sldworks.PropertyManagerPageLabel
55
56
57 ''Controles
58
59 Private label11 As sldworks.PropertyManagerPageLabel
60 Private checkentite As sldworks.PropertyManagerPageCheckbox
61 Private CheckEnt As sldworks.PropertyManagerPageCheckbox
62
63 Private Gilles1 As sldworks.PropertyManagerPageCheckbox
64 Private Gilles2 As sldworks.PropertyManagerPageCheckbox
65
66
67 Function Init(ByVal sw As sldworks.SldWorks, ByVal addin As MAGIC.Magic) As Object
68 iSwApp = sw
69 userAddin = addin
70 CreatePage()
71 AddControls()
72 Return Nothing
73 End Function
74
75 Sub Show()
76 ppage.Show()
77 Me.EngDefaut()
78 End Sub
79
80 Sub CreatePage()
81 handler = New EnregistrementPageHandler
82 handler.Init(iSwApp, userAddin)
83 Dim options As Integer
84 Dim errors As Integer
85 options = swPropertyManagerPageOptions_e.swPropertyManagerOptions_OkayButton + swPropertyManagerPageOptions_e.swPropertyManagerOptions_CancelButton
86 ppage = iSwApp.CreatePropertyManagerPage("Enregistrement", options, handler, errors)
87 End Sub
88
89 Sub AddControls()
90 Dim options As Integer
91 Dim leftAlign As Integer
92 Dim controlType As Integer
93
94
95
96 ' premier groupe
97 options = swAddGroupBoxOptions_e.swGroupBoxOptions_Visible + swAddGroupBoxOptions_e.swGroupBoxOptions_Expanded
98 group1 = ppage.AddGroupBox(0, "Exportation vers MAGiC", options)
99
100
101 ' le label
102 Label2 = group1.AddControl(4, swPropertyManagerPageControlType_e.swControlType_Label, "Donnez l'Écart Nodal Global", swPropertyManagerPageControlLeftAlign_e.swControlAlign_LeftEdge, swAddControlOptions_e.swControlOptions_Visible + swAddControlOptions_e.swControlOptions_Enabled, "Il faut spécifier l'Écart Nodal Global à utiliser")
103
104 'Numberbox2
105 controlType = swPropertyManagerPageControlType_e.swControlType_Numberbox
106 leftAlign = swPropertyManagerPageControlLeftAlign_e.swControlAlign_LeftEdge
107 options = swAddControlOptions_e.swControlOptions_Enabled + swAddControlOptions_e.swControlOptions_Visible + swAddControlOptions_e.swControlOptions_SmallGapAbove
108 Numberbox2 = group1.AddControl(5, controlType, "Écart Nodal Global", leftAlign, options, "Entrez la valeur de l'Écart Nodal Global")
109 Numberbox2.Value = 0.015
110 Numberbox2.SetRange(swconst.swNumberboxUnitType_e.swNumberBox_Length, 0.000000001, 100000000, 0.001, True)
111 EnregistrementCode.NumberENG = Numberbox2
112
113 ' checkOriginal
114 controlType = swPropertyManagerPageControlType_e.swControlType_Checkbox
115 leftAlign = swPropertyManagerPageControlLeftAlign_e.swControlAlign_LeftEdge
116 options = swAddControlOptions_e.swControlOptions_Enabled + swAddControlOptions_e.swControlOptions_Visible
117 checkOriginal = group1.AddControl(1, controlType, "Afficher le modèle original", leftAlign, options, "Conserve la fenêtre du modèle original (non modifié)")
118 checkOriginal.Checked = True
119 EnregistrementCode.checkboxOriginal = checkOriginal
120
121
122 ' checkmodifie
123 controlType = swPropertyManagerPageControlType_e.swControlType_Checkbox
124 leftAlign = swPropertyManagerPageControlLeftAlign_e.swControlAlign_LeftEdge
125 options = swAddControlOptions_e.swControlOptions_Enabled + swAddControlOptions_e.swControlOptions_Visible
126 checkModifie = group1.AddControl(2, controlType, "Afficher le modèle exporté", leftAlign, options, "Conserve la fenêtre du modèle ayant subit des modifications")
127 checkModifie.Checked = True
128 EnregistrementCode.checkboxModifie = checkModifie
129
130
131
132
133
134 ' deuxième groupe, pré-optimisation.
135 options = swAddGroupBoxOptions_e.swGroupBoxOptions_Visible + swAddGroupBoxOptions_e.swGroupBoxOptions_Checkbox ' + swAddGroupBoxOptions_e.swGroupBoxOptions_Checked
136 group2 = ppage.AddGroupBox(3, "Pre-optimisation Manuelle", options)
137 EnregistrementCode.Groupe2 = group2
138
139
140
141 ' le label
142 Label1 = group2.AddControl(6, swPropertyManagerPageControlType_e.swControlType_Label, "Creer des points dans le volume : Donnez la valeur de la zone de transition", swPropertyManagerPageControlLeftAlign_e.swControlAlign_LeftEdge, swAddControlOptions_e.swControlOptions_Visible + swAddControlOptions_e.swControlOptions_Enabled, "Cette option permet de faire varier le coefficient de raffinement de maillage dans le volume")
143
144 'Numberbox1
145 controlType = swPropertyManagerPageControlType_e.swControlType_Numberbox
146 leftAlign = swPropertyManagerPageControlLeftAlign_e.swControlAlign_LeftEdge
147 options = swAddControlOptions_e.swControlOptions_Enabled + swAddControlOptions_e.swControlOptions_Visible + swAddControlOptions_e.swControlOptions_SmallGapAbove
148 Numberbox1 = group2.AddControl(7, controlType, "zone de transition", leftAlign, options, "Entrez la valeur de la zone de transition")
149 Numberbox1.Value = 0
150 Numberbox1.SetRange(2, 0, 10, 1, True)
151 EnregistrementCode.numberbox1 = Numberbox1
152
153 ' le premier checkbox, valeurs au points pour arrondis
154 controlType = swPropertyManagerPageControlType_e.swControlType_Checkbox
155 leftAlign = swPropertyManagerPageControlLeftAlign_e.swControlAlign_LeftEdge
156 options = swAddControlOptions_e.swControlOptions_Enabled + swAddControlOptions_e.swControlOptions_Visible
157 checkArrondi = group2.AddControl(8, controlType, "Coefficient de raffinement pour les arrondis", leftAlign, options, "Trouver les congés du modèle")
158 EnregistrementCode.checkArrondi = checkArrondi
159
160 ' le numberbox pour les arrondis
161 controlType = swPropertyManagerPageControlType_e.swControlType_Numberbox
162 leftAlign = swPropertyManagerPageControlLeftAlign_e.swControlAlign_LeftEdge
163 options = swAddControlOptions_e.swControlOptions_Enabled + swAddControlOptions_e.swControlOptions_Visible + swAddControlOptions_e.swControlOptions_SmallGapAbove
164 NumberArrondi = group2.AddControl(9, controlType, "Coefficient de raffinement sur les arrondis", leftAlign, options, "Entrez la valeur du coefficient de raffinement de maillage aux points d'échantillonnage pour les arrondis")
165 NumberArrondi.Value = 0.2
166 NumberArrondi.SetRange(2, 0.000000000001, 0.999999999999, 0.1, True)
167 EnregistrementCode.NumberArrondi = NumberArrondi
168
169
170 ' le second checkbox, valeurs pour les arêtes rentrantes
171 controlType = swPropertyManagerPageControlType_e.swControlType_Checkbox
172 leftAlign = swPropertyManagerPageControlLeftAlign_e.swControlAlign_LeftEdge
173 options = swAddControlOptions_e.swControlOptions_Enabled + swAddControlOptions_e.swControlOptions_Visible
174 checkRentrant = group2.AddControl(10, controlType, "Coefficient de raffinement pour les arêtes rentrantes", leftAlign, options, "trouver les arêtes rentrantes")
175 EnregistrementCode.checkRentrant = checkRentrant
176
177 ' le numberbox
178 controlType = swPropertyManagerPageControlType_e.swControlType_Numberbox
179 leftAlign = swPropertyManagerPageControlLeftAlign_e.swControlAlign_LeftEdge
180 options = swAddControlOptions_e.swControlOptions_Enabled + swAddControlOptions_e.swControlOptions_Visible + swAddControlOptions_e.swControlOptions_SmallGapAbove
181 NumberRentrant = group2.AddControl(11, controlType, "Coefficient de raffinement sur les arêtes rentrantes", leftAlign, options, "Entrez la valeur du coefficient de raffinement de maillage aux points d'échantillonnage pour les arêtes rentrantes")
182 NumberRentrant.Value = 0.1
183 NumberRentrant.SetRange(2, 0.000000000001, 0.9999999999999, 0.1, True)
184 EnregistrementCode.NumberRentrant = NumberRentrant
185
186 ' le troisième checkbox, valeurs pour les retrait matière
187 controlType = swPropertyManagerPageControlType_e.swControlType_Checkbox
188 leftAlign = swPropertyManagerPageControlLeftAlign_e.swControlAlign_LeftEdge
189 options = swAddControlOptions_e.swControlOptions_Enabled + swAddControlOptions_e.swControlOptions_Visible
190 checkMatiere = group2.AddControl(12, controlType, "Coefficient de raffinement pour les retraits matières", leftAlign, options, "Trouver les retraits matière")
191 EnregistrementCode.checkMatiere = checkMatiere
192
193 ' le numberbox pour les retrait matière
194 controlType = swPropertyManagerPageControlType_e.swControlType_Numberbox
195 leftAlign = swPropertyManagerPageControlLeftAlign_e.swControlAlign_LeftEdge
196 options = swAddControlOptions_e.swControlOptions_Enabled + swAddControlOptions_e.swControlOptions_Visible + swAddControlOptions_e.swControlOptions_SmallGapAbove
197 NumberMatiere = group2.AddControl(13, controlType, "Coefficient de raffinement pour les retraits matières", leftAlign, options, "Entrez la valeur du coefficient de raffinement de maillage aux points d'échantillonnage pour les retraits matière")
198 NumberMatiere.Value = 0.25
199 NumberMatiere.SetRange(2, 0.000000000001, 0.9999999999999, 0.1, True)
200 EnregistrementCode.NumberMatiere = NumberMatiere
201
202 'checkbox selectionner des entité a raffiner
203 controlType = swPropertyManagerPageControlType_e.swControlType_Checkbox
204 leftAlign = swPropertyManagerPageControlLeftAlign_e.swControlAlign_LeftEdge
205 options = swAddControlOptions_e.swControlOptions_Enabled + swAddControlOptions_e.swControlOptions_Visible
206 checkentite = group2.AddControl(14, controlType, "selectionner des entités à raffiner : ", leftAlign, options, "selectionner des entités")
207 EnregistrementCode.checkEntites = checkentite
208
209 'Selectionpog, qui contiendra les entités sélectionnées
210 controlType = swPropertyManagerPageControlType_e.swControlType_Selectionbox
211 leftAlign = swPropertyManagerPageControlLeftAlign_e.swControlAlign_LeftEdge
212 options = swAddControlOptions_e.swControlOptions_Enabled + swAddControlOptions_e.swControlOptions_Visible
213 selectionpog = group2.AddControl(15, controlType, "sélectionnées des entités", leftAlign, options, "Montre les entités qui ont été sélectionnées")
214 If Not selectionpog Is Nothing Then
215 Dim filter() As Integer = New Integer() {swSelectType_e.swSelVERTICES, swSelectType_e.swSelEDGES, swSelectType_e.swSelFACES} ' pour sélectionner juste les faces, aretes et sommets
216 selectionpog.Height = 50
217 selectionpog.SetSelectionFilters(filter)
218 End If
219 EnregistrementCode.selectionpog = selectionpog
220
221 'numberbox pour les entités
222 label11 = group2.AddControl(16, swPropertyManagerPageControlType_e.swControlType_Label, "Coefficient de raffinement des entités selectionnées", swPropertyManagerPageControlLeftAlign_e.swControlAlign_LeftEdge, swAddControlOptions_e.swControlOptions_Visible + swAddControlOptions_e.swControlOptions_Enabled, "Entrer la valeur aux points des entités selectionnées")
223 controlType = swPropertyManagerPageControlType_e.swControlType_Numberbox
224 leftAlign = swPropertyManagerPageControlLeftAlign_e.swControlAlign_LeftEdge
225 options = swAddControlOptions_e.swControlOptions_Enabled + swAddControlOptions_e.swControlOptions_Visible + swAddControlOptions_e.swControlOptions_SmallGapAbove
226 Numberentités = group2.AddControl(17, controlType, "Coefficient de raffinement global pour les entités selectionnées", leftAlign, options, "Entrer la valeur du coefficient de raffinement aux points d'échantillonnage pour les entités selectionnées")
227 Numberentités.Value = 0.25
228 Numberentités.SetRange(2, 0.000000000001, 0.9999999999999, 0.1, True)
229 EnregistrementCode.Numberentités = Numberentités
230
231 'raffinner individuellement les entité selectionnées
232 controlType = swPropertyManagerPageControlType_e.swControlType_Checkbox
233 leftAlign = swPropertyManagerPageControlLeftAlign_e.swControlAlign_LeftEdge
234 options = swAddControlOptions_e.swControlOptions_Enabled + swAddControlOptions_e.swControlOptions_Visible
235 CheckEnt = group2.AddControl(18, controlType, "raffiner les entités selectionnées individuellement", leftAlign, options, "selectionner des entités")
236 EnregistrementCode.CheckEnt = CheckEnt
237
238
239
240 options = swAddGroupBoxOptions_e.swGroupBoxOptions_Visible + swAddGroupBoxOptions_e.swGroupBoxOptions_Checkbox
241 group4 = ppage.AddGroupBox(40, "Pré-Optimisation Automatique", options)
242 EnregistrementCode.Groupe4 = group4
243 Dim labelCommentaire As sldworks.PropertyManagerPageLabel = group4.AddControl(47, swPropertyManagerPageControlType_e.swControlType_Label, "Valable uniquement pour les retraits de matière pour l'instant", swPropertyManagerPageControlLeftAlign_e.swControlAlign_LeftEdge, swAddControlOptions_e.swControlOptions_Enabled + swAddControlOptions_e.swControlOptions_Visible, "")
244
245 ' le label
246 labelRemi1 = group4.AddControl(45, swPropertyManagerPageControlType_e.swControlType_Label, "Précision d'analyse", swPropertyManagerPageControlLeftAlign_e.swControlAlign_LeftEdge, swAddControlOptions_e.swControlOptions_Visible + swAddControlOptions_e.swControlOptions_Enabled, "Précision d'analyse souhaitée")
247 EnregistrementCode.labelRemi1 = labelRemi1
248
249 curseur = group4.AddControl(41, swPropertyManagerPageControlType_e.swControlType_Slider, "Précision d'analyse", swPropertyManagerPageControlLeftAlign_e.swControlAlign_LeftEdge, swAddControlOptions_e.swControlOptions_Enabled + swAddControlOptions_e.swControlOptions_Visible + swAddControlOptions_e.swControlOptions_SmallGapAbove, "Mettre du texte ici")
250 curseur.SetRange(1, 99)
251 curseur.Position = 95
252 curseur.Style = swPropMgrPageSliderStyle_e.swPropMgrPageSliderStyle_NotifyWhileTracking + swPropMgrPageSliderStyle_e.swPropMgrPageSliderStyle_AutoTicks
253 curseur.TickFrequency = 5
254 curseur.LineSize = 3
255 EnregistrementCode.curseur = curseur
256
257 ' le label
258 labelRemi2 = group4.AddControl(46, swPropertyManagerPageControlType_e.swControlType_Label, "Limiteur de pente d'écart nodal", swPropertyManagerPageControlLeftAlign_e.swControlAlign_LeftEdge, swAddControlOptions_e.swControlOptions_Visible + swAddControlOptions_e.swControlOptions_Enabled, "Limiteur de pente d'évolution d'écart nodal")
259
260
261 limiteur = group4.AddControl(42, swPropertyManagerPageControlType_e.swControlType_Numberbox, "Limiteur de pente d'écart nodal", swPropertyManagerPageControlLeftAlign_e.swControlAlign_LeftEdge, swAddControlOptions_e.swControlOptions_Enabled + swAddControlOptions_e.swControlOptions_Visible + swAddControlOptions_e.swControlOptions_SmallGapAbove, "Encore du texte")
262 limiteur.Value = 0.25
263 limiteur.SetRange(swconst.swNumberboxUnitType_e.swNumberBox_UnitlessDouble, 0.01, 1, 0.05, True)
264 EnregistrementCode.limiteur = limiteur
265
266 ' le troisième groupe pour les études multi-dimensionnelles
267 options = swAddGroupBoxOptions_e.swGroupBoxOptions_Visible + swAddGroupBoxOptions_e.swGroupBoxOptions_Checkbox ' + swAddGroupBoxOptions_e.swGroupBoxOptions_Checked
268 group3 = ppage.AddGroupBox(19, "Étude multi-dimensionnelle", options)
269 EnregistrementCode.Groupe3 = group3
270
271 LabelMiniSurCoques = group3.AddControl(31, swPropertyManagerPageControlType_e.swControlType_Label, "Mettre des mini-poutres dans les cas des intersections coque-coque", swPropertyManagerPageControlLeftAlign_e.swControlAlign_LeftEdge, swAddControlOptions_e.swControlOptions_Visible + swAddControlOptions_e.swControlOptions_Enabled, "Les mini-poutres sont facultatives dans le cas d'intersections coque-coque. Les utiliser est facultatif")
272 controlType = swPropertyManagerPageControlType_e.swControlType_Checkbox
273 leftAlign = swPropertyManagerPageControlLeftAlign_e.swControlAlign_LeftEdge
274 options = swAddControlOptions_e.swControlOptions_Enabled + swAddControlOptions_e.swControlOptions_Visible
275 checkMiniSurCoques = group3.AddControl(32, controlType, "Mettre des mini-poutres dans les cas des intersections coque-coque", leftAlign, options, "")
276 EnregistrementCode.checkboxMiniSurCoque = checkMiniSurCoques
277
278 controlType = swPropertyManagerPageControlType_e.swControlType_Checkbox
279 leftAlign = swPropertyManagerPageControlLeftAlign_e.swControlAlign_LeftEdge
280 options = swAddControlOptions_e.swControlOptions_Enabled + swAddControlOptions_e.swControlOptions_Visible
281 checkMultiDecoupage = group3.AddControl(33, controlType, "Faire un multidécoupage pour les intersection coques", leftAlign, options, "")
282 EnregistrementCode.checkboxMultidecoupage = checkMultidecoupage
283
284 End Sub
285
286 Public Sub EngDefaut()
287 Dim volume As Double
288 Dim surface As Double
289 Dim eng As Double
290 Dim swMprop As sldworks.MassProperty
291 swMprop = swModel.Extension.CreateMassProperty
292 volume = swMprop.Volume
293 surface = swMprop.SurfaceArea
294 eng = (volume / surface) / 6
295 EnregistrementCode.NumberENG.Value = eng
296
297
298 End Sub
299 End Class
300
301 End Namespace