9 |
|
Private Shared compteur As Long |
10 |
|
Private Shared no As Long |
11 |
|
|
12 |
+ |
|
13 |
|
Friend Flag As Integer = 0 ' = 20 si on a une coupeLong |
14 |
|
|
15 |
|
|
751 |
|
''' <param name="inter"></param> |
752 |
|
''' <param name="MettreFI"></param> |
753 |
|
''' <returns></returns> |
754 |
< |
''' <remarks></remarks> |
755 |
< |
Protected Function DessineSectionPoutre(ByRef Poutre As SlyAretePoutre, ByVal TranslationX As Double, ByVal TranslationY As Double, ByVal numero As Integer, ByRef swSketch As sldworks.Sketch, ByRef inter As InterAreteFace, ByRef MettreFI As Boolean) As Double() |
754 |
> |
''' <remarks>Si Flag = 2 alors on met une faceInterne ET une mini-poutre</remarks> |
755 |
> |
Protected Function DessineSectionPoutre(ByRef Poutre As SlyAretePoutre, ByVal TranslationX As Double, ByVal TranslationY As Double, ByVal numero As Integer, ByRef swSketch As sldworks.Sketch, ByRef inter As InterAreteFace, ByRef MettreFI As Boolean, ByRef autreSection As Boolean, ByRef AjouterMiniPoutre As Boolean) As Double() |
756 |
|
' le sketch est déjà inséré, il faut juste mettre des swmodel.line ou autre |
757 |
|
' doit retourner r() qui est un point situé à l'intérieur de la coupe |
758 |
|
Dim sketchline As sldworks.SketchSegment |
806 |
|
r(1) = inter.y + 5000 * Epsilon * IP(1) |
807 |
|
r(2) = inter.z + 5000 * Epsilon * IP(2) |
808 |
|
|
809 |
+ |
autreSection = True |
810 |
+ |
AjouterMiniPoutre = False |
811 |
+ |
MettreFI = True |
812 |
+ |
|
813 |
|
Case 2 |
814 |
|
ReDim Ligne(19) |
815 |
|
|
843 |
|
r(1) = inter.y - 5000 * Epsilon * IP(1) |
844 |
|
r(2) = inter.z - 5000 * Epsilon * IP(2) |
845 |
|
|
846 |
+ |
autreSection = False |
847 |
+ |
AjouterMiniPoutre = False |
848 |
+ |
MettreFI = True |
849 |
|
End Select |
850 |
< |
MettreFI = True |
850 |
> |
|
851 |
> |
|
852 |
|
ElseIf Left(Nomsection, 2) = "ST" Or Nomsection = " Tube carré générique" Then ' tube carré troué |
853 |
|
Dim P(3, 1) As Double |
854 |
|
Select Case numero |
862 |
|
P(3, 0) = P(2, 0) |
863 |
|
P(3, 1) = P(0, 1) |
864 |
|
|
865 |
< |
r(0) = P(0, 0) - 1000 * Epsilon |
865 |
> |
r(0) = Poutre.GetD1 / 2 - Poutre.GetD3 / 2 |
866 |
|
r(1) = 0 : r(2) = 0 |
867 |
|
Outils_Math.Rotation2D(pt3, r(0), r(1)) |
868 |
|
r(0) += TranslationX |
884 |
|
Ligne(8) = P(2, 0) : Ligne(9) = P(2, 1) : Ligne(10) = P(3, 0) : Ligne(11) = P(3, 1) |
885 |
|
Ligne(12) = P(3, 0) : Ligne(13) = P(3, 1) : Ligne(14) = P(0, 0) : Ligne(15) = P(0, 1) |
886 |
|
MettreFI = False |
887 |
+ |
autreSection = True |
888 |
+ |
AjouterMiniPoutre = False |
889 |
|
|
890 |
|
Case 2 |
891 |
|
P(0, 0) = Poutre.GetD1 / 2 - Poutre.GetD3 |
897 |
|
P(3, 0) = P(2, 0) |
898 |
|
P(3, 1) = P(0, 1) |
899 |
|
|
900 |
< |
r(0) = P(0, 0) + 1000 * Epsilon |
900 |
> |
r(0) = Poutre.GetD1 / 2 - Poutre.GetD3 / 2 |
901 |
|
r(1) = 0 : r(2) = 0 |
902 |
|
Outils_Math.Rotation2D(pt3, r(0), r(1)) |
903 |
|
r(0) += TranslationX |
920 |
|
Ligne(12) = P(3, 0) : Ligne(13) = P(3, 1) : Ligne(14) = P(0, 0) : Ligne(15) = P(0, 1) |
921 |
|
|
922 |
|
MettreFI = True ' lorsque l'on sort on met une face interne |
923 |
+ |
autreSection = False |
924 |
+ |
AjouterMiniPoutre = True |
925 |
|
|
926 |
|
End Select |
927 |
|
|
970 |
|
r(0) = inter.x + 5000 * Epsilon * IP(0) |
971 |
|
r(1) = inter.y + 5000 * Epsilon * IP(1) |
972 |
|
r(2) = inter.z + 5000 * Epsilon * IP(2) |
973 |
+ |
autreSection = True |
974 |
+ |
AjouterMiniPoutre = False |
975 |
+ |
MettreFI = True |
976 |
|
Case 2 |
977 |
|
|
978 |
|
Dim d As Double |
1016 |
|
r(0) = inter.x - 5000 * Epsilon * IP(0) |
1017 |
|
r(1) = inter.y - 5000 * Epsilon * IP(1) |
1018 |
|
r(2) = inter.z - 5000 * Epsilon * IP(2) |
1019 |
< |
|
1019 |
> |
autreSection = False |
1020 |
> |
AjouterMiniPoutre = False |
1021 |
> |
MettreFI = True |
1022 |
|
End Select |
1023 |
|
MettreFI = True |
1024 |
|
|
1060 |
|
swModel.CreateArc2(p(4, 0), p(4, 1), 0, p(1, 0), p(1, 1), 0, p(3, 0), p(3, 1), 0, 1) |
1061 |
|
swModel.CreateArc2(p(4, 0), p(4, 1), 0, p(0, 0), p(0, 1), 0, p(2, 0), p(2, 1), 0, 1) |
1062 |
|
MettreFI = True |
1063 |
< |
'Flag = 2 |
1063 |
> |
autreSection = True |
1064 |
> |
AjouterMiniPoutre = False |
1065 |
> |
|
1066 |
|
Case 2 |
1067 |
|
|
1068 |
|
r(0) = 0 |
1087 |
|
swModel.CreateArc2(p(4, 0), p(4, 1), 0, p(1, 0), p(1, 1), 0, p(3, 0), p(3, 1), 0, -1) |
1088 |
|
swModel.CreateArc2(p(4, 0), p(4, 1), 0, p(0, 0), p(0, 1), 0, p(2, 0), p(2, 1), 0, -1) |
1089 |
|
'MettreFI = True ' lorsque l'on sort on met une face interne |
1090 |
< |
MettreFI = False |
1091 |
< |
Me.Flag = 2 |
1092 |
< |
'Case 1 ' le cercle extérieur |
1093 |
< |
' swModel.CreateCircleByRadius2(TranslationX, TranslationY, 0, Poutre.GetD1 / 2) |
1074 |
< |
' MettreFI = False |
1075 |
< |
' r(0) = 0 : r(1) = 0 : r(2) = 0 |
1076 |
< |
' r = Commun.TransfertSketchToModel(swSketch, r) |
1077 |
< |
'Case 2 |
1078 |
< |
' swModel.CreateCircleByRadius2(TranslationX, TranslationY, 0, (Poutre.GetD1 / 2) - Poutre.GetD3) |
1079 |
< |
' r(0) = (Poutre.GetD1 / 2 - (Poutre.GetD3 / 2)) |
1080 |
< |
' r(1) = 0 : r(2) = 0 |
1081 |
< |
' r = Commun.TransfertSketchToModel(swSketch, r) |
1082 |
< |
' MettreFI = True |
1090 |
> |
MettreFI = true |
1091 |
> |
autreSection = False |
1092 |
> |
AjouterMiniPoutre = True |
1093 |
> |
|
1094 |
|
End Select |
1095 |
|
|
1096 |
|
ElseIf Left(Poutre.GetNomSection, 2) = "Cy" Or Nomsection = " Cylindrique (Rod) générique" Then ' Pipe, |
1126 |
|
Ligne(0) = P(0, 0) : Ligne(1) = P(0, 1) : Ligne(2) = P(1, 0) : Ligne(3) = P(1, 1) |
1127 |
|
Ligne(4) = P(0, 0) : Ligne(5) = P(0, 1) : Ligne(6) = P(2, 0) : Ligne(7) = P(2, 1) |
1128 |
|
swModel.CreateArc2(P(0, 0), P(0, 1), 0, P(1, 0), P(1, 1), 0, P(2, 0), P(2, 1), 0, 1) ' le dernier param est la direction. 1 ou -1 |
1129 |
< |
|
1129 |
> |
autreSection = True |
1130 |
> |
AjouterMiniPoutre = False |
1131 |
> |
MettreFI = True |
1132 |
|
Case 2 |
1133 |
|
r(0) = P(0, 0) - 1000 * Epsilon |
1134 |
|
r(1) = 0 : r(2) = 0 |
1150 |
|
Ligne(4) = P(0, 0) : Ligne(5) = P(0, 1) : Ligne(6) = P(2, 0) : Ligne(7) = P(2, 1) |
1151 |
|
|
1152 |
|
swModel.CreateArc2(P(0, 0), P(0, 1), 0, P(1, 0), P(1, 1), 0, P(2, 0), P(2, 1), 0, -1) ' le dernier param est la direction. 1 ou -1 |
1153 |
< |
|
1153 |
> |
autreSection = False |
1154 |
> |
AjouterMiniPoutre = False |
1155 |
> |
MettreFI = True |
1156 |
|
End Select |
1157 |
|
MettreFI = True |
1158 |
|
|
1160 |
|
ElseIf Left(Nomsection, 1) = "C" Or Nomsection = " Poutre en C générique" Then ' le channel |
1161 |
|
Dim P(7, 1) As Double |
1162 |
|
|
1163 |
< |
Select Case numero |
1164 |
< |
Case 1 ' le C au complet |
1165 |
< |
|
1166 |
< |
P(0, 0) = Poutre.GetD1 / 2 - Poutre.GetD3 |
1167 |
< |
P(0, 1) = Poutre.GetD5 |
1168 |
< |
P(1, 0) = P(0, 0) |
1169 |
< |
P(1, 1) = Poutre.GetD5 + Poutre.GetD4 - Poutre.GetD2 |
1170 |
< |
P(2, 0) = Poutre.GetD1 / 2 |
1171 |
< |
P(2, 1) = P(1, 1) |
1172 |
< |
P(3, 0) = P(2, 0) |
1173 |
< |
P(3, 1) = P(1, 1) + Poutre.GetD2 |
1174 |
< |
P(4, 0) = -P(3, 0) |
1175 |
< |
P(4, 1) = P(3, 1) |
1176 |
< |
P(5, 0) = P(4, 0) |
1177 |
< |
P(5, 1) = P(1, 1) |
1178 |
< |
P(6, 0) = -P(1, 0) |
1179 |
< |
P(6, 1) = P(5, 1) |
1180 |
< |
P(7, 0) = -P(0, 0) |
1181 |
< |
P(7, 1) = P(0, 1) |
1182 |
< |
|
1183 |
< |
r(0) = P(0, 0) + 1000 * Epsilon |
1184 |
< |
r(1) = P(0, 1) : r(2) = 0 |
1185 |
< |
Outils_Math.Rotation2D(pt3, r(0), r(1)) |
1186 |
< |
r(0) += TranslationX |
1187 |
< |
r(1) += TranslationY |
1188 |
< |
r = Commun.TransfertSketchToModel(swSketch, r) |
1163 |
> |
P(0, 0) = Poutre.GetD1 / 2 - Poutre.GetD3 |
1164 |
> |
P(0, 1) = Poutre.GetD5 |
1165 |
> |
P(1, 0) = P(0, 0) |
1166 |
> |
P(1, 1) = Poutre.GetD5 + Poutre.GetD4 - Poutre.GetD2 |
1167 |
> |
P(2, 0) = Poutre.GetD1 / 2 |
1168 |
> |
P(2, 1) = P(1, 1) |
1169 |
> |
P(3, 0) = P(2, 0) |
1170 |
> |
P(3, 1) = P(1, 1) + Poutre.GetD2 |
1171 |
> |
P(4, 0) = -P(3, 0) |
1172 |
> |
P(4, 1) = P(3, 1) |
1173 |
> |
P(5, 0) = P(4, 0) |
1174 |
> |
P(5, 1) = P(1, 1) |
1175 |
> |
P(6, 0) = -P(1, 0) |
1176 |
> |
P(6, 1) = P(5, 1) |
1177 |
> |
P(7, 0) = -P(0, 0) |
1178 |
> |
P(7, 1) = P(0, 1) |
1179 |
> |
|
1180 |
> |
r(0) = P(0, 0) + 1000 * Epsilon |
1181 |
> |
r(1) = P(0, 1) : r(2) = 0 |
1182 |
> |
Outils_Math.Rotation2D(pt3, r(0), r(1)) |
1183 |
> |
r(0) += TranslationX |
1184 |
> |
r(1) += TranslationY |
1185 |
> |
r = Commun.TransfertSketchToModel(swSketch, r) |
1186 |
> |
|
1187 |
> |
pt3(0) -= TranslationX |
1188 |
> |
pt3(1) -= TranslationY |
1189 |
> |
pt3(0) /= longueur : pt3(1) /= longueur |
1190 |
> |
For i = 0 To 7 |
1191 |
> |
Outils_Math.Rotation2D(pt3, P(i, 0), P(i, 1)) |
1192 |
> |
P(i, 0) += TranslationX |
1193 |
> |
P(i, 1) += TranslationY |
1194 |
> |
Next i |
1195 |
|
|
1196 |
< |
pt3(0) -= TranslationX |
1197 |
< |
pt3(1) -= TranslationY |
1198 |
< |
pt3(0) /= longueur : pt3(1) /= longueur |
1199 |
< |
For i = 0 To 7 |
1200 |
< |
Outils_Math.Rotation2D(pt3, P(i, 0), P(i, 1)) |
1180 |
< |
P(i, 0) += TranslationX |
1181 |
< |
P(i, 1) += TranslationY |
1182 |
< |
Next i |
1196 |
> |
ReDim Ligne(35) |
1197 |
> |
For i = 0 To 6 |
1198 |
> |
Ligne(i * 4) = P(i, 0) : Ligne(i * 4 + 1) = P(i, 1) : Ligne(i * 4 + 2) = P(i + 1, 0) : Ligne(i * 4 + 3) = P(i + 1, 1) |
1199 |
> |
Next i |
1200 |
> |
Ligne(28) = P(7, 0) : Ligne(29) = P(7, 1) : Ligne(30) = P(0, 0) : Ligne(31) = P(0, 1) |
1201 |
|
|
1202 |
< |
ReDim Ligne(35) |
1203 |
< |
For i = 0 To 6 |
1204 |
< |
Ligne(i * 4) = P(i, 0) : Ligne(i * 4 + 1) = P(i, 1) : Ligne(i * 4 + 2) = P(i + 1, 0) : Ligne(i * 4 + 3) = P(i + 1, 1) |
1187 |
< |
Next i |
1188 |
< |
Ligne(28) = P(7, 0) : Ligne(29) = P(7, 1) : Ligne(30) = P(0, 0) : Ligne(31) = P(0, 1) |
1202 |
> |
MettreFI = True |
1203 |
> |
autreSection = False |
1204 |
> |
AjouterMiniPoutre = True |
1205 |
|
|
1190 |
– |
MettreFI = False |
1191 |
– |
Me.Flag = 2 |
1192 |
– |
Case 2 |
1193 |
– |
MettreFI = False ' Attention, peut planter à cause de ça. |
1194 |
– |
End Select |
1206 |
|
|
1207 |
|
ElseIf Left(Nomsection, 1) = "L" Or Nomsection = " Poutre en L générique" Then ' l'Angle en L |
1208 |
|
Dim P(5, 1) As Double |
1209 |
|
|
1210 |
< |
Select Case numero |
1211 |
< |
Case 1 ' le C au complet |
1212 |
< |
|
1213 |
< |
P(0, 0) = -Poutre.GetD5 + Poutre.GetD1 |
1214 |
< |
P(0, 1) = -Poutre.GetD6 + Poutre.GetD4 |
1215 |
< |
P(1, 0) = -Poutre.GetD5 + Poutre.GetD3 |
1216 |
< |
P(1, 1) = P(0, 1) |
1217 |
< |
P(2, 0) = P(1, 0) |
1218 |
< |
P(2, 1) = -Poutre.GetD6 + Poutre.GetD2 |
1219 |
< |
P(3, 0) = -Poutre.GetD5 |
1220 |
< |
P(3, 1) = P(2, 1) |
1221 |
< |
P(4, 0) = P(3, 0) |
1222 |
< |
P(4, 1) = -Poutre.GetD6 |
1223 |
< |
P(5, 0) = P(0, 0) |
1224 |
< |
P(5, 1) = P(4, 1) |
1225 |
< |
|
1226 |
< |
r(0) = P(1, 0) - 1000 * Epsilon |
1227 |
< |
r(1) = 0 : r(2) = 0 |
1228 |
< |
Outils_Math.Rotation2D(pt3, r(0), r(1)) |
1229 |
< |
r(0) += TranslationX |
1230 |
< |
r(1) += TranslationY |
1231 |
< |
r = Commun.TransfertSketchToModel(swSketch, r) |
1232 |
< |
|
1233 |
< |
pt3(0) -= TranslationX |
1234 |
< |
pt3(1) -= TranslationY |
1235 |
< |
pt3(0) /= longueur : pt3(1) /= longueur |
1236 |
< |
For i = 0 To 5 |
1237 |
< |
Outils_Math.Rotation2D(pt3, P(i, 0), P(i, 1)) |
1227 |
< |
P(i, 0) += TranslationX |
1228 |
< |
P(i, 1) += TranslationY |
1229 |
< |
Next i |
1230 |
< |
|
1231 |
< |
ReDim Ligne(35) |
1232 |
< |
For i = 0 To 4 |
1233 |
< |
Ligne(i * 4) = P(i, 0) : Ligne(i * 4 + 1) = P(i, 1) : Ligne(i * 4 + 2) = P(i + 1, 0) : Ligne(i * 4 + 3) = P(i + 1, 1) |
1234 |
< |
Next i |
1235 |
< |
Ligne(20) = P(5, 0) : Ligne(21) = P(5, 1) : Ligne(22) = P(0, 0) : Ligne(23) = P(0, 1) |
1210 |
> |
P(0, 0) = -Poutre.GetD5 + Poutre.GetD1 |
1211 |
> |
P(0, 1) = -Poutre.GetD6 + Poutre.GetD4 |
1212 |
> |
P(1, 0) = -Poutre.GetD5 + Poutre.GetD3 |
1213 |
> |
P(1, 1) = P(0, 1) |
1214 |
> |
P(2, 0) = P(1, 0) |
1215 |
> |
P(2, 1) = -Poutre.GetD6 + Poutre.GetD2 |
1216 |
> |
P(3, 0) = -Poutre.GetD5 |
1217 |
> |
P(3, 1) = P(2, 1) |
1218 |
> |
P(4, 0) = P(3, 0) |
1219 |
> |
P(4, 1) = -Poutre.GetD6 |
1220 |
> |
P(5, 0) = P(0, 0) |
1221 |
> |
P(5, 1) = P(4, 1) |
1222 |
> |
|
1223 |
> |
r(0) = P(1, 0) - 1000 * Epsilon |
1224 |
> |
r(1) = 0 : r(2) = 0 |
1225 |
> |
Outils_Math.Rotation2D(pt3, r(0), r(1)) |
1226 |
> |
r(0) += TranslationX |
1227 |
> |
r(1) += TranslationY |
1228 |
> |
r = Commun.TransfertSketchToModel(swSketch, r) |
1229 |
> |
|
1230 |
> |
pt3(0) -= TranslationX |
1231 |
> |
pt3(1) -= TranslationY |
1232 |
> |
pt3(0) /= longueur : pt3(1) /= longueur |
1233 |
> |
For i = 0 To 5 |
1234 |
> |
Outils_Math.Rotation2D(pt3, P(i, 0), P(i, 1)) |
1235 |
> |
P(i, 0) += TranslationX |
1236 |
> |
P(i, 1) += TranslationY |
1237 |
> |
Next i |
1238 |
|
|
1239 |
< |
MettreFI = False ' lorsque l'on sort on met une face interne |
1240 |
< |
Me.Flag = 2 |
1241 |
< |
Case 2 |
1242 |
< |
MettreFI = False ' Attention, peut planter à cause de ça. |
1243 |
< |
End Select |
1239 |
> |
ReDim Ligne(35) |
1240 |
> |
For i = 0 To 4 |
1241 |
> |
Ligne(i * 4) = P(i, 0) : Ligne(i * 4 + 1) = P(i, 1) : Ligne(i * 4 + 2) = P(i + 1, 0) : Ligne(i * 4 + 3) = P(i + 1, 1) |
1242 |
> |
Next i |
1243 |
> |
Ligne(20) = P(5, 0) : Ligne(21) = P(5, 1) : Ligne(22) = P(0, 0) : Ligne(23) = P(0, 1) |
1244 |
|
|
1245 |
+ |
autreSection = False |
1246 |
+ |
AjouterMiniPoutre = True |
1247 |
+ |
MettreFI = True |
1248 |
|
|
1249 |
|
ElseIf Left(Nomsection, 1) = "T" Or Nomsection = " Poutre en T générique" Then ' le T |
1250 |
|
Select Case numero |
1294 |
|
Ligne(i * 4) = P(i, 0) : Ligne(i * 4 + 1) = P(i, 1) : Ligne(i * 4 + 2) = P(i + 1, 0) : Ligne(i * 4 + 3) = P(i + 1, 1) |
1295 |
|
Next i |
1296 |
|
Ligne(32) = P(8, 0) : Ligne(33) = P(8, 1) : Ligne(34) = P(0, 0) : Ligne(35) = P(0, 1) |
1297 |
< |
|
1297 |
> |
autreSection = True |
1298 |
> |
AjouterMiniPoutre = False |
1299 |
> |
MettreFI = True |
1300 |
|
Case 2 |
1301 |
|
Dim P(4, 1) As Double |
1302 |
|
Dim d As Double |
1335 |
|
Ligne(i * 4) = P(i, 0) : Ligne(i * 4 + 1) = P(i, 1) : Ligne(i * 4 + 2) = P(i + 1, 0) : Ligne(i * 4 + 3) = P(i + 1, 1) |
1336 |
|
Next i |
1337 |
|
Ligne(16) = P(4, 0) : Ligne(17) = P(4, 1) : Ligne(18) = P(0, 0) : Ligne(19) = P(0, 1) |
1338 |
+ |
autreSection = False |
1339 |
+ |
AjouterMiniPoutre = False |
1340 |
+ |
MettreFI = True |
1341 |
+ |
End Select |
1342 |
+ |
|
1343 |
+ |
|
1344 |
+ |
Else |
1345 |
+ |
MsgBox("Section de poutre non reconnu!", MsgBoxStyle.Critical, "Commun.DessineSectionPoutre") |
1346 |
+ |
End If |
1347 |
+ |
|
1348 |
+ |
|
1349 |
+ |
If Not Ligne Is Nothing Then |
1350 |
+ |
For i = 0 To UBound(Ligne) Step 4 |
1351 |
+ |
sketchline = swModel.CreateLine2(Ligne(i), Ligne(i + 1), 0, Ligne(i + 2), Ligne(i + 3), 0) |
1352 |
+ |
Next i |
1353 |
+ |
End If |
1354 |
+ |
|
1355 |
+ |
Return r |
1356 |
+ |
|
1357 |
+ |
End Function |
1358 |
+ |
|
1359 |
+ |
|
1360 |
+ |
|
1361 |
+ |
|
1362 |
+ |
''' <summary> |
1363 |
+ |
''' Sub qui dessine (insère des lignes) sur le sketch en fonction de la forme de la poutre. |
1364 |
+ |
''' </summary> |
1365 |
+ |
''' <param name="Poutre"></param> |
1366 |
+ |
''' <param name="TranslationX"></param> |
1367 |
+ |
''' <param name="TranslationY"></param> |
1368 |
+ |
''' <param name="numero">Si on doit découper (pipe et cercle) alors le # nous donne le numéro de l'ittération </param> |
1369 |
+ |
''' <param name="swSketch"></param> |
1370 |
+ |
''' <param name="inter"></param> |
1371 |
+ |
''' <param name="MettreFI"></param> |
1372 |
+ |
''' <returns></returns> |
1373 |
+ |
''' <remarks>C'est la version simple, donc une seule face nécessaire</remarks> |
1374 |
+ |
Protected Function DessineSectionPoutreSimple(ByRef Poutre As SlyAretePoutre, ByVal TranslationX As Double, ByVal TranslationY As Double, ByVal numero As Integer, ByRef swSketch As sldworks.Sketch, ByRef inter As InterAreteFace, ByRef MettreFI As Boolean, ByRef AutreSection As Boolean, ByRef AjouterMiniPoutre As Boolean) As Double() |
1375 |
+ |
' le sketch est déjà inséré, il faut juste mettre des swmodel.line ou autre |
1376 |
+ |
' doit retourner r() qui est un point situé à l'intérieur de la coupe |
1377 |
+ |
Dim sketchline As sldworks.SketchSegment |
1378 |
+ |
Dim longueur As Double |
1379 |
+ |
Dim r(2) As Double |
1380 |
+ |
Dim sk(1) As Double |
1381 |
+ |
Dim i As Integer |
1382 |
+ |
Dim Ligne() As Double = Nothing ' liste des lignes (4 valeurs par ligne) |
1383 |
+ |
Dim pt3() As Double |
1384 |
+ |
Dim Nomsection As String |
1385 |
+ |
|
1386 |
+ |
|
1387 |
+ |
' on doit activer le sketch avant d'utiliser la fonction getactivesketch |
1388 |
+ |
pt3 = Poutre.GetPoint3 |
1389 |
+ |
longueur = Math.Sqrt(pt3(0) * pt3(0) + pt3(1) * pt3(1)) |
1390 |
+ |
Dim IP(2) As Double ' IP est le vecteur directionnel |
1391 |
+ |
IP(0) = pt3(0) - inter.x : IP(1) = pt3(1) - inter.y : IP(2) = pt3(2) - inter.z |
1392 |
+ |
|
1393 |
+ |
|
1394 |
+ |
pt3 = Commun.TransfertModelSketch(swSketch, pt3) |
1395 |
+ |
longueur = Math.Sqrt(pt3(0) * pt3(0) + pt3(1) * pt3(1)) |
1396 |
+ |
|
1397 |
+ |
Nomsection = Poutre.GetNomSection |
1398 |
+ |
If Nomsection = "Rectangle" Or Nomsection = " Rectangle générique" Then ' un rectangle |
1399 |
+ |
Dim P(3, 1) As Double |
1400 |
+ |
P(0, 0) = Poutre.GetD1 / 2 |
1401 |
+ |
P(0, 1) = Poutre.GetD2 / 2 |
1402 |
+ |
P(1, 0) = -Poutre.GetD1 / 2 |
1403 |
+ |
P(1, 1) = Poutre.GetD2 / 2 |
1404 |
+ |
P(2, 0) = -Poutre.GetD1 / 2 |
1405 |
+ |
P(2, 1) = -Poutre.GetD2 / 2 |
1406 |
+ |
P(3, 0) = Poutre.GetD1 / 2 |
1407 |
+ |
P(3, 1) = -Poutre.GetD2 / 2 |
1408 |
+ |
|
1409 |
+ |
ReDim Ligne(15) |
1410 |
+ |
pt3(0) -= TranslationX |
1411 |
+ |
pt3(1) -= TranslationY |
1412 |
+ |
For i = 0 To 3 |
1413 |
+ |
Outils_Math.Rotation2D(pt3, P(i, 0), P(i, 1)) |
1414 |
+ |
P(i, 0) += TranslationX |
1415 |
+ |
P(i, 1) += TranslationY |
1416 |
+ |
Next i |
1417 |
+ |
|
1418 |
+ |
For i = 0 To 2 |
1419 |
+ |
Ligne(i * 4) = P(i, 0) : Ligne(i * 4 + 1) = P(i, 1) : Ligne(i * 4 + 2) = P(i + 1, 0) : Ligne(i * 4 + 3) = P(i + 1, 1) |
1420 |
+ |
Next i |
1421 |
+ |
Ligne(12) = P(3, 0) : Ligne(13) = P(3, 1) : Ligne(14) = P(0, 0) : Ligne(15) = P(0, 1) |
1422 |
+ |
|
1423 |
+ |
r(0) = inter.x + 5000 * Epsilon * IP(0) |
1424 |
+ |
r(1) = inter.y + 5000 * Epsilon * IP(1) |
1425 |
+ |
r(2) = inter.z + 5000 * Epsilon * IP(2) |
1426 |
+ |
|
1427 |
+ |
AutreSection = False |
1428 |
+ |
AjouterMiniPoutre = True |
1429 |
+ |
MettreFI = True |
1430 |
+ |
|
1431 |
+ |
|
1432 |
+ |
ElseIf Left(Nomsection, 2) = "ST" Or Nomsection = " Tube carré générique" Then ' tube carré troué |
1433 |
+ |
Dim P(3, 1) As Double |
1434 |
+ |
Select Case numero |
1435 |
+ |
Case 1 |
1436 |
+ |
P(0, 0) = Poutre.GetD1 / 2 |
1437 |
+ |
P(0, 1) = -Poutre.GetD2 / 2 |
1438 |
+ |
P(1, 0) = P(0, 0) |
1439 |
+ |
P(1, 1) = -P(0, 1) |
1440 |
+ |
P(2, 0) = -P(0, 0) |
1441 |
+ |
P(2, 1) = P(1, 1) |
1442 |
+ |
P(3, 0) = P(2, 0) |
1443 |
+ |
P(3, 1) = P(0, 1) |
1444 |
+ |
|
1445 |
+ |
r(0) = P(0, 0) - 1000 * Epsilon |
1446 |
+ |
r(1) = 0 : r(2) = 0 |
1447 |
+ |
Outils_Math.Rotation2D(pt3, r(0), r(1)) |
1448 |
+ |
r(0) += TranslationX |
1449 |
+ |
r(1) += TranslationY |
1450 |
+ |
r = Commun.TransfertSketchToModel(swSketch, r) |
1451 |
+ |
|
1452 |
+ |
pt3(0) -= TranslationX |
1453 |
+ |
pt3(1) -= TranslationY |
1454 |
+ |
pt3(0) /= longueur : pt3(1) /= longueur |
1455 |
+ |
For i = 0 To 3 |
1456 |
+ |
Outils_Math.Rotation2D(pt3, P(i, 0), P(i, 1)) |
1457 |
+ |
P(i, 0) += TranslationX |
1458 |
+ |
P(i, 1) += TranslationY |
1459 |
+ |
Next i |
1460 |
+ |
|
1461 |
+ |
ReDim Ligne(15) |
1462 |
+ |
Ligne(0) = P(0, 0) : Ligne(1) = P(0, 1) : Ligne(2) = P(1, 0) : Ligne(3) = P(1, 1) |
1463 |
+ |
Ligne(4) = P(1, 0) : Ligne(5) = P(1, 1) : Ligne(6) = P(2, 0) : Ligne(7) = P(2, 1) |
1464 |
+ |
Ligne(8) = P(2, 0) : Ligne(9) = P(2, 1) : Ligne(10) = P(3, 0) : Ligne(11) = P(3, 1) |
1465 |
+ |
Ligne(12) = P(3, 0) : Ligne(13) = P(3, 1) : Ligne(14) = P(0, 0) : Ligne(15) = P(0, 1) |
1466 |
+ |
MettreFI = False |
1467 |
+ |
AutreSection = True |
1468 |
+ |
AjouterMiniPoutre = False |
1469 |
+ |
|
1470 |
+ |
Case 2 |
1471 |
+ |
P(0, 0) = Poutre.GetD1 / 2 - Poutre.GetD3 |
1472 |
+ |
P(0, 1) = -Poutre.GetD2 / 2 + Poutre.GetD3 |
1473 |
+ |
P(1, 0) = P(0, 0) |
1474 |
+ |
P(1, 1) = -P(0, 1) |
1475 |
+ |
P(2, 0) = -P(1, 0) |
1476 |
+ |
P(2, 1) = P(1, 1) |
1477 |
+ |
P(3, 0) = P(2, 0) |
1478 |
+ |
P(3, 1) = P(0, 1) |
1479 |
+ |
|
1480 |
+ |
r(0) = P(0, 0) + 1000 * Epsilon |
1481 |
+ |
r(1) = 0 : r(2) = 0 |
1482 |
+ |
Outils_Math.Rotation2D(pt3, r(0), r(1)) |
1483 |
+ |
r(0) += TranslationX |
1484 |
+ |
r(1) += TranslationY |
1485 |
+ |
r = Commun.TransfertSketchToModel(swSketch, r) |
1486 |
+ |
|
1487 |
+ |
pt3(0) -= TranslationX |
1488 |
+ |
pt3(1) -= TranslationY |
1489 |
+ |
pt3(0) /= longueur : pt3(1) /= longueur |
1490 |
+ |
For i = 0 To 3 |
1491 |
+ |
Outils_Math.Rotation2D(pt3, P(i, 0), P(i, 1)) |
1492 |
+ |
P(i, 0) += TranslationX |
1493 |
+ |
P(i, 1) += TranslationY |
1494 |
+ |
Next i |
1495 |
+ |
|
1496 |
+ |
ReDim Ligne(15) |
1497 |
+ |
Ligne(0) = P(0, 0) : Ligne(1) = P(0, 1) : Ligne(2) = P(1, 0) : Ligne(3) = P(1, 1) |
1498 |
+ |
Ligne(4) = P(1, 0) : Ligne(5) = P(1, 1) : Ligne(6) = P(2, 0) : Ligne(7) = P(2, 1) |
1499 |
+ |
Ligne(8) = P(2, 0) : Ligne(9) = P(2, 1) : Ligne(10) = P(3, 0) : Ligne(11) = P(3, 1) |
1500 |
+ |
Ligne(12) = P(3, 0) : Ligne(13) = P(3, 1) : Ligne(14) = P(0, 0) : Ligne(15) = P(0, 1) |
1501 |
+ |
|
1502 |
+ |
MettreFI = True ' lorsque l'on sort on met une face interne |
1503 |
+ |
AutreSection = False |
1504 |
+ |
AjouterMiniPoutre = False |
1505 |
+ |
|
1506 |
+ |
End Select |
1507 |
+ |
|
1508 |
+ |
ElseIf Left(Nomsection, 1) = "S" Or Nomsection = " Poutre en I générique" Then ' poutre en I de type S |
1509 |
+ |
Dim P(11, 1) As Double |
1510 |
+ |
Dim d As Double |
1511 |
+ |
|
1512 |
+ |
d = Poutre.GetD4 * 0.8660254038 ' section.D4 / (2 * tan(30)) |
1513 |
+ |
|
1514 |
+ |
P(0, 0) = (Poutre.GetD1 / 2) - Poutre.GetD3 |
1515 |
+ |
P(0, 1) = -Poutre.GetD4 / 2 |
1516 |
+ |
P(1, 0) = P(0, 0) |
1517 |
+ |
P(1, 1) = -Poutre.GetD2 / 2 |
1518 |
+ |
P(2, 0) = Poutre.GetD1 / 2 |
1519 |
+ |
P(2, 1) = P(1, 1) |
1520 |
+ |
P(3, 0) = P(2, 0) |
1521 |
+ |
P(3, 1) = -P(2, 1) |
1522 |
+ |
P(4, 0) = P(1, 0) |
1523 |
+ |
P(4, 1) = -P(1, 1) |
1524 |
+ |
P(5, 0) = P(0, 0) |
1525 |
+ |
P(5, 1) = -P(0, 1) |
1526 |
+ |
|
1527 |
+ |
P(6, 0) = -((Poutre.GetD1 / 2) - Poutre.GetD3) |
1528 |
+ |
P(6, 1) = Poutre.GetD4 / 2.0R |
1529 |
+ |
P(7, 0) = P(6, 0) |
1530 |
+ |
P(7, 1) = Poutre.GetD2 / 2 |
1531 |
+ |
P(8, 0) = -Poutre.GetD1 / 2 |
1532 |
+ |
P(8, 1) = P(7, 1) |
1533 |
+ |
P(9, 0) = P(8, 0) |
1534 |
+ |
P(9, 1) = -P(8, 1) |
1535 |
+ |
P(10, 0) = P(7, 0) |
1536 |
+ |
P(10, 1) = P(9, 1) |
1537 |
+ |
P(11, 0) = P(6, 0) |
1538 |
+ |
P(11, 1) = P(0, 1) |
1539 |
+ |
|
1540 |
+ |
|
1541 |
+ |
pt3(0) -= TranslationX |
1542 |
+ |
pt3(1) -= TranslationY |
1543 |
+ |
pt3(0) /= longueur : pt3(1) /= longueur |
1544 |
+ |
For i = 0 To 11 |
1545 |
+ |
Outils_Math.Rotation2D(pt3, P(i, 0), P(i, 1)) |
1546 |
+ |
P(i, 0) += TranslationX |
1547 |
+ |
P(i, 1) += TranslationY |
1548 |
+ |
Next i |
1549 |
+ |
|
1550 |
+ |
ReDim Ligne(47) |
1551 |
+ |
|
1552 |
+ |
For k As Integer = 0 To 10 |
1553 |
+ |
Ligne(4 * k + 0) = P(k, 0) : Ligne(4 * k + 1) = P(k, 1) : Ligne(4 * k + 2) = P(k + 1, 0) : Ligne(4 * k + 3) = P(k + 1, 1) |
1554 |
+ |
Next k |
1555 |
+ |
Ligne(44) = P(0, 0) : Ligne(45) = P(0, 1) : Ligne(46) = P(11, 0) : Ligne(47) = P(11, 1) |
1556 |
+ |
|
1557 |
+ |
|
1558 |
+ |
r(0) = inter.x '+ 5000 * Epsilon * IP(0) |
1559 |
+ |
r(1) = inter.y '+ 5000 * Epsilon * IP(1) |
1560 |
+ |
r(2) = inter.z '+ 5000 * Epsilon * IP(2) |
1561 |
+ |
|
1562 |
+ |
AutreSection = False |
1563 |
+ |
MettreFI = True |
1564 |
+ |
AjouterMiniPoutre = True |
1565 |
+ |
|
1566 |
+ |
|
1567 |
+ |
ElseIf Left(Nomsection, 5) = "Tuyau" OrElse Nomsection = " Tuyau (Pipe) générique" Then ' le tube rond |
1568 |
+ |
Dim p(4, 1) As Double |
1569 |
+ |
p(0, 0) = Poutre.GetD1 / 2 - Poutre.GetD3 |
1570 |
+ |
p(0, 1) = 0 |
1571 |
+ |
p(1, 0) = Poutre.GetD1 / 2 |
1572 |
+ |
p(1, 1) = 0 |
1573 |
+ |
p(2, 0) = -p(0, 0) |
1574 |
+ |
p(2, 1) = 0 |
1575 |
+ |
p(3, 0) = -p(1, 0) |
1576 |
+ |
p(3, 1) = 0 |
1577 |
+ |
p(4, 0) = 0 |
1578 |
+ |
p(4, 1) = 0 |
1579 |
+ |
|
1580 |
+ |
Select Case numero |
1581 |
+ |
Case 1 |
1582 |
+ |
|
1583 |
+ |
r(0) = 0 |
1584 |
+ |
r(1) = Poutre.GetD1 / 2 - Poutre.GetD3 / 2 : r(2) = 0 |
1585 |
+ |
Outils_Math.Rotation2D(pt3, r(0), r(1)) |
1586 |
+ |
r(0) += TranslationX |
1587 |
+ |
r(1) += TranslationY |
1588 |
+ |
r = Commun.TransfertSketchToModel(swSketch, r) |
1589 |
+ |
|
1590 |
+ |
pt3(0) -= TranslationX |
1591 |
+ |
pt3(1) -= TranslationY |
1592 |
+ |
pt3(0) /= longueur : pt3(1) /= longueur |
1593 |
+ |
For i = 0 To 4 |
1594 |
+ |
Outils_Math.Rotation2D(pt3, p(i, 0), p(i, 1)) |
1595 |
+ |
p(i, 0) += TranslationX |
1596 |
+ |
p(i, 1) += TranslationY |
1597 |
+ |
Next i |
1598 |
+ |
|
1599 |
+ |
ReDim Ligne(7) |
1600 |
+ |
Ligne(0) = p(0, 0) : Ligne(1) = p(0, 1) : Ligne(2) = p(1, 0) : Ligne(3) = p(1, 1) |
1601 |
+ |
Ligne(4) = p(2, 0) : Ligne(5) = p(2, 1) : Ligne(6) = p(3, 0) : Ligne(7) = p(3, 1) |
1602 |
+ |
swModel.CreateArc2(p(4, 0), p(4, 1), 0, p(1, 0), p(1, 1), 0, p(3, 0), p(3, 1), 0, 1) |
1603 |
+ |
swModel.CreateArc2(p(4, 0), p(4, 1), 0, p(0, 0), p(0, 1), 0, p(2, 0), p(2, 1), 0, 1) |
1604 |
+ |
MettreFI = True |
1605 |
+ |
AutreSection = True |
1606 |
+ |
AjouterMiniPoutre = False |
1607 |
+ |
|
1608 |
+ |
Case 2 |
1609 |
+ |
|
1610 |
+ |
r(0) = 0 |
1611 |
+ |
r(1) = -Poutre.GetD1 / 2 + Poutre.GetD3 / 2 : r(2) = 0 |
1612 |
+ |
Outils_Math.Rotation2D(pt3, r(0), r(1)) |
1613 |
+ |
r(0) += TranslationX |
1614 |
+ |
r(1) += TranslationY |
1615 |
+ |
r = Commun.TransfertSketchToModel(swSketch, r) |
1616 |
+ |
|
1617 |
+ |
pt3(0) -= TranslationX |
1618 |
+ |
pt3(1) -= TranslationY |
1619 |
+ |
pt3(0) /= longueur : pt3(1) /= longueur |
1620 |
+ |
For i = 0 To 4 |
1621 |
+ |
Outils_Math.Rotation2D(pt3, p(i, 0), p(i, 1)) |
1622 |
+ |
p(i, 0) += TranslationX |
1623 |
+ |
p(i, 1) += TranslationY |
1624 |
+ |
Next i |
1625 |
+ |
|
1626 |
+ |
ReDim Ligne(7) |
1627 |
+ |
Ligne(0) = p(0, 0) : Ligne(1) = p(0, 1) : Ligne(2) = p(1, 0) : Ligne(3) = p(1, 1) |
1628 |
+ |
Ligne(4) = p(2, 0) : Ligne(5) = p(2, 1) : Ligne(6) = p(3, 0) : Ligne(7) = p(3, 1) |
1629 |
+ |
swModel.CreateArc2(p(4, 0), p(4, 1), 0, p(1, 0), p(1, 1), 0, p(3, 0), p(3, 1), 0, -1) |
1630 |
+ |
swModel.CreateArc2(p(4, 0), p(4, 1), 0, p(0, 0), p(0, 1), 0, p(2, 0), p(2, 1), 0, -1) |
1631 |
+ |
'MettreFI = True ' lorsque l'on sort on met une face interne |
1632 |
+ |
MettreFI = True |
1633 |
+ |
AutreSection = False |
1634 |
+ |
AjouterMiniPoutre = True |
1635 |
+ |
|
1636 |
+ |
End Select |
1637 |
+ |
|
1638 |
+ |
ElseIf Left(Poutre.GetNomSection, 2) = "Cy" Or Nomsection = " Cylindrique (Rod) générique" Then ' Pipe, |
1639 |
+ |
Dim P(2, 1) As Double |
1640 |
+ |
Dim d As Double, e As Double |
1641 |
+ |
d = Poutre.GetD1 / 4 ' Math.Sin(30) ( et on doit diviser le diamètre par 2) |
1642 |
+ |
e = Poutre.GetD1 * Math.Sqrt(3) / 4 ' cos (30°) |
1643 |
+ |
|
1644 |
+ |
P(0, 0) = 0 |
1645 |
+ |
P(0, 1) = 0 |
1646 |
+ |
P(1, 0) = d |
1647 |
+ |
P(1, 1) = -e |
1648 |
+ |
P(2, 0) = d |
1649 |
+ |
P(2, 1) = e |
1650 |
+ |
|
1651 |
+ |
Select Case numero |
1652 |
+ |
Case 1 |
1653 |
+ |
r(0) = P(0, 0) + 1000 * Epsilon |
1654 |
+ |
r(1) = 0 : r(2) = 0 |
1655 |
+ |
Outils_Math.Rotation2D(pt3, r(0), r(1)) |
1656 |
+ |
r(0) += TranslationX |
1657 |
+ |
r(1) += TranslationY |
1658 |
+ |
r = Commun.TransfertSketchToModel(swSketch, r) |
1659 |
+ |
pt3(0) -= TranslationX |
1660 |
+ |
pt3(1) -= TranslationY |
1661 |
+ |
pt3(0) /= longueur : pt3(1) /= longueur |
1662 |
+ |
For i = 0 To 2 |
1663 |
+ |
Outils_Math.Rotation2D(pt3, P(i, 0), P(i, 1)) |
1664 |
+ |
P(i, 0) += TranslationX |
1665 |
+ |
P(i, 1) += TranslationY |
1666 |
+ |
Next i |
1667 |
+ |
ReDim Ligne(7) |
1668 |
+ |
Ligne(0) = P(0, 0) : Ligne(1) = P(0, 1) : Ligne(2) = P(1, 0) : Ligne(3) = P(1, 1) |
1669 |
+ |
Ligne(4) = P(0, 0) : Ligne(5) = P(0, 1) : Ligne(6) = P(2, 0) : Ligne(7) = P(2, 1) |
1670 |
+ |
swModel.CreateArc2(P(0, 0), P(0, 1), 0, P(1, 0), P(1, 1), 0, P(2, 0), P(2, 1), 0, 1) ' le dernier param est la direction. 1 ou -1 |
1671 |
+ |
|
1672 |
+ |
|
1673 |
+ |
MettreFI = True |
1674 |
+ |
AjouterMiniPoutre = False |
1675 |
+ |
AutreSection = True |
1676 |
+ |
|
1677 |
+ |
Case 2 |
1678 |
+ |
r(0) = P(0, 0) - 1000 * Epsilon |
1679 |
+ |
r(1) = 0 : r(2) = 0 |
1680 |
+ |
Outils_Math.Rotation2D(pt3, r(0), r(1)) |
1681 |
+ |
r(0) += TranslationX |
1682 |
+ |
r(1) += TranslationY |
1683 |
+ |
r = Commun.TransfertSketchToModel(swSketch, r) |
1684 |
+ |
|
1685 |
+ |
pt3(0) -= TranslationX |
1686 |
+ |
pt3(1) -= TranslationY |
1687 |
+ |
pt3(0) /= longueur : pt3(1) /= longueur |
1688 |
+ |
For i = 0 To 2 |
1689 |
+ |
Outils_Math.Rotation2D(pt3, P(i, 0), P(i, 1)) |
1690 |
+ |
P(i, 0) += TranslationX |
1691 |
+ |
P(i, 1) += TranslationY |
1692 |
+ |
Next i |
1693 |
+ |
ReDim Ligne(7) |
1694 |
+ |
Ligne(0) = P(0, 0) : Ligne(1) = P(0, 1) : Ligne(2) = P(1, 0) : Ligne(3) = P(1, 1) |
1695 |
+ |
Ligne(4) = P(0, 0) : Ligne(5) = P(0, 1) : Ligne(6) = P(2, 0) : Ligne(7) = P(2, 1) |
1696 |
+ |
|
1697 |
+ |
swModel.CreateArc2(P(0, 0), P(0, 1), 0, P(1, 0), P(1, 1), 0, P(2, 0), P(2, 1), 0, -1) ' le dernier param est la direction. 1 ou -1 |
1698 |
+ |
|
1699 |
+ |
MettreFI = True |
1700 |
+ |
AjouterMiniPoutre = False |
1701 |
+ |
AutreSection = False |
1702 |
|
|
1703 |
|
End Select |
1704 |
+ |
|
1705 |
+ |
|
1706 |
+ |
|
1707 |
+ |
ElseIf Left(Nomsection, 1) = "C" Or Nomsection = " Poutre en C générique" Then ' le channel |
1708 |
+ |
Dim P(7, 1) As Double |
1709 |
+ |
|
1710 |
+ |
P(0, 0) = Poutre.GetD1 / 2 - Poutre.GetD3 |
1711 |
+ |
P(0, 1) = Poutre.GetD5 |
1712 |
+ |
P(1, 0) = P(0, 0) |
1713 |
+ |
P(1, 1) = Poutre.GetD5 + Poutre.GetD4 - Poutre.GetD2 |
1714 |
+ |
P(2, 0) = Poutre.GetD1 / 2 |
1715 |
+ |
P(2, 1) = P(1, 1) |
1716 |
+ |
P(3, 0) = P(2, 0) |
1717 |
+ |
P(3, 1) = P(1, 1) + Poutre.GetD2 |
1718 |
+ |
P(4, 0) = -P(3, 0) |
1719 |
+ |
P(4, 1) = P(3, 1) |
1720 |
+ |
P(5, 0) = P(4, 0) |
1721 |
+ |
P(5, 1) = P(1, 1) |
1722 |
+ |
P(6, 0) = -P(1, 0) |
1723 |
+ |
P(6, 1) = P(5, 1) |
1724 |
+ |
P(7, 0) = -P(0, 0) |
1725 |
+ |
P(7, 1) = P(0, 1) |
1726 |
+ |
|
1727 |
+ |
r(0) = P(0, 0) + 1000 * Epsilon |
1728 |
+ |
r(1) = P(0, 1) : r(2) = 0 |
1729 |
+ |
Outils_Math.Rotation2D(pt3, r(0), r(1)) |
1730 |
+ |
r(0) += TranslationX |
1731 |
+ |
r(1) += TranslationY |
1732 |
+ |
r = Commun.TransfertSketchToModel(swSketch, r) |
1733 |
+ |
|
1734 |
+ |
pt3(0) -= TranslationX |
1735 |
+ |
pt3(1) -= TranslationY |
1736 |
+ |
pt3(0) /= longueur : pt3(1) /= longueur |
1737 |
+ |
For i = 0 To 7 |
1738 |
+ |
Outils_Math.Rotation2D(pt3, P(i, 0), P(i, 1)) |
1739 |
+ |
P(i, 0) += TranslationX |
1740 |
+ |
P(i, 1) += TranslationY |
1741 |
+ |
Next i |
1742 |
+ |
|
1743 |
+ |
ReDim Ligne(35) |
1744 |
+ |
For i = 0 To 6 |
1745 |
+ |
Ligne(i * 4) = P(i, 0) : Ligne(i * 4 + 1) = P(i, 1) : Ligne(i * 4 + 2) = P(i + 1, 0) : Ligne(i * 4 + 3) = P(i + 1, 1) |
1746 |
+ |
Next i |
1747 |
+ |
Ligne(28) = P(7, 0) : Ligne(29) = P(7, 1) : Ligne(30) = P(0, 0) : Ligne(31) = P(0, 1) |
1748 |
+ |
|
1749 |
|
MettreFI = True |
1750 |
+ |
AjouterMiniPoutre = True |
1751 |
+ |
AutreSection = False |
1752 |
+ |
|
1753 |
+ |
|
1754 |
+ |
ElseIf Left(Nomsection, 1) = "L" Or Nomsection = " Poutre en L générique" Then ' l'Angle en L |
1755 |
+ |
Dim P(5, 1) As Double |
1756 |
+ |
|
1757 |
+ |
P(0, 0) = -Poutre.GetD5 + Poutre.GetD1 |
1758 |
+ |
P(0, 1) = -Poutre.GetD6 + Poutre.GetD4 |
1759 |
+ |
P(1, 0) = -Poutre.GetD5 + Poutre.GetD3 |
1760 |
+ |
P(1, 1) = P(0, 1) |
1761 |
+ |
P(2, 0) = P(1, 0) |
1762 |
+ |
P(2, 1) = -Poutre.GetD6 + Poutre.GetD2 |
1763 |
+ |
P(3, 0) = -Poutre.GetD5 |
1764 |
+ |
P(3, 1) = P(2, 1) |
1765 |
+ |
P(4, 0) = P(3, 0) |
1766 |
+ |
P(4, 1) = -Poutre.GetD6 |
1767 |
+ |
P(5, 0) = P(0, 0) |
1768 |
+ |
P(5, 1) = P(4, 1) |
1769 |
+ |
|
1770 |
+ |
r(0) = P(1, 0) - 1000 * Epsilon |
1771 |
+ |
r(1) = 0 : r(2) = 0 |
1772 |
+ |
Outils_Math.Rotation2D(pt3, r(0), r(1)) |
1773 |
+ |
r(0) += TranslationX |
1774 |
+ |
r(1) += TranslationY |
1775 |
+ |
r = Commun.TransfertSketchToModel(swSketch, r) |
1776 |
+ |
|
1777 |
+ |
pt3(0) -= TranslationX |
1778 |
+ |
pt3(1) -= TranslationY |
1779 |
+ |
pt3(0) /= longueur : pt3(1) /= longueur |
1780 |
+ |
For i = 0 To 5 |
1781 |
+ |
Outils_Math.Rotation2D(pt3, P(i, 0), P(i, 1)) |
1782 |
+ |
P(i, 0) += TranslationX |
1783 |
+ |
P(i, 1) += TranslationY |
1784 |
+ |
Next i |
1785 |
+ |
|
1786 |
+ |
ReDim Ligne(35) |
1787 |
+ |
For i = 0 To 4 |
1788 |
+ |
Ligne(i * 4) = P(i, 0) : Ligne(i * 4 + 1) = P(i, 1) : Ligne(i * 4 + 2) = P(i + 1, 0) : Ligne(i * 4 + 3) = P(i + 1, 1) |
1789 |
+ |
Next i |
1790 |
+ |
Ligne(20) = P(5, 0) : Ligne(21) = P(5, 1) : Ligne(22) = P(0, 0) : Ligne(23) = P(0, 1) |
1791 |
+ |
|
1792 |
+ |
MettreFI = True |
1793 |
+ |
AjouterMiniPoutre = True |
1794 |
+ |
AutreSection = False |
1795 |
+ |
|
1796 |
+ |
|
1797 |
+ |
ElseIf Left(Nomsection, 1) = "T" Or Nomsection = " Poutre en T générique" Then ' le T |
1798 |
+ |
|
1799 |
+ |
Dim P(7, 1) As Double |
1800 |
+ |
Dim d As Double |
1801 |
+ |
d = Poutre.GetD4 * 0.8660254038 ' section.D4 / (2 * tan(30)) |
1802 |
+ |
|
1803 |
+ |
P(0, 0) = -Poutre.GetD5 |
1804 |
+ |
P(0, 1) = Poutre.GetD4 / 2 |
1805 |
+ |
P(1, 0) = P(0, 0) |
1806 |
+ |
P(1, 1) = -P(0, 1) |
1807 |
+ |
P(2, 0) = Poutre.GetD1 - Poutre.GetD5 - Poutre.GetD3 |
1808 |
+ |
P(2, 1) = -Poutre.GetD4 / 2.0R |
1809 |
+ |
P(3, 0) = P(2, 0) |
1810 |
+ |
P(3, 1) = -Poutre.GetD2 / 2 |
1811 |
+ |
P(4, 0) = Poutre.GetD1 - Poutre.GetD5 |
1812 |
+ |
P(4, 1) = P(3, 1) |
1813 |
+ |
P(5, 0) = P(4, 0) |
1814 |
+ |
P(5, 1) = -P(4, 1) |
1815 |
+ |
P(6, 0) = P(3, 0) |
1816 |
+ |
P(6, 1) = -P(3, 1) |
1817 |
+ |
P(7, 0) = P(2, 0) |
1818 |
+ |
P(7, 1) = -P(2, 1) |
1819 |
+ |
|
1820 |
+ |
|
1821 |
+ |
r(0) = 0 |
1822 |
+ |
r(1) = 0 : r(2) = 0 |
1823 |
+ |
Outils_Math.Rotation2D(pt3, r(0), r(1)) |
1824 |
+ |
r(0) += TranslationX |
1825 |
+ |
r(1) += TranslationY |
1826 |
+ |
r = Commun.TransfertSketchToModel(swSketch, r) |
1827 |
+ |
|
1828 |
+ |
pt3(0) -= TranslationX |
1829 |
+ |
pt3(1) -= TranslationY |
1830 |
+ |
pt3(0) /= longueur : pt3(1) /= longueur |
1831 |
+ |
For i = 0 To 7 |
1832 |
+ |
Outils_Math.Rotation2D(pt3, P(i, 0), P(i, 1)) |
1833 |
+ |
P(i, 0) += TranslationX |
1834 |
+ |
P(i, 1) += TranslationY |
1835 |
+ |
Next i |
1836 |
+ |
|
1837 |
+ |
ReDim Ligne(31) |
1838 |
+ |
For i = 0 To 6 |
1839 |
+ |
Ligne(i * 4) = P(i, 0) : Ligne(i * 4 + 1) = P(i, 1) : Ligne(i * 4 + 2) = P(i + 1, 0) : Ligne(i * 4 + 3) = P(i + 1, 1) |
1840 |
+ |
Next i |
1841 |
+ |
Ligne(28) = P(7, 0) : Ligne(29) = P(7, 1) : Ligne(30) = P(0, 0) : Ligne(31) = P(0, 1) |
1842 |
+ |
|
1843 |
+ |
MettreFI = True |
1844 |
+ |
AjouterMiniPoutre = True |
1845 |
+ |
AutreSection = False |
1846 |
|
|
1847 |
|
|
1848 |
|
Else |
1860 |
|
|
1861 |
|
End Function |
1862 |
|
|
1863 |
+ |
|
1864 |
|
Public Function SwFace() As sldworks.Face2 ' retourne la première face de la liste (dans la partie traitement, ce sera la seule...) |
1865 |
|
Return Me.lst_Faces.Item(0) |
1866 |
|
End Function |
1947 |
|
|
1948 |
|
|
1949 |
|
Public Sub AjouterFace(ByRef face As sldworks.Face2) |
1950 |
< |
Dim testface As sldworks.Face2 |
1438 |
< |
Dim faultentity As sldworks.FaultEntity |
1439 |
< |
Dim swent As sldworks.Entity |
1440 |
< |
|
1441 |
< |
If Not Me.lst_Faces.Contains(face) Then Me.lst_Faces.Add(face) |
1442 |
< |
|
1443 |
< |
' vérifier que les anciennes faces sont toujours ok... |
1444 |
< |
'For Each testface In Me.lst_Faces |
1445 |
< |
' faultentity = testface.Check |
1446 |
< |
' If Not faultentity.Count = 0 Then ' on a un problème avec la face.... |
1447 |
< |
' If lst_Faces.Contains(testface) Then |
1448 |
< |
' Try |
1449 |
< |
' lst_Faces.Remove(testface) |
1450 |
< |
' Catch ex As Exception |
1451 |
< |
|
1452 |
< |
' End Try |
1453 |
< |
' End If |
1454 |
< |
|
1455 |
< |
'Dim i As Integer |
1456 |
< |
'For i = 0 To faultentity.Count - 1 |
1457 |
< |
' swent = faultentity.Entity(i) |
1458 |
< |
' If Not swent Is Nothing Then |
1459 |
< |
' swent.Select4(True, Nothing) |
1460 |
< |
' End If |
1461 |
< |
' Debug.Print(" Fault[" & i & "] = " & swent.errorCode(i)) |
1462 |
< |
'Next i |
1463 |
< |
'End If |
1464 |
< |
'Next testface |
1465 |
< |
|
1466 |
< |
|
1950 |
> |
Me.lst_Faces.Add(face) |
1951 |
|
End Sub |
1952 |
|
|
1953 |
|
|
2117 |
|
' là on a 2 options, |
2118 |
|
' a) on utilise le rayon hydraulique: 4* Surface / Périmètre |
2119 |
|
EcartSouhaite = Me.GrosseurMailleFaceInterne ' 4 * Me.Aire / Me.Perimetre |
2120 |
+ |
If EcartSouhaite <= 0 Then Exit Sub |
2121 |
|
ratio = EcartSouhaite / ENG |
2122 |
|
|
2123 |
|
|