structuralcodes 0.6.0__py3-none-any.whl → 0.6.1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of structuralcodes might be problematic. Click here for more details.

@@ -0,0 +1,528 @@
1
+ """L profiles."""
2
+
3
+ from shapely import (
4
+ Polygon,
5
+ )
6
+
7
+ from ._base_profile import BaseProfile
8
+ from ._common_functions import (
9
+ _create_L_section,
10
+ )
11
+
12
+
13
+ class L(BaseProfile):
14
+ """Simple class for representing a L profile.
15
+
16
+ European standard equal side angle L20x20 - L250x250.
17
+
18
+ """
19
+
20
+ parameters = {
21
+ 'L20x20x3': {'h': 20.0, 'b': 20.0, 't': 3.0, 'r1': 3.5, 'r2': 2.0},
22
+ 'L25x25x3': {'h': 25.0, 'b': 25.0, 't': 3.0, 'r1': 3.5, 'r2': 2.0},
23
+ 'L25x25x4': {'h': 25.0, 'b': 25.0, 't': 4.0, 'r1': 3.5, 'r2': 2.0},
24
+ 'L30x30x3': {'h': 30.0, 'b': 30.0, 't': 3.0, 'r1': 5.0, 'r2': 2.5},
25
+ 'L30x30x4': {'h': 30.0, 'b': 30.0, 't': 4.0, 'r1': 5.0, 'r2': 2.5},
26
+ 'L35x35x4': {'h': 35.0, 'b': 35.0, 't': 4.0, 'r1': 5.0, 'r2': 2.5},
27
+ 'L40x40x4': {'h': 40.0, 'b': 40.0, 't': 4.0, 'r1': 6.0, 'r2': 3.0},
28
+ 'L40x40x5': {'h': 40.0, 'b': 40.0, 't': 5.0, 'r1': 6.0, 'r2': 3.0},
29
+ 'L45x45x4.5': {'h': 45.0, 'b': 45.0, 't': 4.5, 'r1': 7.0, 'r2': 3.5},
30
+ 'L50x50x4': {'h': 50.0, 'b': 50.0, 't': 4.0, 'r1': 7.0, 'r2': 3.5},
31
+ 'L50x50x5': {'h': 50.0, 'b': 50.0, 't': 5.0, 'r1': 7.0, 'r2': 3.5},
32
+ 'L50x50x6': {'h': 50.0, 'b': 50.0, 't': 6.0, 'r1': 7.0, 'r2': 3.5},
33
+ 'L60x60x5': {'h': 60.0, 'b': 60.0, 't': 5.0, 'r1': 8.0, 'r2': 4.0},
34
+ 'L60x60x6': {'h': 60.0, 'b': 60.0, 't': 6.0, 'r1': 8.0, 'r2': 4.0},
35
+ 'L60x60x8': {'h': 60.0, 'b': 60.0, 't': 8.0, 'r1': 8.0, 'r2': 4.0},
36
+ 'L65x65x7': {'h': 65.0, 'b': 65.0, 't': 7.0, 'r1': 9.0, 'r2': 4.5},
37
+ 'L70x70x6': {'h': 70.0, 'b': 70.0, 't': 6.0, 'r1': 9.0, 'r2': 4.5},
38
+ 'L70x70x7': {'h': 70.0, 'b': 70.0, 't': 7.0, 'r1': 9.0, 'r2': 4.5},
39
+ 'L75x75x6': {'h': 75.0, 'b': 75.0, 't': 6.0, 'r1': 10.0, 'r2': 5.0},
40
+ 'L75x75x8': {'h': 75.0, 'b': 75.0, 't': 8.0, 'r1': 10.0, 'r2': 5.0},
41
+ 'L80x80x8': {'h': 80.0, 'b': 80.0, 't': 8.0, 'r1': 10.0, 'r2': 5.0},
42
+ 'L80x80x10': {'h': 80.0, 'b': 80.0, 't': 10.0, 'r1': 10.0, 'r2': 5.0},
43
+ 'L90x90x7': {'h': 90.0, 'b': 90.0, 't': 7.0, 'r1': 11.0, 'r2': 5.5},
44
+ 'L90x90x8': {'h': 90.0, 'b': 90.0, 't': 8.0, 'r1': 11.0, 'r2': 5.5},
45
+ 'L90x90x9': {'h': 90.0, 'b': 90.0, 't': 9.0, 'r1': 11.0, 'r2': 5.5},
46
+ 'L90x90x10': {'h': 90.0, 'b': 90.0, 't': 10.0, 'r1': 11.0, 'r2': 5.5},
47
+ 'L100x100x8': {
48
+ 'h': 100.0,
49
+ 'b': 100.0,
50
+ 't': 8.0,
51
+ 'r1': 12.0,
52
+ 'r2': 6.0,
53
+ },
54
+ 'L100x100x10': {
55
+ 'h': 100.0,
56
+ 'b': 100.0,
57
+ 't': 10.0,
58
+ 'r1': 12.0,
59
+ 'r2': 6.0,
60
+ },
61
+ 'L100x100x12': {
62
+ 'h': 100.0,
63
+ 'b': 100.0,
64
+ 't': 12.0,
65
+ 'r1': 12.0,
66
+ 'r2': 6.0,
67
+ },
68
+ 'L110x110x10': {
69
+ 'h': 110.0,
70
+ 'b': 110.0,
71
+ 't': 10.0,
72
+ 'r1': 13.0,
73
+ 'r2': 6.5,
74
+ },
75
+ 'L110x110x12': {
76
+ 'h': 110.0,
77
+ 'b': 110.0,
78
+ 't': 12.0,
79
+ 'r1': 13.0,
80
+ 'r2': 6.5,
81
+ },
82
+ 'L120x120x10': {
83
+ 'h': 120.0,
84
+ 'b': 120.0,
85
+ 't': 10.0,
86
+ 'r1': 13.0,
87
+ 'r2': 6.5,
88
+ },
89
+ 'L120x120x11': {
90
+ 'h': 120.0,
91
+ 'b': 120.0,
92
+ 't': 11.0,
93
+ 'r1': 13.0,
94
+ 'r2': 6.5,
95
+ },
96
+ 'L120x120x12': {
97
+ 'h': 120.0,
98
+ 'b': 120.0,
99
+ 't': 12.0,
100
+ 'r1': 13.0,
101
+ 'r2': 6.5,
102
+ },
103
+ 'L120x120x13': {
104
+ 'h': 120.0,
105
+ 'b': 120.0,
106
+ 't': 13.0,
107
+ 'r1': 13.0,
108
+ 'r2': 6.5,
109
+ },
110
+ 'L120x120x15': {
111
+ 'h': 120.0,
112
+ 'b': 120.0,
113
+ 't': 15.0,
114
+ 'r1': 13.0,
115
+ 'r2': 6.5,
116
+ },
117
+ 'L130x130x12': {
118
+ 'h': 130.0,
119
+ 'b': 130.0,
120
+ 't': 12.0,
121
+ 'r1': 14.0,
122
+ 'r2': 7.0,
123
+ },
124
+ 'L150x150x10': {
125
+ 'h': 150.0,
126
+ 'b': 150.0,
127
+ 't': 10.0,
128
+ 'r1': 16.0,
129
+ 'r2': 8.0,
130
+ },
131
+ 'L150x150x12': {
132
+ 'h': 150.0,
133
+ 'b': 150.0,
134
+ 't': 12.0,
135
+ 'r1': 16.0,
136
+ 'r2': 8.0,
137
+ },
138
+ 'L150x150x14': {
139
+ 'h': 150.0,
140
+ 'b': 150.0,
141
+ 't': 14.0,
142
+ 'r1': 16.0,
143
+ 'r2': 8.0,
144
+ },
145
+ 'L150x150x15': {
146
+ 'h': 150.0,
147
+ 'b': 150.0,
148
+ 't': 15.0,
149
+ 'r1': 16.0,
150
+ 'r2': 8.0,
151
+ },
152
+ 'L150x150x18': {
153
+ 'h': 150.0,
154
+ 'b': 150.0,
155
+ 't': 18.0,
156
+ 'r1': 16.0,
157
+ 'r2': 8.0,
158
+ },
159
+ 'L160x160x14': {
160
+ 'h': 160.0,
161
+ 'b': 160.0,
162
+ 't': 14.0,
163
+ 'r1': 17.0,
164
+ 'r2': 8.5,
165
+ },
166
+ 'L160x160x15': {
167
+ 'h': 160.0,
168
+ 'b': 160.0,
169
+ 't': 15.0,
170
+ 'r1': 17.0,
171
+ 'r2': 8.5,
172
+ },
173
+ 'L160x160x16': {
174
+ 'h': 160.0,
175
+ 'b': 160.0,
176
+ 't': 16.0,
177
+ 'r1': 17.0,
178
+ 'r2': 8.5,
179
+ },
180
+ 'L160x160x17': {
181
+ 'h': 160.0,
182
+ 'b': 160.0,
183
+ 't': 17.0,
184
+ 'r1': 17.0,
185
+ 'r2': 8.5,
186
+ },
187
+ 'L180x180x13': {
188
+ 'h': 180.0,
189
+ 'b': 180.0,
190
+ 't': 13.0,
191
+ 'r1': 18.0,
192
+ 'r2': 9.0,
193
+ },
194
+ 'L180x180x14': {
195
+ 'h': 180.0,
196
+ 'b': 180.0,
197
+ 't': 14.0,
198
+ 'r1': 18.0,
199
+ 'r2': 9.0,
200
+ },
201
+ 'L180x180x15': {
202
+ 'h': 180.0,
203
+ 'b': 180.0,
204
+ 't': 15.0,
205
+ 'r1': 18.0,
206
+ 'r2': 9.0,
207
+ },
208
+ 'L180x180x16': {
209
+ 'h': 180.0,
210
+ 'b': 180.0,
211
+ 't': 16.0,
212
+ 'r1': 18.0,
213
+ 'r2': 9.0,
214
+ },
215
+ 'L180x180x17': {
216
+ 'h': 180.0,
217
+ 'b': 180.0,
218
+ 't': 17.0,
219
+ 'r1': 18.0,
220
+ 'r2': 9.0,
221
+ },
222
+ 'L180x180x18': {
223
+ 'h': 180.0,
224
+ 'b': 180.0,
225
+ 't': 18.0,
226
+ 'r1': 18.0,
227
+ 'r2': 9.0,
228
+ },
229
+ 'L180x180x19': {
230
+ 'h': 180.0,
231
+ 'b': 180.0,
232
+ 't': 19.0,
233
+ 'r1': 18.0,
234
+ 'r2': 9.0,
235
+ },
236
+ 'L180x180x20': {
237
+ 'h': 180.0,
238
+ 'b': 180.0,
239
+ 't': 20.0,
240
+ 'r1': 18.0,
241
+ 'r2': 9.0,
242
+ },
243
+ 'L200x200x15': {
244
+ 'h': 200.0,
245
+ 'b': 200.0,
246
+ 't': 15.0,
247
+ 'r1': 18.0,
248
+ 'r2': 9.0,
249
+ },
250
+ 'L200x200x16': {
251
+ 'h': 200.0,
252
+ 'b': 200.0,
253
+ 't': 16.0,
254
+ 'r1': 18.0,
255
+ 'r2': 9.0,
256
+ },
257
+ 'L200x200x17': {
258
+ 'h': 200.0,
259
+ 'b': 200.0,
260
+ 't': 17.0,
261
+ 'r1': 18.0,
262
+ 'r2': 9.0,
263
+ },
264
+ 'L200x200x18': {
265
+ 'h': 200.0,
266
+ 'b': 200.0,
267
+ 't': 18.0,
268
+ 'r1': 18.0,
269
+ 'r2': 9.0,
270
+ },
271
+ 'L200x200x19': {
272
+ 'h': 200.0,
273
+ 'b': 200.0,
274
+ 't': 19.0,
275
+ 'r1': 18.0,
276
+ 'r2': 9.0,
277
+ },
278
+ 'L200x200x20': {
279
+ 'h': 200.0,
280
+ 'b': 200.0,
281
+ 't': 20.0,
282
+ 'r1': 18.0,
283
+ 'r2': 9.0,
284
+ },
285
+ 'L200x200x21': {
286
+ 'h': 200.0,
287
+ 'b': 200.0,
288
+ 't': 21.0,
289
+ 'r1': 18.0,
290
+ 'r2': 9.0,
291
+ },
292
+ 'L200x200x22': {
293
+ 'h': 200.0,
294
+ 'b': 200.0,
295
+ 't': 22.0,
296
+ 'r1': 18.0,
297
+ 'r2': 9.0,
298
+ },
299
+ 'L200x200x23': {
300
+ 'h': 200.0,
301
+ 'b': 200.0,
302
+ 't': 23.0,
303
+ 'r1': 18.0,
304
+ 'r2': 9.0,
305
+ },
306
+ 'L200x200x24': {
307
+ 'h': 200.0,
308
+ 'b': 200.0,
309
+ 't': 24.0,
310
+ 'r1': 18.0,
311
+ 'r2': 9.0,
312
+ },
313
+ 'L200x200x25': {
314
+ 'h': 200.0,
315
+ 'b': 200.0,
316
+ 't': 25.0,
317
+ 'r1': 18.0,
318
+ 'r2': 9.0,
319
+ },
320
+ 'L200x200x26': {
321
+ 'h': 200.0,
322
+ 'b': 200.0,
323
+ 't': 26.0,
324
+ 'r1': 18.0,
325
+ 'r2': 9.0,
326
+ },
327
+ 'L250x250x20': {
328
+ 'h': 250.0,
329
+ 'b': 250.0,
330
+ 't': 20.0,
331
+ 'r1': 18.0,
332
+ 'r2': 9.0,
333
+ },
334
+ 'L250x250x21': {
335
+ 'h': 250.0,
336
+ 'b': 250.0,
337
+ 't': 21.0,
338
+ 'r1': 18.0,
339
+ 'r2': 9.0,
340
+ },
341
+ 'L250x250x22': {
342
+ 'h': 250.0,
343
+ 'b': 250.0,
344
+ 't': 22.0,
345
+ 'r1': 18.0,
346
+ 'r2': 9.0,
347
+ },
348
+ 'L250x250x23': {
349
+ 'h': 250.0,
350
+ 'b': 250.0,
351
+ 't': 23.0,
352
+ 'r1': 18.0,
353
+ 'r2': 9.0,
354
+ },
355
+ 'L250x250x24': {
356
+ 'h': 250.0,
357
+ 'b': 250.0,
358
+ 't': 24.0,
359
+ 'r1': 18.0,
360
+ 'r2': 9.0,
361
+ },
362
+ 'L250x250x25': {
363
+ 'h': 250.0,
364
+ 'b': 250.0,
365
+ 't': 25.0,
366
+ 'r1': 18.0,
367
+ 'r2': 9.0,
368
+ },
369
+ 'L250x250x26': {
370
+ 'h': 250.0,
371
+ 'b': 250.0,
372
+ 't': 26.0,
373
+ 'r1': 18.0,
374
+ 'r2': 9.0,
375
+ },
376
+ 'L250x250x27': {
377
+ 'h': 250.0,
378
+ 'b': 250.0,
379
+ 't': 27.0,
380
+ 'r1': 18.0,
381
+ 'r2': 9.0,
382
+ },
383
+ 'L250x250x28': {
384
+ 'h': 250.0,
385
+ 'b': 250.0,
386
+ 't': 28.0,
387
+ 'r1': 18.0,
388
+ 'r2': 9.0,
389
+ },
390
+ 'L250x250x35': {
391
+ 'h': 250.0,
392
+ 'b': 250.0,
393
+ 't': 35.0,
394
+ 'r1': 18.0,
395
+ 'r2': 9.0,
396
+ },
397
+ 'L203x203x19': {
398
+ 'h': 203.0,
399
+ 'b': 203.0,
400
+ 't': 19.0,
401
+ 'r1': 8.0,
402
+ 'r2': 4.0,
403
+ },
404
+ 'L203x203x22.2': {
405
+ 'h': 203.0,
406
+ 'b': 203.0,
407
+ 't': 22.2,
408
+ 'r1': 8.0,
409
+ 'r2': 4.0,
410
+ },
411
+ 'L203x203x25.4': {
412
+ 'h': 203.0,
413
+ 'b': 203.0,
414
+ 't': 25.4,
415
+ 'r1': 8.0,
416
+ 'r2': 4.0,
417
+ },
418
+ 'L203x203x28.6': {
419
+ 'h': 203.0,
420
+ 'b': 203.0,
421
+ 't': 28.6,
422
+ 'r1': 8.0,
423
+ 'r2': 4.0,
424
+ },
425
+ }
426
+
427
+ @classmethod
428
+ def get_polygon(cls, name: str) -> Polygon:
429
+ """Returns a shapely polygon representing an L section."""
430
+ parameters = cls.parameters.get(name)
431
+ if parameters is None:
432
+ raise ValueError(
433
+ f"Profile '{name}' not found in L sections. "
434
+ "Select a valid profile (available ones: "
435
+ f"{cls.profiles()})"
436
+ )
437
+ parameters['t1'] = parameters['t']
438
+ parameters['t2'] = parameters['t']
439
+ return _create_L_section(
440
+ **{
441
+ key: parameters[key]
442
+ for key in parameters
443
+ if key in ['h', 'b', 't1', 't2', 'r1', 'r2']
444
+ }
445
+ )
446
+
447
+ @classmethod
448
+ def profiles(cls) -> list:
449
+ """Returns a list containing all available profiles."""
450
+ return list(cls.parameters.keys())
451
+
452
+ def __init__(self, name: str) -> None:
453
+ """Creates a new L object."""
454
+ parameters = self.parameters.get(name)
455
+ if parameters is None:
456
+ raise ValueError(
457
+ f"Profile '{name}' not found in L sections. "
458
+ "Select a valid profile (available ones: "
459
+ f"{self.profiles()})"
460
+ )
461
+ super().__init__()
462
+ self._h = parameters.get('h')
463
+ self._b = parameters.get('b')
464
+ self._t = parameters.get('t')
465
+ self._r1 = parameters.get('r1')
466
+ self._r2 = parameters.get('r2')
467
+ self._polygon = _create_L_section(
468
+ h=self._h,
469
+ b=self._b,
470
+ t1=self._t,
471
+ t2=self._t,
472
+ r1=self._r1,
473
+ r2=self._r2,
474
+ )
475
+
476
+ @property
477
+ def polygon(self) -> Polygon:
478
+ """Returns shapely Polygon of section.
479
+
480
+ Returns:
481
+ Polygon: The represention of the L section.
482
+ """
483
+ return self._polygon
484
+
485
+ @property
486
+ def h(self) -> float:
487
+ """Returns height of L section.
488
+
489
+ Returns:
490
+ float: Height h of L section.
491
+ """
492
+ return self._h
493
+
494
+ @property
495
+ def b(self) -> float:
496
+ """Returns width of L section.
497
+
498
+ Returns:
499
+ float: Width b of L section.
500
+ """
501
+ return self._b
502
+
503
+ @property
504
+ def t(self) -> float:
505
+ """Returns thickness of L section.
506
+
507
+ Returns:
508
+ float: Thickness t of L section.
509
+ """
510
+ return self._t
511
+
512
+ @property
513
+ def r1(self) -> float:
514
+ """Returns fillet radius of L section.
515
+
516
+ Returns:
517
+ float: Fillet radius r1 of L section.
518
+ """
519
+ return self._r1
520
+
521
+ @property
522
+ def r2(self) -> float:
523
+ """Returns fillet radius of L section.
524
+
525
+ Returns:
526
+ float: Fillet radius r2 of L section.
527
+ """
528
+ return self._r2