Compare commits

...

184 Commits

Author SHA1 Message Date
Anton 2380d2d0f5 Minor GUI changes 2021-05-10 08:36:59 +02:00
Mans 5ee89a26a0 Integer to Long 2021-05-07 15:22:30 +02:00
Anton 7f2f3592fe Primarily done! 2021-05-06 09:07:17 +02:00
Anton e8f4d65a8d Almost done! 2021-05-05 15:31:52 +02:00
Anton 7bae694fd3 Minor fixes to GUI Buttons 2021-05-05 13:19:40 +02:00
Anton d0ffbe81cb Small changes to improve user experience 2021-05-05 11:55:16 +02:00
Mans 2d05bff5dd Updated Quote 2021-05-04 15:31:45 +02:00
Anton 8c5e78dafa Further GUI updates 2021-05-04 13:03:04 +02:00
Mans 0215c7cb37 GUI design 2021-05-03 14:49:49 +02:00
Anton 253127066f Changes in GUI 2021-05-03 11:55:46 +02:00
Anton 76fe9f1f67 GUI Settings added 2021-05-03 09:59:34 +02:00
Anton 5e386c6bf0 Clean up and small fixes 2021-04-29 14:16:03 +02:00
Mans 9c07c563a8 Fixes to support beams (recesses etc) 2021-04-29 12:00:54 +02:00
Anton 8f1aa2a5c5 Continue work for support beams and other small fixes 2021-04-28 16:01:56 +02:00
Mans 6ebfdf707b Support beams added i Gui 2021-04-28 12:52:33 +02:00
Anton bd3bbf2609 Worked on a new way to optimize grating sizes for fill area 2021-04-27 15:58:06 +02:00
Mans e880c88064 Small fixes 2021-04-27 12:10:49 +02:00
Anton fd4b903862 Fixes for Individual (including simplified model, instructions, etc.) 2021-04-26 15:35:36 +02:00
Anton 9c3a40d43b Instructions done 2021-04-26 14:01:08 +02:00
Mans 33249bc55c Instructions for assembly 2021-04-26 11:27:14 +02:00
Anton ef31a0ea5d Fixed frames for multiple gratings. Added export options in GUI 2021-04-23 11:08:45 +02:00
Mans 12d0749dba Balloons, ponits instead of planes for measurements 2021-04-22 15:32:05 +02:00
Mans fef3a96bc4 HLCt fixes and multiple drawing 2021-04-22 11:45:58 +02:00
Anton 84fc7c5452 Continue work on drawing for multiple 2021-04-20 15:41:21 +02:00
Anton 9840dc3375 All recesses fixed to work accordingly to all different forms of SW instancing 2021-04-20 13:43:42 +02:00
Mans f2502e8a59 Fixat recess HLCt och kod 2021-04-20 12:06:00 +02:00
Anton b4ddd9fb16 Start of drawings for multiple gratings 2021-04-19 15:35:41 +02:00
Mans 1e3300e232 HLCt simplified grating 2021-04-19 11:06:10 +02:00
Anton a7e7b47633 Still some errors for angle recess (obsolete and points being removed) 2021-04-16 15:37:55 +02:00
Mans 66a8c1d3c1 Angle working for multiple grating SW 2021-04-15 14:32:31 +02:00
Mans 27c344123e Single grating angle working for multiple 2021-04-15 10:08:08 +02:00
Anton c29b4a223a step2 2021-04-14 15:43:03 +02:00
Mans b22c45ca34 Determine grating points for fill function (step 1) 2021-04-14 13:47:21 +02:00
Anton 2b69ed463a Start of creating fill function drawings 2021-04-14 11:52:22 +02:00
Mans 0055802527 Minor fixes 2021-04-13 15:45:00 +02:00
Mans 0ccfdf4170 Serrated HLCt developed and implemented 2021-04-12 16:15:21 +02:00
Anton 23c26dedd9 Interference of bodies now fully work for individual and multiple gratings 2021-04-12 13:21:54 +02:00
Anton 9b1c9464a0 Interference of bodies - continued 2021-04-09 16:30:57 +02:00
Mans 0d0bcab73c Only indent interfering bodies fill function 2021-04-09 15:44:13 +02:00
Mans 4ace2261ca Only indent relevant bodies 2021-04-09 14:21:14 +02:00
Anton f1cf8d5d1a Small fixes to handle load data 2021-04-09 11:32:43 +02:00
Mans 20e214e376 Merge branch 'gratings' of http://server.xperdi.com/Tarkian/X2021 into gratings 2021-04-09 10:54:17 +02:00
Mans c331888f49 New load tables 2021-04-09 10:54:01 +02:00
Anton 8b46598af1 Nothing important 2021-04-09 10:53:46 +02:00
Mans a929d2ce1c Update database 2021-04-09 10:24:23 +02:00
Mans ee20b6ebb7 Frames > 2m 2021-04-08 15:18:55 +02:00
Anton df4726889a Improved the algorithm to find cut the frames in the best manor 2021-04-08 13:18:44 +02:00
Mans 16f2c82142 Drawings and so on 2021-04-07 15:21:17 +02:00
Anton 53a3865523 File structure done and appdata generated for user specific data 2021-04-07 14:27:10 +02:00
Anton c01929ca6a File structure done and appdata created 2021-04-06 15:47:17 +02:00
Mans 3e8fe756d4 Creation of files structure 2021-04-06 13:31:22 +02:00
Anton 018a381f5d Added balloons to frame drawings 2021-04-06 11:20:39 +02:00
Anton ad7dbf49ff More work on drawings for frames 2021-03-26 15:11:32 +01:00
Anton 1fc3cd7cab Drawings for frames (first step with code for measurements) 2021-03-25 15:57:11 +01:00
Mans bd13643b2e small fixes 2021-03-25 14:58:18 +01:00
Mans 61de434ebc End pieces for frames 2021-03-25 13:41:23 +01:00
Anton d438a6b994 Interference code 2021-03-22 16:03:11 +01:00
Anton 1584a2e550 Frame works for all recesses and how it is cut is optimized 2021-03-22 15:55:40 +01:00
Mans 3d3801c974 Frame fix 2021-03-22 13:43:14 +01:00
Anton 5391cd3210 Fixed so frames instantiate correctly for single grating (not for side square). Also some minor fixes for delete_obsolete. 2021-03-19 13:22:24 +01:00
Mans 8529d985ed Frame inst 2021-03-18 16:02:24 +01:00
Anton ff4c93622e FIxed measures in GUI for middle square and added icons 2021-03-17 13:11:46 +01:00
Mans 82698c46b1 New functions pdf 2021-03-16 15:45:30 +01:00
Anton e0a5d2128f More features added to export pdf 2021-03-16 14:35:03 +01:00
Mans 8144ac0336 Add pdf information from gui 2021-03-16 11:30:41 +01:00
Mans 49e4ecf33f Pdf output of GUI 2021-03-15 14:41:01 +01:00
Anton 0106aace4f Small fixes 2021-03-10 15:12:54 +01:00
Mans 76e94c28a1 Small fixes 2021-03-10 14:58:52 +01:00
Anton e837bdf5db Merge branch 'gratings' of http://server.xperdi.com/Tarkian/X2021 into gratings_L 2021-03-10 13:01:40 +01:00
Anton 0ae09c2ec4 Frame straight SW 2021-03-10 13:01:23 +01:00
Mans 517788fe3d Added Type A HLCt 2021-03-10 12:11:28 +01:00
Anton 21e5ab9520 Small fixes in GUI and SW export 2021-03-10 11:44:55 +01:00
Anton cdf56dbf19 Measuments for middle square added to SW. Error when adding other measuremtns togheter 2021-03-09 12:22:46 +01:00
Mans 1b2384a636 Fixing mesuremnets for middle rectangle 2021-03-09 10:45:56 +01:00
Anton 93df8fc101 Middle function fully implemented 2021-03-08 15:37:32 +01:00
Mans 36189ef58a Middle_square HLCt added, pressure welded fixed 2021-03-08 13:17:51 +01:00
Anton 9b47f4e4d0 Remove obsolete squares (something wrong with areas calcualtion) 2021-03-05 15:47:08 +01:00
Mans 583bd274c7 Remove obsolete gratings 2021-03-05 14:54:53 +01:00
Anton e2fceeac69 Angle recess works for fill grid 2021-03-04 14:50:40 +01:00
Anton 6a1a75fab2 Plane Split 2021-03-03 15:51:47 +01:00
Mans 7bc80d2f23 Combine added 2021-03-03 13:13:08 +01:00
Anton 436c157dc6 Indents for fill grid (started) 2021-03-02 15:58:21 +01:00
Anton d81383eb25 All recesses instatniated in Fill grid SW 2021-03-02 14:34:48 +01:00
Mans 5feacbdc42 Optimize length of fill function 2021-03-02 12:31:54 +01:00
Mans a71efb2a49 Fill Grid with FG 2021-02-25 15:58:42 +01:00
Anton 9fd065fc8e Added simple algorithm to calculate the grid of gratings 2021-02-24 15:46:53 +01:00
Anton f3a3f0facc Started on fill area with gratings 2021-02-24 13:46:21 +01:00
Mans f70aa5d716 Multiple use single GUI 2021-02-24 09:46:45 +01:00
Mans 461c285e77 More gui 2021-02-23 15:56:38 +01:00
Mans 08897a7cb0 New Gui design 2021-02-23 14:52:51 +01:00
Mans 10903dcf92 GUI Redesign 2021-02-22 15:10:40 +01:00
Mans da9b7a7c5c Added directonsymbol swdrawing 2021-02-22 14:08:52 +01:00
Anton cd513b6561 Part properties added in SW 2021-02-22 11:28:15 +01:00
Anton 9cd8e995ad Drawings fixed and measurments rearanged 2021-02-22 10:32:29 +01:00
Anton 35633bceb7 All recesses indents done in SW 2021-02-19 16:37:16 +01:00
Mans 52bf5ee4ed Added side square part 2021-02-19 16:05:14 +01:00
Anton ede62dc2cc Angle recess indent implemented 2021-02-19 14:39:18 +01:00
Mans c6e412384e Added_recess angle 2021-02-19 14:03:14 +01:00
Mans a66edd0ceb Start Indent 2021-02-18 16:33:03 +01:00
Mans 34c6205a75 Update pressure_welded 90deg 2021-02-18 14:56:58 +01:00
Anton 9b3cd22265 Major code cleanup and reconstruction 2021-02-18 14:54:12 +01:00
Mans 9ea5db86a2 Instantiate corner recess hlct 2021-02-17 13:36:13 +01:00
Anton ee7e3fba86 Recess code started 2021-02-17 11:07:34 +01:00
Mans c589bdc981 Start to HLCt recesses 2021-02-17 10:06:12 +01:00
Anton d0aeef3690 Side square now work for all sides as intended 2021-02-16 15:56:28 +01:00
Mans fa6649ec20 sidesquare side 3 2021-02-16 13:33:55 +01:00
Anton 7fb24f6b73 Two sides of square recesses done 2021-02-15 15:32:57 +01:00
Mans 05a9232477 Databas 2021-02-15 12:40:13 +01:00
Mans 3c7abebc79 Using CSV 2021-02-15 12:37:47 +01:00
Mans 4ade30f8ef sidesquare measurement 2021-02-12 16:03:45 +01:00
Anton 3923247b8e Side square recesses work as intended in gui 2021-02-12 14:13:45 +01:00
Mans 6295ca5313 sideButtonSquare for all sides 2021-02-12 10:24:26 +01:00
Mans e8918a1310 Sidebuttonsquare 2021-02-12 09:47:57 +01:00
Anton 2f2435e66a Added buttons for side square recesses 2021-02-11 15:09:25 +01:00
Mans 49e294e498 Weland drawing template, adjust scale auto 2021-02-11 13:46:48 +01:00
Mans 0d0f436aa2 Added guideline for angle measurement and measurement 2021-02-10 15:40:24 +01:00
Anton eda0bd2ebc Measurements fixes 2021-02-10 14:57:19 +01:00
Anton d729b4ca7d Added measure for recesses in GUI 2021-02-10 14:30:53 +01:00
Mans 5ff9ac938f Added measurements for recesses and double recesses 2021-02-10 09:52:01 +01:00
Mans 105a342d95 Added generic drawing dimensions 2021-02-09 16:35:59 +01:00
Anton cd1fa017c5 Added whole mesh widths and how they are handled in the GUI 2021-02-09 14:29:02 +01:00
Anton 0233d1b758 Fixed previously errors and correctly dispose excel app after use 2021-02-09 12:47:24 +01:00
Mans 83c3984c65 added conditions for thickness, bug with some choices where options are empty 2021-02-08 14:11:07 +01:00
Anton 4283e09c79 Small fixes 2021-02-08 13:41:59 +01:00
Anton 318f83993f New file structure done 2021-02-08 11:46:02 +01:00
Mans 5b1ef57515 Division of functions into new classes 2021-02-08 10:45:25 +01:00
Mans f9809a9085 Small fixes 2021-02-05 16:06:05 +01:00
Mans de904e736f Added lacquer checkbox 2021-02-05 16:05:07 +01:00
Anton 0a948b3354 Database for meshes and loadbar measures done 2021-02-05 15:20:44 +01:00
Anton bc1bbf48f2 Database to Datatable 2021-02-05 13:48:37 +01:00
Mans a9567f6b39 Serrated checkbox conditions 2021-02-05 10:41:55 +01:00
Mans 27a464dd6a Database connect 2021-02-05 09:40:54 +01:00
Anton 73d92f9354 Database changes and access through code 2021-02-04 16:20:01 +01:00
Anton c8aef97c61 Databas added (Excel) 2021-02-04 14:57:16 +01:00
Mans 17248c0484 Conditions for checkbox added 2021-02-04 14:55:58 +01:00
Anton e3178a2266 grating type chooser - logic 2021-02-04 14:22:04 +01:00
Mans 648f8b4ab9 Top view drawing and filepath fix 2021-02-03 09:57:02 +01:00
Anton e969fef6f0 Added grating direction symbol 2021-02-03 09:31:38 +01:00
Anton cc6c3c9ac2 Added drawing dimensions to SW 2021-02-02 16:33:01 +01:00
Mans d68c64aaaa Dimension drawing test 2021-02-02 14:53:36 +01:00
Anton 5fc9f820a0 Fixed point buttons logic 2021-02-02 14:12:58 +01:00
Mans 6826acb0d4 Added square corners 2021-02-02 12:33:20 +01:00
Mans 37a2511b65 Functions for add angle 2021-02-01 15:03:59 +01:00
Anton 953e569533 Controls the flow of the GUI 2021-02-01 14:09:13 +01:00
Anton 95872ab05a Minor changes 2 2021-02-01 12:59:03 +01:00
Mans e24f50dc27 Comboboxes gui 2021-02-01 10:14:01 +01:00
Anton c5a8b20002 Minor fixes 2021-02-01 09:40:38 +01:00
Mans 4b25f1440a Parameters to SW_test 2021-02-01 09:35:26 +01:00
Anton 42afe14068 Small changes 2021-01-29 15:50:19 +01:00
Anton 8a7f9468c8 Instantiate part through XCC 2021-01-29 13:56:20 +01:00
Anton ac9c04439a Removed unnecessary files 2021-01-29 11:15:10 +01:00
Anton 98cb031039 All points exported to SW correctly 2021-01-28 15:21:12 +01:00
Anton 84e149dff1 Add multiple angles! 2021-01-28 14:49:39 +01:00
Anton b656e36461 Angle works for all original points and the point buttons are handled correctly 2021-01-28 14:21:37 +01:00
Anton a97a0d2cec Added example for point button and fixed a function for creating an angled corner 2021-01-28 12:50:45 +01:00
Anton 15dcfcab2d Handle so the GUI can draw an arbitary number of points 2021-01-27 17:36:33 +01:00
Anton 0e2ede0625 Drawing is saved 2021-01-27 14:11:49 +01:00
Anton f27db3229c Added drawings of the part 2021-01-27 14:04:58 +01:00
Anton cb144d9128 Added extrude feature and save part document in SW 2021-01-27 13:39:09 +01:00
Anton 1ee291a02c Small fixes 2021-01-27 11:22:04 +01:00
Anton ce896750f1 Fixed so we calculate all points correctly 2021-01-26 15:38:01 +01:00
Anton 997f0523d6 New namnes etc. 2021-01-26 15:08:01 +01:00
Anton 032bba44b8 Original rect points calculated correctly 2021-01-25 16:34:15 +01:00
Anton 93470dc486 Draw Lines in Sketch 2021-01-25 16:13:03 +01:00
Anton 352556ecc9 Table, fixa hur punkterna beräknas 2021-01-25 15:49:07 +01:00
Anton e139f77cf3 Add SW sketch and point 2021-01-25 15:03:41 +01:00
Mans 5c201a5b73 Solidwork start new part 2021-01-25 14:32:27 +01:00
Anton 2405176d74 Small grapahic changes 2021-01-25 13:21:24 +01:00
Anton 3c308ded70 Change rectangle measures 2021-01-25 13:01:01 +01:00
Mans dd9f8d6617 If sats 2021-01-25 12:45:20 +01:00
Anton e2a4da65ed Rectangel drawn 2021-01-25 11:29:51 +01:00
Anton 5921ba4b84 Draw lines on panel 2021-01-25 11:15:21 +01:00
Mans ad8dc6f6dc Drawbox 2021-01-25 10:18:12 +01:00
Anton 41d4eb4726 temp files added 2021-01-25 09:17:42 +01:00
Mans bbf9d93cb3 test2 2021-01-25 09:07:28 +01:00
Mans 34acbd7b02 tsttt 2021-01-25 09:06:33 +01:00
Anton 2bfcca4993 First gratings push 2021-01-25 08:48:36 +01:00
Anton 43161e5c99 Anton test 2 2021-01-19 13:20:31 +01:00
Mans 045f301932 Merge remote-tracking branch 'origin/for_thesis' into testing 2021-01-19 11:40:27 +01:00
mehdi 5be355db6f branch test 2021-01-19 11:38:33 +01:00
Mans e0ae3bfb64 New branch 2021-01-19 11:37:12 +01:00
mehdi e947f5406a mehdi text 2021-01-19 11:28:03 +01:00
Mans cf390f310b Anton test 2021-01-19 11:27:09 +01:00
mehdi f1cbd4f277 test 2021-01-19 11:24:10 +01:00
112 changed files with 13183 additions and 4665 deletions

1
.gitignore vendored
View File

@ -4,7 +4,6 @@
*.pdb
*.user
*.aps
*.png
*.pch
*.config
*.htm

BIN
Database/Databas.xlsx Normal file

Binary file not shown.

76
Database/Load.csv Normal file
View File

@ -0,0 +1,76 @@
NAME [str],LB-HEIGHT [int],LB-THICKNESS [int],300 [dbl],400 [dbl],500 [dbl],600 [dbl],700 [dbl],800 [dbl],900 [dbl],1000 [dbl],1100 [dbl],1200 [dbl],1300 [dbl],1400 [dbl],1500 [dbl],1600 [dbl],1800 [dbl],2000 [dbl],2200 [dbl],2400 [dbl]
A22x22,20,2,93,52,33,23,14,9.5,6.7,4.9,3.7,2.8,2.2,1.8,1.4,,,,,
A22x22,25,2,145,81,52,36,27,19,13,9.5,7.2,5.5,4.3,3.5,2.8,,,,,
A22x22,30,2,209,117,75,52,38,29,23,16,12,9.5,7.5,6,4.9,,,,,
A22x22,40,2,371,209,134,93,68,52,41,33,28,23,18,14,12,,,,,
A33x11,20,2,62,35,22,15,9.5,6.4,4.5,3.3,2.4,1.9,1.5,1.2,1,,,,,
A33x11,25,2,97,54,35,24,18,12,8.7,6.4,4.8,3.7,2.9,2.3,1.9,,,,,
A33x11,30,2,139,78,50,35,26,20,15,11,8.3,6.4,5,4,3.3,,,,,
A33x11,40,2,247,139,89,62,45,35,27,22,18,15,12,9.5,7.7,,,,,
B,20,3,255,143,92,62,39,26,18,13,10,7.8,6.1,4.9,4,3.3,2.3,1.7,1.3,1
B,25,3,398,224,143,100,73,51,36,26,20,15,12,9.6,7.8,6.4,4.5,3.3,2.5,1.9
B,30,3,574,323,207,143,105,81,62,45,34,26,21,16,13,11,7.8,5.7,4.3,3.3
B,35,3,781,439,281,195,143,110,87,70,54,42,33,26,21,18,12,9,6.8,5.2
B,40,3,1020,574,367,255,187,143,113,92,76,62,49,39,32,26,18,13,10,7.8
H,20,2,62,35,22,15,9.5,6.4,4.5,3.3,2.4,1.9,1.5,1.2,1.0,0.8,0.6,0.4,0.3,0.2
H,20,3,93,52,39,23,14,9.5,6.7,4.9,3.7,2.8,2.2,1.8,1.4,1.2,1.0,0.6,0.5,0.4
H,25,2,97,54,35,24,18,12,9,6.4,4.8,3.7,2.9,2.3,1.9,1.6,1.1,0.8,0.6,0.5
H,25,3,145,81,52,36,26,19,13,9.5,7.2,5.5,4.3,3.5,2.8,2.3,1.6,1.2,0.9,0.7
H,30,2,139,78,50,35,26,20,15,11,8.3,6.4,5.0,4.0,3.3,2.7,1.9,1.4,1.0,0.8
H,30,3,209,117,75,52,38,29,23,16,12,9.5,7.5,6.0,4.9,4.0,2.8,2.1,1.5,1.2
H,35,2,189,106,68,47,35,27,21,17,13,10,7.9,6.4,5.7,4.3,3.0,2.2,1.6,1.3
H,35,3,284,160,102,71,52,40,32,26,20,15,12,9.5,7.8,6.4,4.5,3.3,2.5,1.9
H,40,2,247,139,89,62,45,35,27,22,18,15,12,9.5,7.7,6.4,4.5,3.3,2.4,1.9
H,40,3,371,209,134,93,68,52,41,23,28,23,18,14,12,9.5,6.7,4.9,3.7,2.8
H,45,3,469,264,169,117,86,66,52,42,35,29,25,20,16,14,9.5,7.0,5.2,4.0
H,50,3,580,326,209,145,106,81,64,52,43,36,31,27,23,19,13,9.5,7.2,5.5
H,50,4,1168,657,420,292,214,164,130,102,76,59,46,37,30,25,17,13,9.6,7.4
H,50,5,1459,821,525,396,268,205,162,127,96,74,58,46,38,31,22,16,12,9.2
H,60,4,1681,945,605,420,309,236,187,151,125,102,80,64,52,43,30,22,16,13
H,60,5,2102,1182,757,525,386,295,233,189,156,127,100,80,65,54,38,27,21,16
H,70,4,2288,1287,824,572,420,322,254,206,170,143,122,102,83,68,48,35,26,20
H,70,5,2860,1609,1030,715,525,402,318,257,213,179,152,127,103,85,60,44,33,25
H,80,4,2989,1681,1076,747,549,420,332,269,222,187,159,137,120,102,71,52,39,30
H,80,5,3736,2102,1345,934,686,525,415,336,278,233,199,172,149,127,89,65,49,38
J,20,3,75,42,27,18,11,7.7,5.4,3.9,3,2.3,,,,,,,,
J,25,3,117,66,42,29,21,15,10,7.7,5.8,4.4,3.5,2.8,2.3,,,,,
J,25,5,294,165,102,59,37,25,18,13,9.6,7.4,5.8,4.7,3.8,3.1,2.2,1.6,1.2,0.9
J,30,3,168,94,60,42,31,24,18,13,10,7.7,6,4.8,3.9,3.2,2.3,1.7,1.2,1
J,30,5,423,238,152,102,64,43,30,22,17,13,10,8.1,6.6,5.4,3.8,2.8,2.1,1.6
J,35,3,229,129,82,57,42,32,25,21,16,12,9.6,7.7,6.2,5.1,3.6,2.6,2,1.5
J,35,5,576,324,207,144,102,69,48,35,26,20,16,13,10,8.6,6,4.4,3.3,2.5
J,40,3,299,168,108,75,55,72,33,27,22,18,14,11,9.3,7.7,5.4,3.9,3,2.3
J,40,5,752,423,271,188,138,102,72,52,39,30,24,19,15,13,9,6.6,4.9,3.8
J,45,3,378,213,136,94,69,53,42,34,28,24,20,16,13,11,7.7,5.6,4.2,3.2
J,50,3,467,262,168,117,86,66,52,42,35,29,25,21,18,15,10,7.7,5.7,4.4
J,50,5,1175,661,423,294,216,165,130,102,77,59,47,37,30,25,18,13,9.6,7.4
N,20,2,120,97,43,29,18,12,8.7,6.3,4.8,3.7,2.9,2.3,1.9,1.5,1.1,0.8,0.6,0.5
N,20,3,180,101,65,44,28,18,13,9.5,7.1,5.5,4.3,3.5,2.8,2.3,1.6,1.2,0.9,0.7
N,25,2,187,105,67,47,34,24,17,12,9.3,7.1,5.6,4.5,3.7,3.0,2.1,1.5,1.2,0.9
N,25,3,281,158,101,70,52,36,25,18,14,11,8.4,6.8,5.5,4.5,3.2,2.3,1.7,1.3
N,30,2,270,152,97,67,50,38,29,21,16,12,9.7,7.8,6.3,5.2,3.7,2.7,2.0,1.5
N,30,3,405,228,146,101,74,57,44,32,24,18,15,12,9.5,7.8,5.5,4.0,3.0,2.3
N,35,3,586,329,211,146,108,82,65,53,41,31,25,20,16,13,9.3,6.8,5.1,3.9
N,40,3,765,430,275,191,140,108,85,69,57,47,37,29,24,20,14,10,7.6,5.8
N,45,3,968,545,349,242,178,136,108,87,72,60,52,42,34,28,20,14,11,8.3
N,50,3,1196,672,430,299,220,168,133,108,89,75,64,55,47,38,27,20,15,11
H-T,25,2,71,40,26,18,12,7.9,5.6,4,3,2.3,,,,,,,,
H-T,25,3,107,60,39,27,18,12,8.3,6.1,4.6,3.5,2.8,2.2,,,,,,
H-T,30,3,163,92,59,41,30,22,16,11,8.5,6.6,5.2,4.1,3.4,2.8,1.9,,,
H-T,35,3,230,129,83,57,42,32,26,19,14,11,8.7,7,5.7,4.7,3.3,2.4,1.8,
H-T,40,3,309,174,111,77,57,43,34,28,22,17,13,11,8.8,7.3,5.1,3.7,2.8,2.1
N-T,25,3,221,124,80,55,36,24,17,12,9.4,7.2,5.7,4.6,3.7,3.1,2.1,1.6,1.2,0.9
N-T,30,3,336,189,121,84,62,46,32,23,18,14,11,8.5,6.9,5.7,4,2.9,2.2,1.7
N-T,35,3,474,267,171,119,87,67,53,39,30,23,18,14,12,9.6,6.8,4.9,3.7,2.8
N-T,40,3,637,358,229,159,117,90,71,57,46,35,28,22,18,15,10,7.7,5.8,4.4
,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,
,,,,,,,,,,,,,,,,,,,,
1 NAME [str] LB-HEIGHT [int] LB-THICKNESS [int] 300 [dbl] 400 [dbl] 500 [dbl] 600 [dbl] 700 [dbl] 800 [dbl] 900 [dbl] 1000 [dbl] 1100 [dbl] 1200 [dbl] 1300 [dbl] 1400 [dbl] 1500 [dbl] 1600 [dbl] 1800 [dbl] 2000 [dbl] 2200 [dbl] 2400 [dbl]
2 A22x22 20 2 93 52 33 23 14 9.5 6.7 4.9 3.7 2.8 2.2 1.8 1.4
3 A22x22 25 2 145 81 52 36 27 19 13 9.5 7.2 5.5 4.3 3.5 2.8
4 A22x22 30 2 209 117 75 52 38 29 23 16 12 9.5 7.5 6 4.9
5 A22x22 40 2 371 209 134 93 68 52 41 33 28 23 18 14 12
6 A33x11 20 2 62 35 22 15 9.5 6.4 4.5 3.3 2.4 1.9 1.5 1.2 1
7 A33x11 25 2 97 54 35 24 18 12 8.7 6.4 4.8 3.7 2.9 2.3 1.9
8 A33x11 30 2 139 78 50 35 26 20 15 11 8.3 6.4 5 4 3.3
9 A33x11 40 2 247 139 89 62 45 35 27 22 18 15 12 9.5 7.7
10 B 20 3 255 143 92 62 39 26 18 13 10 7.8 6.1 4.9 4 3.3 2.3 1.7 1.3 1
11 B 25 3 398 224 143 100 73 51 36 26 20 15 12 9.6 7.8 6.4 4.5 3.3 2.5 1.9
12 B 30 3 574 323 207 143 105 81 62 45 34 26 21 16 13 11 7.8 5.7 4.3 3.3
13 B 35 3 781 439 281 195 143 110 87 70 54 42 33 26 21 18 12 9 6.8 5.2
14 B 40 3 1020 574 367 255 187 143 113 92 76 62 49 39 32 26 18 13 10 7.8
15 H 20 2 62 35 22 15 9.5 6.4 4.5 3.3 2.4 1.9 1.5 1.2 1.0 0.8 0.6 0.4 0.3 0.2
16 H 20 3 93 52 39 23 14 9.5 6.7 4.9 3.7 2.8 2.2 1.8 1.4 1.2 1.0 0.6 0.5 0.4
17 H 25 2 97 54 35 24 18 12 9 6.4 4.8 3.7 2.9 2.3 1.9 1.6 1.1 0.8 0.6 0.5
18 H 25 3 145 81 52 36 26 19 13 9.5 7.2 5.5 4.3 3.5 2.8 2.3 1.6 1.2 0.9 0.7
19 H 30 2 139 78 50 35 26 20 15 11 8.3 6.4 5.0 4.0 3.3 2.7 1.9 1.4 1.0 0.8
20 H 30 3 209 117 75 52 38 29 23 16 12 9.5 7.5 6.0 4.9 4.0 2.8 2.1 1.5 1.2
21 H 35 2 189 106 68 47 35 27 21 17 13 10 7.9 6.4 5.7 4.3 3.0 2.2 1.6 1.3
22 H 35 3 284 160 102 71 52 40 32 26 20 15 12 9.5 7.8 6.4 4.5 3.3 2.5 1.9
23 H 40 2 247 139 89 62 45 35 27 22 18 15 12 9.5 7.7 6.4 4.5 3.3 2.4 1.9
24 H 40 3 371 209 134 93 68 52 41 23 28 23 18 14 12 9.5 6.7 4.9 3.7 2.8
25 H 45 3 469 264 169 117 86 66 52 42 35 29 25 20 16 14 9.5 7.0 5.2 4.0
26 H 50 3 580 326 209 145 106 81 64 52 43 36 31 27 23 19 13 9.5 7.2 5.5
27 H 50 4 1168 657 420 292 214 164 130 102 76 59 46 37 30 25 17 13 9.6 7.4
28 H 50 5 1459 821 525 396 268 205 162 127 96 74 58 46 38 31 22 16 12 9.2
29 H 60 4 1681 945 605 420 309 236 187 151 125 102 80 64 52 43 30 22 16 13
30 H 60 5 2102 1182 757 525 386 295 233 189 156 127 100 80 65 54 38 27 21 16
31 H 70 4 2288 1287 824 572 420 322 254 206 170 143 122 102 83 68 48 35 26 20
32 H 70 5 2860 1609 1030 715 525 402 318 257 213 179 152 127 103 85 60 44 33 25
33 H 80 4 2989 1681 1076 747 549 420 332 269 222 187 159 137 120 102 71 52 39 30
34 H 80 5 3736 2102 1345 934 686 525 415 336 278 233 199 172 149 127 89 65 49 38
35 J 20 3 75 42 27 18 11 7.7 5.4 3.9 3 2.3
36 J 25 3 117 66 42 29 21 15 10 7.7 5.8 4.4 3.5 2.8 2.3
37 J 25 5 294 165 102 59 37 25 18 13 9.6 7.4 5.8 4.7 3.8 3.1 2.2 1.6 1.2 0.9
38 J 30 3 168 94 60 42 31 24 18 13 10 7.7 6 4.8 3.9 3.2 2.3 1.7 1.2 1
39 J 30 5 423 238 152 102 64 43 30 22 17 13 10 8.1 6.6 5.4 3.8 2.8 2.1 1.6
40 J 35 3 229 129 82 57 42 32 25 21 16 12 9.6 7.7 6.2 5.1 3.6 2.6 2 1.5
41 J 35 5 576 324 207 144 102 69 48 35 26 20 16 13 10 8.6 6 4.4 3.3 2.5
42 J 40 3 299 168 108 75 55 72 33 27 22 18 14 11 9.3 7.7 5.4 3.9 3 2.3
43 J 40 5 752 423 271 188 138 102 72 52 39 30 24 19 15 13 9 6.6 4.9 3.8
44 J 45 3 378 213 136 94 69 53 42 34 28 24 20 16 13 11 7.7 5.6 4.2 3.2
45 J 50 3 467 262 168 117 86 66 52 42 35 29 25 21 18 15 10 7.7 5.7 4.4
46 J 50 5 1175 661 423 294 216 165 130 102 77 59 47 37 30 25 18 13 9.6 7.4
47 N 20 2 120 97 43 29 18 12 8.7 6.3 4.8 3.7 2.9 2.3 1.9 1.5 1.1 0.8 0.6 0.5
48 N 20 3 180 101 65 44 28 18 13 9.5 7.1 5.5 4.3 3.5 2.8 2.3 1.6 1.2 0.9 0.7
49 N 25 2 187 105 67 47 34 24 17 12 9.3 7.1 5.6 4.5 3.7 3.0 2.1 1.5 1.2 0.9
50 N 25 3 281 158 101 70 52 36 25 18 14 11 8.4 6.8 5.5 4.5 3.2 2.3 1.7 1.3
51 N 30 2 270 152 97 67 50 38 29 21 16 12 9.7 7.8 6.3 5.2 3.7 2.7 2.0 1.5
52 N 30 3 405 228 146 101 74 57 44 32 24 18 15 12 9.5 7.8 5.5 4.0 3.0 2.3
53 N 35 3 586 329 211 146 108 82 65 53 41 31 25 20 16 13 9.3 6.8 5.1 3.9
54 N 40 3 765 430 275 191 140 108 85 69 57 47 37 29 24 20 14 10 7.6 5.8
55 N 45 3 968 545 349 242 178 136 108 87 72 60 52 42 34 28 20 14 11 8.3
56 N 50 3 1196 672 430 299 220 168 133 108 89 75 64 55 47 38 27 20 15 11
57 H-T 25 2 71 40 26 18 12 7.9 5.6 4 3 2.3
58 H-T 25 3 107 60 39 27 18 12 8.3 6.1 4.6 3.5 2.8 2.2
59 H-T 30 3 163 92 59 41 30 22 16 11 8.5 6.6 5.2 4.1 3.4 2.8 1.9
60 H-T 35 3 230 129 83 57 42 32 26 19 14 11 8.7 7 5.7 4.7 3.3 2.4 1.8
61 H-T 40 3 309 174 111 77 57 43 34 28 22 17 13 11 8.8 7.3 5.1 3.7 2.8 2.1
62 N-T 25 3 221 124 80 55 36 24 17 12 9.4 7.2 5.7 4.6 3.7 3.1 2.1 1.6 1.2 0.9
63 N-T 30 3 336 189 121 84 62 46 32 23 18 14 11 8.5 6.9 5.7 4 2.9 2.2 1.7
64 N-T 35 3 474 267 171 119 87 67 53 39 30 23 18 14 12 9.6 6.8 4.9 3.7 2.8
65 N-T 40 3 637 358 229 159 117 90 71 57 46 35 28 22 18 15 10 7.7 5.8 4.4
66
67
68
69
70
71
72
73
74
75
76

10
Database/Material.csv Normal file
View File

@ -0,0 +1,10 @@
TYPE [str],MATERIAL [str]
Pressure Welded,Hot dip galvanized steel
Pressure Welded,Stainless Steel (Pickled)
Pressure Welded,Stainless Steel (Untreated)
Pressure Welded,Untreated
Type A,Hot dip galvanized steel
Type A,Stainless Steel (Pickled)
Type A,Stainless Steel (Untreated)
Type A,Aluminum
Type A,Untreated
1 TYPE [str] MATERIAL [str]
2 Pressure Welded Hot dip galvanized steel
3 Pressure Welded Stainless Steel (Pickled)
4 Pressure Welded Stainless Steel (Untreated)
5 Pressure Welded Untreated
6 Type A Hot dip galvanized steel
7 Type A Stainless Steel (Pickled)
8 Type A Stainless Steel (Untreated)
9 Type A Aluminum
10 Type A Untreated

128
Database/Meshes.csv Normal file
View File

@ -0,0 +1,128 @@
NAME [str],LB-SPACING [int],CB-SPACING [int],LB-HEIGHT [int],LB-THICKNESS [int],CB-DIAMETER [dbl],CB-HEIGHT [int],CB-THICKNESS [int],TYPE [str],MATERIAL [str],SERRATED [bool],WHOLE MESHES [str]
B9,12,100,20,3,6.5,,,Pressure Welded,Hot dip galvanized steel,0,B 12
B9,12,100,25,3,6.5,,,Pressure Welded,Hot dip galvanized steel,0,B 12
B9,12,100,30,3,6.5,,,Pressure Welded,Hot dip galvanized steel,0,B 12
B9,12,100,35,3,6.5,,,Pressure Welded,Hot dip galvanized steel,0,B 12
B9,12,100,40,3,6.5,,,Pressure Welded,Hot dip galvanized steel,0,B 12
B9,12,100,20,3,6.5,,,Pressure Welded,Untreated,0,B 12
B9,12,100,25,3,6.5,,,Pressure Welded,Untreated,0,B 12
B9,12,100,30,3,6.5,,,Pressure Welded,Untreated,0,B 12
B9,12,100,35,3,6.5,,,Pressure Welded,Untreated,0,B 12
B9,12,100,40,3,6.5,,,Pressure Welded,Untreated,0,B 12
H3,34,37,25,2,5,,,Pressure Welded,Hot dip galvanized steel,0,H 34
H3,34,37,30,2,5,,,Pressure Welded,Hot dip galvanized steel,0,H 34
H3,34,37,25,3,5,,,Pressure Welded,Hot dip galvanized steel,0,H 34
H3,34,37,30,3,5,,,Pressure Welded,Hot dip galvanized steel,0,H 34
H3,33,37,35,3,5,,,Pressure Welded,Hot dip galvanized steel,0,H 33
H3,33,37,40,3,5,,,Pressure Welded,Hot dip galvanized steel,0,H 33
H3,33,37,45,3,5,,,Pressure Welded,Hot dip galvanized steel,0,H 33
H3,33,37,50,3,5,,,Pressure Welded,Hot dip galvanized steel,0,H 33
H3,33,37,50,4,6.5,,,Pressure Welded,Hot dip galvanized steel,0,H 33
H3,33,37,60,4,6.5,,,Pressure Welded,Hot dip galvanized steel,0,H 33
H3,33,37,70,4,6.5,,,Pressure Welded,Hot dip galvanized steel,0,H 33
H3,33,37,80,4,6.5,,,Pressure Welded,Hot dip galvanized steel,0,H 33
H3,34,37,25,2,5,,,Pressure Welded,Untreated,0,H 34
H3,34,37,30,2,5,,,Pressure Welded,Untreated,0,H 34
H3,34,37,25,3,5,,,Pressure Welded,Untreated,0,H 34
H3,34,37,30,3,5,,,Pressure Welded,Untreated,0,H 34
H3,33,37,35,3,5,,,Pressure Welded,Untreated,0,H 33
H3,33,37,40,3,5,,,Pressure Welded,Untreated,0,H 33
H3,33,37,45,3,5,,,Pressure Welded,Untreated,0,H 33
H3,33,37,50,3,5,,,Pressure Welded,Untreated,0,H 33
H3,33,37,50,4,6.5,,,Pressure Welded,Untreated,0,H 33
H3,33,37,60,4,6.5,,,Pressure Welded,Untreated,0,H 33
H3,33,37,70,4,6.5,,,Pressure Welded,Untreated,0,H 33
H3,33,37,80,4,6.5,,,Pressure Welded,Untreated,0,H 33
H3,33,37,25,3,5,,,Pressure Welded,Stainless Steel (Pickled),0,H 33
H3,33,37,30,3,5,,,Pressure Welded,Stainless Steel (Pickled),0,H 33
H3,33,37,50,3,5,,,Pressure Welded,Stainless Steel (Pickled),0,H 33
H3,33,37,25,3,5,,,Pressure Welded,Stainless Steel (Untreated),0,H 33
H3,33,37,30,3,5,,,Pressure Welded,Stainless Steel (Untreated),0,H 33
H3,33,37,50,3,5,,,Pressure Welded,Stainless Steel (Untreated),0,H 33
H4-T,33,50,25,2,5,,,Pressure Welded,Hot dip galvanized steel,1,H 33
H4-T,33,50,25,3,5,,,Pressure Welded,Hot dip galvanized steel,1,H 33
H4-T,33,50,30,3,5,,,Pressure Welded,Hot dip galvanized steel,1,H 33
H4-T,33,50,35,3,5,,,Pressure Welded,Hot dip galvanized steel,1,H 33
H4-T,33,50,40,3,5,,,Pressure Welded,Hot dip galvanized steel,1,H 33
H4-T,33,50,45,3,5,,,Pressure Welded,Hot dip galvanized steel,1,H 33
H4-T,33,50,50,3,5,,,Pressure Welded,Hot dip galvanized steel,1,H 33
H4-T,33,50,25,2,5,,,Pressure Welded,Untreated,1,H 33
H4-T,33,50,25,3,5,,,Pressure Welded,Untreated,1,H 33
H4-T,33,50,30,3,5,,,Pressure Welded,Untreated,1,H 33
H4-T,33,50,35,3,5,,,Pressure Welded,Untreated,1,H 33
H4-T,33,50,40,3,5,,,Pressure Welded,Untreated,1,H 33
H4-T,33,50,45,3,5,,,Pressure Welded,Untreated,1,H 33
H4-T,33,50,50,3,5,,,Pressure Welded,Untreated,1,H 33
H6,34,75,25,2,5,,,Pressure Welded,Hot dip galvanized steel,0,H 34
H6,34,75,30,2,5,,,Pressure Welded,Hot dip galvanized steel,0,H 34
H6,34,75,40,2,5,,,Pressure Welded,Hot dip galvanized steel,0,H 34
H6,34,75,25,3,5,,,Pressure Welded,Hot dip galvanized steel,0,H 34
H6,34,75,30,3,5,,,Pressure Welded,Hot dip galvanized steel,0,H 34
H6,34,75,40,3,5,,,Pressure Welded,Hot dip galvanized steel,0,H 34
H6,34,75,25,2,5,,,Pressure Welded,Untreated,0,H 34
H6,34,75,30,2,5,,,Pressure Welded,Untreated,0,H 34
H6,34,75,40,2,5,,,Pressure Welded,Untreated,0,H 34
H6,34,75,25,3,5,,,Pressure Welded,Untreated,0,H 34
H6,34,75,30,3,5,,,Pressure Welded,Untreated,0,H 34
H6,34,75,40,3,5,,,Pressure Welded,Untreated,0,H 34
H6,33,75,25,2,5,,,Pressure Welded,Stainless Steel (Pickled),0,H 33
H6,33,75,20,3,5,,,Pressure Welded,Stainless Steel (Pickled),0,H 33
H6,33,75,25,3,5,,,Pressure Welded,Stainless Steel (Pickled),0,H 33
H6,33,75,30,3,5,,,Pressure Welded,Stainless Steel (Pickled),0,H 33
H6,33,75,25,2,5,,,Pressure Welded,Stainless Steel (Untreated),0,H 33
H6,33,75,20,3,5,,,Pressure Welded,Stainless Steel (Untreated),0,H 33
H6,33,75,25,3,5,,,Pressure Welded,Stainless Steel (Untreated),0,H 33
H6,33,75,30,3,5,,,Pressure Welded,Stainless Steel (Untreated),0,H 33
H9-T,33,100,25,3,6.5,,,Pressure Welded,Hot dip galvanized steel,1,H 33
H9-T,33,100,30,3,6.5,,,Pressure Welded,Hot dip galvanized steel,1,H 33
H9-T,33,100,35,3,6.5,,,Pressure Welded,Hot dip galvanized steel,1,H 33
H9-T,33,100,40,3,6.5,,,Pressure Welded,Hot dip galvanized steel,1,H 33
H9-T,33,100,45,3,6.5,,,Pressure Welded,Hot dip galvanized steel,1,H 33
H9-T,33,100,50,3,6.5,,,Pressure Welded,Hot dip galvanized steel,1,H 33
H9-T,33,100,25,3,6.5,,,Pressure Welded,Untreated,1,H 33
H9-T,33,100,30,3,6.5,,,Pressure Welded,Untreated,1,H 33
H9-T,33,100,35,3,6.5,,,Pressure Welded,Untreated,1,H 33
H9-T,33,100,40,3,6.5,,,Pressure Welded,Untreated,1,H 33
H9-T,33,100,45,3,6.5,,,Pressure Welded,Untreated,1,H 33
H9-T,33,100,50,3,6.5,,,Pressure Welded,Untreated,1,H 33
N6,17,75,25,2,5,,,Pressure Welded,Hot dip galvanized steel,0,N 17
N6,17,75,30,2,5,,,Pressure Welded,Hot dip galvanized steel,0,N 17
N6,17,75,25,2,5,,,Pressure Welded,Untreated,0,N 17
N6,17,75,30,2,5,,,Pressure Welded,Untreated,0,N 17
N9,17,100,20,3,5,,,Pressure Welded,Hot dip galvanized steel,0,N 17
N9,17,100,25,3,5,,,Pressure Welded,Hot dip galvanized steel,0,N 17
N9,17,100,30,3,5,,,Pressure Welded,Hot dip galvanized steel,0,N 17
N9,17,100,35,3,5,,,Pressure Welded,Hot dip galvanized steel,0,N 17
N9,17,100,40,3,5,,,Pressure Welded,Hot dip galvanized steel,0,N 17
N9,17,100,50,3,5,,,Pressure Welded,Hot dip galvanized steel,0,N 17
N9,17,100,20,3,5,,,Pressure Welded,Untreated,0,N 17
N9,17,100,25,3,5,,,Pressure Welded,Untreated,0,N 17
N9,17,100,30,3,5,,,Pressure Welded,Untreated,0,N 17
N9,17,100,35,3,5,,,Pressure Welded,Untreated,0,N 17
N9,17,100,40,3,5,,,Pressure Welded,Untreated,0,N 17
N9,17,100,50,3,5,,,Pressure Welded,Untreated,0,N 17
N9,17,100,25,3,5,,,Pressure Welded,Stainless Steel (Pickled),0,N 17
N9,17,100,25,3,5,,,Pressure Welded,Stainless Steel (Untreated),0,N 17
N9-T,16,100,25,3,5,,,Pressure Welded,Hot dip galvanized steel,1,N 16
N9-T,16,100,30,3,5,,,Pressure Welded,Hot dip galvanized steel,1,N 16
N9-T,16,100,35,3,5,,,Pressure Welded,Hot dip galvanized steel,1,N 16
N9-T,16,100,40,3,5,,,Pressure Welded,Hot dip galvanized steel,1,N 16
N9-T,16,100,25,3,5,,,Pressure Welded,Untreated,1,N 16
N9-T,16,100,30,3,5,,,Pressure Welded,Untreated,1,N 16
N9-T,16,100,35,3,5,,,Pressure Welded,Untreated,1,N 16
N9-T,16,100,40,3,5,,,Pressure Welded,Untreated,1,N 16
N9-T,16,100,25,3,5,,,Pressure Welded,Stainless Steel (Pickled),1,N 16
N9-T,16,100,25,3,5,,,Pressure Welded,Stainless Steel (Untreated),1,N 16
A,22,22,25,2,,20,2,Type A,Hot dip galvanized steel,0,A 22
A,33,11,25,2,,20,2,Type A,Hot dip galvanized steel,0,A 33
A,22,22,25,2,,20,2,Type A,Untreated,0,A 22
A,33,11,25,2,,20,2,Type A,Untreated,0,A 33
A,22,22,25,2,,20,2,Type A,Stainless Steel (Pickled),0,A 22
A,22,22,30,2,,20,2,Type A,Stainless Steel (Pickled),0,A 22
A,33,11,25,2,,20,2,Type A,Stainless Steel (Pickled),0,A 33
A,33,11,30,2,,20,2,Type A,Stainless Steel (Pickled),0,A 33
A,22,22,25,2,,20,2,Type A,Stainless Steel (Untreated),0,A 22
A,22,22,30,2,,20,2,Type A,Stainless Steel (Untreated),0,A 22
A,33,11,25,2,,20,2,Type A,Stainless Steel (Untreated),0,A 33
A,33,11,30,2,,20,2,Type A,Stainless Steel (Untreated),0,A 33
A,33,11,25,2,,20,2,Type A,Hot dip galvanized steel,1,A 33
1 NAME [str] LB-SPACING [int] CB-SPACING [int] LB-HEIGHT [int] LB-THICKNESS [int] CB-DIAMETER [dbl] CB-HEIGHT [int] CB-THICKNESS [int] TYPE [str] MATERIAL [str] SERRATED [bool] WHOLE MESHES [str]
2 B9 12 100 20 3 6.5 Pressure Welded Hot dip galvanized steel 0 B 12
3 B9 12 100 25 3 6.5 Pressure Welded Hot dip galvanized steel 0 B 12
4 B9 12 100 30 3 6.5 Pressure Welded Hot dip galvanized steel 0 B 12
5 B9 12 100 35 3 6.5 Pressure Welded Hot dip galvanized steel 0 B 12
6 B9 12 100 40 3 6.5 Pressure Welded Hot dip galvanized steel 0 B 12
7 B9 12 100 20 3 6.5 Pressure Welded Untreated 0 B 12
8 B9 12 100 25 3 6.5 Pressure Welded Untreated 0 B 12
9 B9 12 100 30 3 6.5 Pressure Welded Untreated 0 B 12
10 B9 12 100 35 3 6.5 Pressure Welded Untreated 0 B 12
11 B9 12 100 40 3 6.5 Pressure Welded Untreated 0 B 12
12 H3 34 37 25 2 5 Pressure Welded Hot dip galvanized steel 0 H 34
13 H3 34 37 30 2 5 Pressure Welded Hot dip galvanized steel 0 H 34
14 H3 34 37 25 3 5 Pressure Welded Hot dip galvanized steel 0 H 34
15 H3 34 37 30 3 5 Pressure Welded Hot dip galvanized steel 0 H 34
16 H3 33 37 35 3 5 Pressure Welded Hot dip galvanized steel 0 H 33
17 H3 33 37 40 3 5 Pressure Welded Hot dip galvanized steel 0 H 33
18 H3 33 37 45 3 5 Pressure Welded Hot dip galvanized steel 0 H 33
19 H3 33 37 50 3 5 Pressure Welded Hot dip galvanized steel 0 H 33
20 H3 33 37 50 4 6.5 Pressure Welded Hot dip galvanized steel 0 H 33
21 H3 33 37 60 4 6.5 Pressure Welded Hot dip galvanized steel 0 H 33
22 H3 33 37 70 4 6.5 Pressure Welded Hot dip galvanized steel 0 H 33
23 H3 33 37 80 4 6.5 Pressure Welded Hot dip galvanized steel 0 H 33
24 H3 34 37 25 2 5 Pressure Welded Untreated 0 H 34
25 H3 34 37 30 2 5 Pressure Welded Untreated 0 H 34
26 H3 34 37 25 3 5 Pressure Welded Untreated 0 H 34
27 H3 34 37 30 3 5 Pressure Welded Untreated 0 H 34
28 H3 33 37 35 3 5 Pressure Welded Untreated 0 H 33
29 H3 33 37 40 3 5 Pressure Welded Untreated 0 H 33
30 H3 33 37 45 3 5 Pressure Welded Untreated 0 H 33
31 H3 33 37 50 3 5 Pressure Welded Untreated 0 H 33
32 H3 33 37 50 4 6.5 Pressure Welded Untreated 0 H 33
33 H3 33 37 60 4 6.5 Pressure Welded Untreated 0 H 33
34 H3 33 37 70 4 6.5 Pressure Welded Untreated 0 H 33
35 H3 33 37 80 4 6.5 Pressure Welded Untreated 0 H 33
36 H3 33 37 25 3 5 Pressure Welded Stainless Steel (Pickled) 0 H 33
37 H3 33 37 30 3 5 Pressure Welded Stainless Steel (Pickled) 0 H 33
38 H3 33 37 50 3 5 Pressure Welded Stainless Steel (Pickled) 0 H 33
39 H3 33 37 25 3 5 Pressure Welded Stainless Steel (Untreated) 0 H 33
40 H3 33 37 30 3 5 Pressure Welded Stainless Steel (Untreated) 0 H 33
41 H3 33 37 50 3 5 Pressure Welded Stainless Steel (Untreated) 0 H 33
42 H4-T 33 50 25 2 5 Pressure Welded Hot dip galvanized steel 1 H 33
43 H4-T 33 50 25 3 5 Pressure Welded Hot dip galvanized steel 1 H 33
44 H4-T 33 50 30 3 5 Pressure Welded Hot dip galvanized steel 1 H 33
45 H4-T 33 50 35 3 5 Pressure Welded Hot dip galvanized steel 1 H 33
46 H4-T 33 50 40 3 5 Pressure Welded Hot dip galvanized steel 1 H 33
47 H4-T 33 50 45 3 5 Pressure Welded Hot dip galvanized steel 1 H 33
48 H4-T 33 50 50 3 5 Pressure Welded Hot dip galvanized steel 1 H 33
49 H4-T 33 50 25 2 5 Pressure Welded Untreated 1 H 33
50 H4-T 33 50 25 3 5 Pressure Welded Untreated 1 H 33
51 H4-T 33 50 30 3 5 Pressure Welded Untreated 1 H 33
52 H4-T 33 50 35 3 5 Pressure Welded Untreated 1 H 33
53 H4-T 33 50 40 3 5 Pressure Welded Untreated 1 H 33
54 H4-T 33 50 45 3 5 Pressure Welded Untreated 1 H 33
55 H4-T 33 50 50 3 5 Pressure Welded Untreated 1 H 33
56 H6 34 75 25 2 5 Pressure Welded Hot dip galvanized steel 0 H 34
57 H6 34 75 30 2 5 Pressure Welded Hot dip galvanized steel 0 H 34
58 H6 34 75 40 2 5 Pressure Welded Hot dip galvanized steel 0 H 34
59 H6 34 75 25 3 5 Pressure Welded Hot dip galvanized steel 0 H 34
60 H6 34 75 30 3 5 Pressure Welded Hot dip galvanized steel 0 H 34
61 H6 34 75 40 3 5 Pressure Welded Hot dip galvanized steel 0 H 34
62 H6 34 75 25 2 5 Pressure Welded Untreated 0 H 34
63 H6 34 75 30 2 5 Pressure Welded Untreated 0 H 34
64 H6 34 75 40 2 5 Pressure Welded Untreated 0 H 34
65 H6 34 75 25 3 5 Pressure Welded Untreated 0 H 34
66 H6 34 75 30 3 5 Pressure Welded Untreated 0 H 34
67 H6 34 75 40 3 5 Pressure Welded Untreated 0 H 34
68 H6 33 75 25 2 5 Pressure Welded Stainless Steel (Pickled) 0 H 33
69 H6 33 75 20 3 5 Pressure Welded Stainless Steel (Pickled) 0 H 33
70 H6 33 75 25 3 5 Pressure Welded Stainless Steel (Pickled) 0 H 33
71 H6 33 75 30 3 5 Pressure Welded Stainless Steel (Pickled) 0 H 33
72 H6 33 75 25 2 5 Pressure Welded Stainless Steel (Untreated) 0 H 33
73 H6 33 75 20 3 5 Pressure Welded Stainless Steel (Untreated) 0 H 33
74 H6 33 75 25 3 5 Pressure Welded Stainless Steel (Untreated) 0 H 33
75 H6 33 75 30 3 5 Pressure Welded Stainless Steel (Untreated) 0 H 33
76 H9-T 33 100 25 3 6.5 Pressure Welded Hot dip galvanized steel 1 H 33
77 H9-T 33 100 30 3 6.5 Pressure Welded Hot dip galvanized steel 1 H 33
78 H9-T 33 100 35 3 6.5 Pressure Welded Hot dip galvanized steel 1 H 33
79 H9-T 33 100 40 3 6.5 Pressure Welded Hot dip galvanized steel 1 H 33
80 H9-T 33 100 45 3 6.5 Pressure Welded Hot dip galvanized steel 1 H 33
81 H9-T 33 100 50 3 6.5 Pressure Welded Hot dip galvanized steel 1 H 33
82 H9-T 33 100 25 3 6.5 Pressure Welded Untreated 1 H 33
83 H9-T 33 100 30 3 6.5 Pressure Welded Untreated 1 H 33
84 H9-T 33 100 35 3 6.5 Pressure Welded Untreated 1 H 33
85 H9-T 33 100 40 3 6.5 Pressure Welded Untreated 1 H 33
86 H9-T 33 100 45 3 6.5 Pressure Welded Untreated 1 H 33
87 H9-T 33 100 50 3 6.5 Pressure Welded Untreated 1 H 33
88 N6 17 75 25 2 5 Pressure Welded Hot dip galvanized steel 0 N 17
89 N6 17 75 30 2 5 Pressure Welded Hot dip galvanized steel 0 N 17
90 N6 17 75 25 2 5 Pressure Welded Untreated 0 N 17
91 N6 17 75 30 2 5 Pressure Welded Untreated 0 N 17
92 N9 17 100 20 3 5 Pressure Welded Hot dip galvanized steel 0 N 17
93 N9 17 100 25 3 5 Pressure Welded Hot dip galvanized steel 0 N 17
94 N9 17 100 30 3 5 Pressure Welded Hot dip galvanized steel 0 N 17
95 N9 17 100 35 3 5 Pressure Welded Hot dip galvanized steel 0 N 17
96 N9 17 100 40 3 5 Pressure Welded Hot dip galvanized steel 0 N 17
97 N9 17 100 50 3 5 Pressure Welded Hot dip galvanized steel 0 N 17
98 N9 17 100 20 3 5 Pressure Welded Untreated 0 N 17
99 N9 17 100 25 3 5 Pressure Welded Untreated 0 N 17
100 N9 17 100 30 3 5 Pressure Welded Untreated 0 N 17
101 N9 17 100 35 3 5 Pressure Welded Untreated 0 N 17
102 N9 17 100 40 3 5 Pressure Welded Untreated 0 N 17
103 N9 17 100 50 3 5 Pressure Welded Untreated 0 N 17
104 N9 17 100 25 3 5 Pressure Welded Stainless Steel (Pickled) 0 N 17
105 N9 17 100 25 3 5 Pressure Welded Stainless Steel (Untreated) 0 N 17
106 N9-T 16 100 25 3 5 Pressure Welded Hot dip galvanized steel 1 N 16
107 N9-T 16 100 30 3 5 Pressure Welded Hot dip galvanized steel 1 N 16
108 N9-T 16 100 35 3 5 Pressure Welded Hot dip galvanized steel 1 N 16
109 N9-T 16 100 40 3 5 Pressure Welded Hot dip galvanized steel 1 N 16
110 N9-T 16 100 25 3 5 Pressure Welded Untreated 1 N 16
111 N9-T 16 100 30 3 5 Pressure Welded Untreated 1 N 16
112 N9-T 16 100 35 3 5 Pressure Welded Untreated 1 N 16
113 N9-T 16 100 40 3 5 Pressure Welded Untreated 1 N 16
114 N9-T 16 100 25 3 5 Pressure Welded Stainless Steel (Pickled) 1 N 16
115 N9-T 16 100 25 3 5 Pressure Welded Stainless Steel (Untreated) 1 N 16
116 A 22 22 25 2 20 2 Type A Hot dip galvanized steel 0 A 22
117 A 33 11 25 2 20 2 Type A Hot dip galvanized steel 0 A 33
118 A 22 22 25 2 20 2 Type A Untreated 0 A 22
119 A 33 11 25 2 20 2 Type A Untreated 0 A 33
120 A 22 22 25 2 20 2 Type A Stainless Steel (Pickled) 0 A 22
121 A 22 22 30 2 20 2 Type A Stainless Steel (Pickled) 0 A 22
122 A 33 11 25 2 20 2 Type A Stainless Steel (Pickled) 0 A 33
123 A 33 11 30 2 20 2 Type A Stainless Steel (Pickled) 0 A 33
124 A 22 22 25 2 20 2 Type A Stainless Steel (Untreated) 0 A 22
125 A 22 22 30 2 20 2 Type A Stainless Steel (Untreated) 0 A 22
126 A 33 11 25 2 20 2 Type A Stainless Steel (Untreated) 0 A 33
127 A 33 11 30 2 20 2 Type A Stainless Steel (Untreated) 0 A 33
128 A 33 11 25 2 20 2 Type A Hot dip galvanized steel 1 A 33

6
Database/Serrated.csv Normal file
View File

@ -0,0 +1,6 @@
TYPE [str],MATERIAL [str]
Pressure Welded,Hot dip galvanized steel
Pressure Welded,Stainless Steel (Pickled)
Pressure Welded,Stainless Steel (Untreated)
Pressure Welded,Untreated
Type A,Hot dip galvanized steel
1 TYPE [str] MATERIAL [str]
2 Pressure Welded Hot dip galvanized steel
3 Pressure Welded Stainless Steel (Pickled)
4 Pressure Welded Stainless Steel (Untreated)
5 Pressure Welded Untreated
6 Type A Hot dip galvanized steel

61
Database/Whole Meshes.csv Normal file
View File

@ -0,0 +1,61 @@
H 33 [int],H 34 [int],F 25 [int],D 22 [int],N 16 [int],N 17 [int],B 12 [int],I 100 [int],J 41 [int],A 22 [int],A 33 [int]
1000,1000,1000,1000,1000,1000,700,1000,1000,1000,1000
966,962,973,972,982,983,685,900,957,968,957
933,927,949,950,966,965,672,800,914,946,924
900,893,923,928,949,949,659,700,872,924,891
867,858,898,906,933,931,646,600,830,902,858
834,825,873,884,916,914,633,500,788,880,825
801,790,849,862,900,897,620,400,745,858,792
768,756,825,840,883,880,608,300,700,836,759
734,722,799,818,867,862,596,200,662,814,726
700,687,774,797,850,845,584,100,621,792,693
668,653,750,775,834,827,571,,580,770,660
635,618,725,753,817,811,559,,540,748,627
602,584,700,731,801,793,547,,500,726,594
568,551,674,709,784,776,535,,456,704,561
534,516,650,687,768,759,522,,416,682,528
500,485,625,665,751,742,511,,375,660,495
469,451,600,643,734,724,500,,334,638,462
436,417,575,621,718,707,485,,293,616,429
403,383,550,599,700,690,473,,254,594,396
370,348,526,577,683,673,460,,211,572,363
337,314,500,555,665,656,448,,171,550,330
304,280,475,533,649,639,436,,130,528,297
271,246,451,511,632,622,424,,89,506,264
238,211,426,490,616,605,411,,48,484,231
205,178,401,468,600,587,399,,,462,198
171,144,377,446,583,570,387,,,440,165
139,109,352,424,568,553,374,,,418,132
106,75,327,402,550,536,362,,,396,99
73,40,302,380,534,519,350,,,374,66
40,,278,358,518,502,338,,,352,
,,253,336,500,486,326,,,330,
,,228,314,483,469,313,,,308,
,,204,292,465,452,301,,,286,
,,179,270,449,435,289,,,264,
,,154,248,433,418,276,,,242,
,,130,226,416,400,264,,,220,
,,105,204,400,383,252,,,198,
,,81,182,383,366,240,,,176,
,,56,160,367,349,228,,,154,
,,32,139,351,332,215,,,132,
,,,117,334,315,203,,,110,
,,,95,318,298,191,,,88,
,,,73,302,280,178,,,66,
,,,51,285,262,166,,,44,
,,,29,269,246,154,,,,
,,,,252,229,142,,,,
,,,,236,212,130,,,,
,,,,220,195,117,,,,
,,,,203,178,105,,,,
,,,,187,160,93,,,,
,,,,171,143,80,,,,
,,,,154,126,68,,,,
,,,,137,109,56,,,,
,,,,122,92,44,,,,
,,,,105,74,31,,,,
,,,,89,57,19,,,,
,,,,72,40,,,,,
,,,,56,23,,,,,
,,,,40,,,,,,
,,,,24,,,,,,
1 H 33 [int] H 34 [int] F 25 [int] D 22 [int] N 16 [int] N 17 [int] B 12 [int] I 100 [int] J 41 [int] A 22 [int] A 33 [int]
2 1000 1000 1000 1000 1000 1000 700 1000 1000 1000 1000
3 966 962 973 972 982 983 685 900 957 968 957
4 933 927 949 950 966 965 672 800 914 946 924
5 900 893 923 928 949 949 659 700 872 924 891
6 867 858 898 906 933 931 646 600 830 902 858
7 834 825 873 884 916 914 633 500 788 880 825
8 801 790 849 862 900 897 620 400 745 858 792
9 768 756 825 840 883 880 608 300 700 836 759
10 734 722 799 818 867 862 596 200 662 814 726
11 700 687 774 797 850 845 584 100 621 792 693
12 668 653 750 775 834 827 571 580 770 660
13 635 618 725 753 817 811 559 540 748 627
14 602 584 700 731 801 793 547 500 726 594
15 568 551 674 709 784 776 535 456 704 561
16 534 516 650 687 768 759 522 416 682 528
17 500 485 625 665 751 742 511 375 660 495
18 469 451 600 643 734 724 500 334 638 462
19 436 417 575 621 718 707 485 293 616 429
20 403 383 550 599 700 690 473 254 594 396
21 370 348 526 577 683 673 460 211 572 363
22 337 314 500 555 665 656 448 171 550 330
23 304 280 475 533 649 639 436 130 528 297
24 271 246 451 511 632 622 424 89 506 264
25 238 211 426 490 616 605 411 48 484 231
26 205 178 401 468 600 587 399 462 198
27 171 144 377 446 583 570 387 440 165
28 139 109 352 424 568 553 374 418 132
29 106 75 327 402 550 536 362 396 99
30 73 40 302 380 534 519 350 374 66
31 40 278 358 518 502 338 352
32 253 336 500 486 326 330
33 228 314 483 469 313 308
34 204 292 465 452 301 286
35 179 270 449 435 289 264
36 154 248 433 418 276 242
37 130 226 416 400 264 220
38 105 204 400 383 252 198
39 81 182 383 366 240 176
40 56 160 367 349 228 154
41 32 139 351 332 215 132
42 117 334 315 203 110
43 95 318 298 191 88
44 73 302 280 178 66
45 51 285 262 166 44
46 29 269 246 154
47 252 229 142
48 236 212 130
49 220 195 117
50 203 178 105
51 187 160 93
52 171 143 80
53 154 126 68
54 137 109 56
55 122 92 44
56 105 74 31
57 89 57 19
58 72 40
59 56 23
60 40
61 24

Binary file not shown.

BIN
Files Needed/A3 Part.slddrt Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

BIN
HLCt/Parts/START.SLDPRT Normal file

Binary file not shown.

Binary file not shown.

BIN
HLCt/frame_l_corner.SLDPRT Normal file

Binary file not shown.

Binary file not shown.

BIN
HLCt/pressure_welded.SLDPRT Normal file

Binary file not shown.

Binary file not shown.

BIN
HLCt/recess_angle.SLDPRT Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
HLCt/support_beam.SLDPRT Normal file

Binary file not shown.

BIN
HLCt/type_a.SLDPRT Normal file

Binary file not shown.

BIN
HLCt/type_a_serrated.SLDPRT Normal file

Binary file not shown.

271
Wardrobe/GUI.Designer.vb generated
View File

@ -1,271 +0,0 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class GUI
Inherits System.Windows.Forms.Form
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(GUI))
Me.Section_gui = New System.Windows.Forms.TabControl()
Me.Rail_lb = New System.Windows.Forms.Label()
Me.Hanger_lb = New System.Windows.Forms.Label()
Me.Shelf_lb = New System.Windows.Forms.Label()
Me.Basket_lb = New System.Windows.Forms.Label()
Me.Drying_lb = New System.Windows.Forms.Label()
Me.Hooks_lb = New System.Windows.Forms.Label()
Me.Del_rail_lb = New System.Windows.Forms.Label()
Me.Del_rail_btn = New System.Windows.Forms.Button()
Me.Hanger_btn = New System.Windows.Forms.Button()
Me.Shelf_btn = New System.Windows.Forms.Button()
Me.Basket_btn = New System.Windows.Forms.Button()
Me.Drying_btn = New System.Windows.Forms.Button()
Me.Hooks_btn = New System.Windows.Forms.Button()
Me.Rail_btn = New System.Windows.Forms.Button()
Me.Build_btn = New System.Windows.Forms.Button()
Me.Update_KB = New System.Windows.Forms.Button()
Me.SuspendLayout()
'
'Section_gui
'
Me.Section_gui.Location = New System.Drawing.Point(12, 194)
Me.Section_gui.Name = "Section_gui"
Me.Section_gui.SelectedIndex = 0
Me.Section_gui.Size = New System.Drawing.Size(548, 457)
Me.Section_gui.TabIndex = 0
'
'Rail_lb
'
Me.Rail_lb.AutoSize = True
Me.Rail_lb.Location = New System.Drawing.Point(9, 77)
Me.Rail_lb.Name = "Rail_lb"
Me.Rail_lb.Size = New System.Drawing.Size(71, 13)
Me.Rail_lb.TabIndex = 13
Me.Rail_lb.Text = "Add Wall Rail"
'
'Hanger_lb
'
Me.Hanger_lb.AutoSize = True
Me.Hanger_lb.Location = New System.Drawing.Point(108, 77)
Me.Hanger_lb.Name = "Hanger_lb"
Me.Hanger_lb.Size = New System.Drawing.Size(64, 13)
Me.Hanger_lb.TabIndex = 14
Me.Hanger_lb.Text = "Add Hanger"
'
'Shelf_lb
'
Me.Shelf_lb.AutoSize = True
Me.Shelf_lb.Location = New System.Drawing.Point(203, 77)
Me.Shelf_lb.Name = "Shelf_lb"
Me.Shelf_lb.Size = New System.Drawing.Size(53, 13)
Me.Shelf_lb.TabIndex = 15
Me.Shelf_lb.Text = "Add Shelf"
'
'Basket_lb
'
Me.Basket_lb.AutoSize = True
Me.Basket_lb.Location = New System.Drawing.Point(296, 77)
Me.Basket_lb.Name = "Basket_lb"
Me.Basket_lb.Size = New System.Drawing.Size(62, 13)
Me.Basket_lb.TabIndex = 16
Me.Basket_lb.Text = "Add Basket"
'
'Drying_lb
'
Me.Drying_lb.AutoSize = True
Me.Drying_lb.Location = New System.Drawing.Point(375, 77)
Me.Drying_lb.Name = "Drying_lb"
Me.Drying_lb.Size = New System.Drawing.Size(88, 13)
Me.Drying_lb.TabIndex = 17
Me.Drying_lb.Text = "Add Drying Rack"
'
'Hooks_lb
'
Me.Hooks_lb.AutoSize = True
Me.Hooks_lb.Location = New System.Drawing.Point(479, 77)
Me.Hooks_lb.Name = "Hooks_lb"
Me.Hooks_lb.Size = New System.Drawing.Size(60, 13)
Me.Hooks_lb.TabIndex = 18
Me.Hooks_lb.Text = "Add Hooks"
'
'Del_rail_lb
'
Me.Del_rail_lb.AutoSize = True
Me.Del_rail_lb.Location = New System.Drawing.Point(9, 158)
Me.Del_rail_lb.Name = "Del_rail_lb"
Me.Del_rail_lb.Size = New System.Drawing.Size(92, 13)
Me.Del_rail_lb.TabIndex = 20
Me.Del_rail_lb.Text = "Remove Wall Rail"
'
'Del_rail_btn
'
Me.Del_rail_btn.BackColor = System.Drawing.SystemColors.InactiveBorder
Me.Del_rail_btn.BackgroundImage = Global.Wardrobe.My.Resources.Resources.remove_b
Me.Del_rail_btn.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
Me.Del_rail_btn.FlatAppearance.BorderColor = System.Drawing.SystemColors.Highlight
Me.Del_rail_btn.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Del_rail_btn.Location = New System.Drawing.Point(16, 105)
Me.Del_rail_btn.Name = "Del_rail_btn"
Me.Del_rail_btn.Size = New System.Drawing.Size(50, 50)
Me.Del_rail_btn.TabIndex = 19
Me.Del_rail_btn.UseVisualStyleBackColor = False
'
'Hanger_btn
'
Me.Hanger_btn.BackColor = System.Drawing.SystemColors.InactiveBorder
Me.Hanger_btn.BackgroundImage = Global.Wardrobe.My.Resources.Resources.add_b
Me.Hanger_btn.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
Me.Hanger_btn.FlatAppearance.BorderColor = System.Drawing.SystemColors.Highlight
Me.Hanger_btn.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Hanger_btn.Location = New System.Drawing.Point(111, 24)
Me.Hanger_btn.Name = "Hanger_btn"
Me.Hanger_btn.Size = New System.Drawing.Size(50, 50)
Me.Hanger_btn.TabIndex = 12
Me.Hanger_btn.UseVisualStyleBackColor = False
'
'Shelf_btn
'
Me.Shelf_btn.BackColor = System.Drawing.SystemColors.InactiveBorder
Me.Shelf_btn.BackgroundImage = Global.Wardrobe.My.Resources.Resources.add_b
Me.Shelf_btn.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
Me.Shelf_btn.FlatAppearance.BorderColor = System.Drawing.SystemColors.Highlight
Me.Shelf_btn.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Shelf_btn.Location = New System.Drawing.Point(233, 24)
Me.Shelf_btn.Name = "Shelf_btn"
Me.Shelf_btn.Size = New System.Drawing.Size(50, 50)
Me.Shelf_btn.TabIndex = 11
Me.Shelf_btn.UseVisualStyleBackColor = False
'
'Basket_btn
'
Me.Basket_btn.BackColor = System.Drawing.SystemColors.InactiveBorder
Me.Basket_btn.BackgroundImage = Global.Wardrobe.My.Resources.Resources.add_b
Me.Basket_btn.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
Me.Basket_btn.FlatAppearance.BorderColor = System.Drawing.SystemColors.Highlight
Me.Basket_btn.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Basket_btn.Location = New System.Drawing.Point(299, 24)
Me.Basket_btn.Name = "Basket_btn"
Me.Basket_btn.Size = New System.Drawing.Size(50, 50)
Me.Basket_btn.TabIndex = 10
Me.Basket_btn.UseVisualStyleBackColor = False
'
'Drying_btn
'
Me.Drying_btn.BackColor = System.Drawing.SystemColors.InactiveBorder
Me.Drying_btn.BackgroundImage = Global.Wardrobe.My.Resources.Resources.add_b
Me.Drying_btn.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
Me.Drying_btn.FlatAppearance.BorderColor = System.Drawing.SystemColors.Highlight
Me.Drying_btn.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Drying_btn.Location = New System.Drawing.Point(394, 24)
Me.Drying_btn.Name = "Drying_btn"
Me.Drying_btn.Size = New System.Drawing.Size(50, 50)
Me.Drying_btn.TabIndex = 9
Me.Drying_btn.UseVisualStyleBackColor = False
'
'Hooks_btn
'
Me.Hooks_btn.BackColor = System.Drawing.SystemColors.InactiveBorder
Me.Hooks_btn.BackgroundImage = Global.Wardrobe.My.Resources.Resources.add_b
Me.Hooks_btn.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
Me.Hooks_btn.FlatAppearance.BorderColor = System.Drawing.SystemColors.Highlight
Me.Hooks_btn.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Hooks_btn.Location = New System.Drawing.Point(482, 24)
Me.Hooks_btn.Name = "Hooks_btn"
Me.Hooks_btn.Size = New System.Drawing.Size(50, 50)
Me.Hooks_btn.TabIndex = 8
Me.Hooks_btn.UseVisualStyleBackColor = False
'
'Rail_btn
'
Me.Rail_btn.BackColor = System.Drawing.SystemColors.InactiveBorder
Me.Rail_btn.BackgroundImage = Global.Wardrobe.My.Resources.Resources.add_b
Me.Rail_btn.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
Me.Rail_btn.FlatAppearance.BorderColor = System.Drawing.SystemColors.Highlight
Me.Rail_btn.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Rail_btn.Location = New System.Drawing.Point(16, 24)
Me.Rail_btn.Name = "Rail_btn"
Me.Rail_btn.Size = New System.Drawing.Size(50, 50)
Me.Rail_btn.TabIndex = 1
Me.Rail_btn.UseVisualStyleBackColor = False
'
'Build_btn
'
Me.Build_btn.Location = New System.Drawing.Point(436, 147)
Me.Build_btn.Name = "Build_btn"
Me.Build_btn.Size = New System.Drawing.Size(96, 34)
Me.Build_btn.TabIndex = 21
Me.Build_btn.Text = "Build"
Me.Build_btn.UseVisualStyleBackColor = True
'
'Update_KB
'
Me.Update_KB.Location = New System.Drawing.Point(317, 147)
Me.Update_KB.Name = "Update_KB"
Me.Update_KB.Size = New System.Drawing.Size(96, 34)
Me.Update_KB.TabIndex = 22
Me.Update_KB.Text = "Update KB"
Me.Update_KB.UseVisualStyleBackColor = True
'
'GUI
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(6.0!, 13.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(572, 663)
Me.Controls.Add(Me.Update_KB)
Me.Controls.Add(Me.Build_btn)
Me.Controls.Add(Me.Del_rail_lb)
Me.Controls.Add(Me.Del_rail_btn)
Me.Controls.Add(Me.Hooks_lb)
Me.Controls.Add(Me.Drying_lb)
Me.Controls.Add(Me.Basket_lb)
Me.Controls.Add(Me.Shelf_lb)
Me.Controls.Add(Me.Hanger_lb)
Me.Controls.Add(Me.Rail_lb)
Me.Controls.Add(Me.Hanger_btn)
Me.Controls.Add(Me.Shelf_btn)
Me.Controls.Add(Me.Basket_btn)
Me.Controls.Add(Me.Drying_btn)
Me.Controls.Add(Me.Hooks_btn)
Me.Controls.Add(Me.Rail_btn)
Me.Controls.Add(Me.Section_gui)
Me.Icon = CType(resources.GetObject("$this.Icon"), System.Drawing.Icon)
Me.Name = "GUI"
Me.Text = "Build a wardrobe"
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents Section_gui As TabControl
Friend WithEvents Rail_btn As Button
Friend WithEvents Hooks_btn As Button
Friend WithEvents Drying_btn As Button
Friend WithEvents Basket_btn As Button
Friend WithEvents Shelf_btn As Button
Friend WithEvents Hanger_btn As Button
Friend WithEvents Rail_lb As Label
Friend WithEvents Hanger_lb As Label
Friend WithEvents Shelf_lb As Label
Friend WithEvents Basket_lb As Label
Friend WithEvents Drying_lb As Label
Friend WithEvents Hooks_lb As Label
Friend WithEvents Del_rail_lb As Label
Friend WithEvents Del_rail_btn As Button
Friend WithEvents Build_btn As Button
Friend WithEvents Update_KB As Button
End Class

File diff suppressed because it is too large Load Diff

View File

@ -1,530 +0,0 @@
Imports XCCLibrary
Public Class GUI
Dim Control_ID
Sub GUI_load() Handles MyBase.Load
add_section()
Control_ID = 0
End Sub
Sub add_section()
' adding the tab page
Dim myTabPage As New TabPage
Dim TabContSec As TabControl
TabContSec = Section_gui
myTabPage.Text = "Section " & TabContSec.TabPages.Count + 1
myTabPage.Name = "Section_" & TabContSec.TabPages.Count + 1
TabContSec.TabPages.Add(myTabPage)
TabContSec.SelectedTab = myTabPage
' adding controls for section width and height
Dim Width_lbl As New Label
Width_lbl.Top = 10
Width_lbl.Left = 10
Width_lbl.Name = "Width_lb"
Width_lbl.Text = "Section Width"
myTabPage.Controls.Add(Width_lbl)
Dim Width_tbox As New TextBox
Width_tbox.Top = 10
Width_tbox.Left = 120
Width_tbox.Width = 120
Width_tbox.Name = "Width_tb"
myTabPage.Controls.Add(Width_tbox)
Dim Height_lbl As New Label
Height_lbl.Top = 35
Height_lbl.Left = 10
Height_lbl.Name = "Height_lb"
Height_lbl.Text = "Section Height"
myTabPage.Controls.Add(Height_lbl)
Dim Height_tbox As New TextBox
Height_tbox.Top = 35
Height_tbox.Left = 120
Height_tbox.Width = 120
Height_tbox.Name = "Height_tb"
myTabPage.Controls.Add(Height_tbox)
End Sub
Sub Del_section()
' Removing the tabpage
If Section_gui.TabPages.Count > 1 Then
Section_gui.TabPages.Remove(Section_gui.TabPages(Section_gui.TabPages.Count - 1))
End If
End Sub
Sub add_hanger()
'Setting an ID of the item
Control_ID += 1
' Geting the active tabpage and the location where to put the label
Dim myTabPage As TabPage
Dim TabContSec As TabControl
TabContSec = Section_gui
myTabPage = TabContSec.SelectedTab
Dim y_pos = get_latest_position(myTabPage)
y_pos = y_pos + 30
'adding the new controls
Dim Hanger_lbl As New Label
Hanger_lbl.Top = y_pos
Hanger_lbl.Left = 10
Hanger_lbl.Name = "Item_Hanger_" & Control_ID
Hanger_lbl.Text = "Hanger"
myTabPage.Controls.Add(Hanger_lbl)
Dim Pos_tbox As New TextBox
Pos_tbox.Top = y_pos
Pos_tbox.Left = 180
Pos_tbox.Width = 60
Pos_tbox.Name = "Hanger_Pos_tb_" & Control_ID
myTabPage.Controls.Add(Pos_tbox)
Dim Pos_lbl As New Label
Pos_lbl.Top = y_pos
Pos_lbl.Left = 120
Pos_lbl.Name = "Hanger_Pos_lb_" & Control_ID
Pos_lbl.Text = "Position"
myTabPage.Controls.Add(Pos_lbl)
End Sub
Sub add_hooks()
'Setting an ID of the item
Control_ID += 1
' Geting the active tabpage and the location where to put the label
Dim myTabPage As TabPage
Dim TabContSec As TabControl
TabContSec = Section_gui
myTabPage = TabContSec.SelectedTab
Dim y_pos = get_latest_position(myTabPage)
y_pos = y_pos + 30
'adding the new controls
Dim Hooks_lbl As New Label
Hooks_lbl.Top = y_pos
Hooks_lbl.Left = 10
Hooks_lbl.Name = "Item_Hooks_" & Control_ID
Hooks_lbl.Text = "Hooks"
myTabPage.Controls.Add(Hooks_lbl)
Dim Pos_tbox As New TextBox
Pos_tbox.Top = y_pos
Pos_tbox.Left = 180
Pos_tbox.Width = 60
Pos_tbox.Name = "Hooks_Pos_tb_" & Control_ID
myTabPage.Controls.Add(Pos_tbox)
Dim Pos_lbl As New Label
Pos_lbl.Top = y_pos
Pos_lbl.Left = 120
Pos_lbl.Name = "Hooks_Pos_lb_" & Control_ID
Pos_lbl.Text = "Position"
myTabPage.Controls.Add(Pos_lbl)
Dim Nr_tbox As New TextBox
Nr_tbox.Top = y_pos
Nr_tbox.Left = 320
Nr_tbox.Width = 60
Nr_tbox.Name = "Hooks_Nr_tb_" & Control_ID
myTabPage.Controls.Add(Nr_tbox)
Dim Nr_lbl As New Label
Nr_lbl.Top = y_pos
Nr_lbl.Left = 260
Nr_lbl.Name = "Hooks_Nr_lb_" & Control_ID
Nr_lbl.Text = "Quantity"
myTabPage.Controls.Add(Nr_lbl)
End Sub
Sub add_basket()
'Setting an ID of the item
Control_ID += 1
' Geting the active tabpage and the location where to put the label
Dim myTabPage As TabPage
Dim TabContSec As TabControl
TabContSec = Section_gui
myTabPage = TabContSec.SelectedTab
Dim y_pos = get_latest_position(myTabPage)
y_pos = y_pos + 30
'adding the new controls
Dim Basket_lbl As New Label
Basket_lbl.Top = y_pos
Basket_lbl.Left = 10
Basket_lbl.Name = "Item_Basket_" & Control_ID
Basket_lbl.Text = "Basket"
myTabPage.Controls.Add(Basket_lbl)
Dim Pos_tbox As New TextBox
Pos_tbox.Top = y_pos
Pos_tbox.Left = 180
Pos_tbox.Width = 60
Pos_tbox.Name = "Basket_Pos_tb_" & Control_ID
myTabPage.Controls.Add(Pos_tbox)
Dim Pos_lbl As New Label
Pos_lbl.Top = y_pos
Pos_lbl.Left = 120
Pos_lbl.Name = "Basket_Pos_lb_" & Control_ID
Pos_lbl.Text = "Position"
myTabPage.Controls.Add(Pos_lbl)
Dim Depth_tbox As New TextBox
Depth_tbox.Top = y_pos
Depth_tbox.Left = 320
Depth_tbox.Width = 60
Depth_tbox.Name = "Basket_Depth_tb_" & Control_ID
myTabPage.Controls.Add(Depth_tbox)
Dim Depth_lbl As New Label
Depth_lbl.Top = y_pos
Depth_lbl.Left = 260
Depth_lbl.Name = "Basket_Depth_lb_" & Control_ID
Depth_lbl.Text = "Depth"
myTabPage.Controls.Add(Depth_lbl)
Dim Height_cmb As New ComboBox
Height_cmb.Top = y_pos
Height_cmb.Left = 460
Height_cmb.Width = 60
Height_cmb.Name = "Basket_Height_cmb_" & Control_ID
Height_cmb.Items.Add("150")
Height_cmb.Items.Add("300")
Height_cmb.Items.Add("450")
myTabPage.Controls.Add(Height_cmb)
Dim Height_lbl As New Label
Height_lbl.Top = y_pos
Height_lbl.Left = 400
Height_lbl.Name = "Basket_Height_lb_" & Control_ID
Height_lbl.Text = "Height"
myTabPage.Controls.Add(Height_lbl)
End Sub
Sub add_shelf()
'Setting an ID of the item
Control_ID += 1
' Geting the active tabpage and the location where to put the label
Dim myTabPage As TabPage
Dim TabContSec As TabControl
TabContSec = Section_gui
myTabPage = TabContSec.SelectedTab
Dim y_pos = get_latest_position(myTabPage)
y_pos = y_pos + 30
'adding the new controls
Dim Shelf_lbl As New Label
Shelf_lbl.Top = y_pos
Shelf_lbl.Left = 10
Shelf_lbl.Name = "Item_Shelf_" & Control_ID
Shelf_lbl.Text = "Shelf"
myTabPage.Controls.Add(Shelf_lbl)
Dim Pos_tbox As New TextBox
Pos_tbox.Top = y_pos
Pos_tbox.Left = 180
Pos_tbox.Width = 60
Pos_tbox.Name = "Shelf_Pos_tb_" & Control_ID
myTabPage.Controls.Add(Pos_tbox)
Dim Pos_lbl As New Label
Pos_lbl.Top = y_pos
Pos_lbl.Left = 120
Pos_lbl.Name = "Shelf_Pos_lb_" & Control_ID
Pos_lbl.Text = "Position"
myTabPage.Controls.Add(Pos_lbl)
Dim Depth_tbox As New TextBox
Depth_tbox.Top = y_pos
Depth_tbox.Left = 320
Depth_tbox.Width = 60
Depth_tbox.Name = "Shelf_Depth_tb_" & Control_ID
myTabPage.Controls.Add(Depth_tbox)
Dim Depth_lbl As New Label
Depth_lbl.Top = y_pos
Depth_lbl.Left = 260
Depth_lbl.Name = "Shelf_Depth_lb_" & Control_ID
Depth_lbl.Text = "Depth"
myTabPage.Controls.Add(Depth_lbl)
Dim Type_cmb As New ComboBox
Type_cmb.Top = y_pos
Type_cmb.Left = 460
Type_cmb.Width = 60
Type_cmb.Name = "Shelf_type_cmb_" & Control_ID
Type_cmb.Items.Add("Flat")
Type_cmb.Items.Add("Wire")
myTabPage.Controls.Add(Type_cmb)
Dim Height_lbl As New Label
Height_lbl.Top = y_pos
Height_lbl.Left = 400
Height_lbl.Name = "Shelf_type_lb_" & Control_ID
Height_lbl.Text = "Type"
myTabPage.Controls.Add(Height_lbl)
End Sub
Sub add_drying_rack()
'Setting an ID of the item
Control_ID += 1
' Geting the active tabpage and the location where to put the label
Dim myTabPage As TabPage
Dim TabContSec As TabControl
TabContSec = Section_gui
myTabPage = TabContSec.SelectedTab
Dim y_pos = get_latest_position(myTabPage)
y_pos = y_pos + 30
'adding the new controls
Dim Drying_lbl As New Label
Drying_lbl.Top = y_pos
Drying_lbl.Left = 10
Drying_lbl.Name = "Item_Drying_" & Control_ID
Drying_lbl.Text = "Drying Rack"
myTabPage.Controls.Add(Drying_lbl)
Dim Pos_tbox As New TextBox
Pos_tbox.Top = y_pos
Pos_tbox.Left = 180
Pos_tbox.Width = 60
Pos_tbox.Name = "Drying_Pos_tb_" & Control_ID
myTabPage.Controls.Add(Pos_tbox)
Dim Pos_lbl As New Label
Pos_lbl.Top = y_pos
Pos_lbl.Left = 120
Pos_lbl.Name = "Drying_Pos_lb_" & Control_ID
Pos_lbl.Text = "Position"
myTabPage.Controls.Add(Pos_lbl)
Dim Right_cb As New CheckBox
Right_cb.Top = y_pos
Right_cb.Left = 380
Right_cb.Name = "Drying_Right_cb_" & Control_ID
Right_cb.Text = "Right"
myTabPage.Controls.Add(Right_cb)
Dim Mid_cb As New CheckBox
Mid_cb.Top = y_pos
Mid_cb.Left = 320
Mid_cb.Name = "Drying_mid_cb_" & Control_ID
Mid_cb.Text = "Mid"
myTabPage.Controls.Add(Mid_cb)
Dim Left_cb As New CheckBox
Left_cb.Top = y_pos
Left_cb.Left = 260
Left_cb.Name = "Drying_left_cb_" & Control_ID
Left_cb.Text = "Left"
myTabPage.Controls.Add(Left_cb)
End Sub
Function get_latest_position(myTabPage)
Dim Y_pos As Integer = 0
For Each ctl As Control In myTabPage.Controls
If ctl.Location.Y > Y_pos Then
Y_pos = ctl.Location.Y
End If
Next
Return Y_pos
End Function
Function Populate_table_from_GUI()
' creating a set of tables, the data in the tables will be one row per item in the GUI and one table per section tab
Dim Input As New DataSet
Dim sectionTable As New DataTable
sectionTable.Columns.Add("Section_width")
sectionTable.Columns.Add("Section_height")
sectionTable.Columns.Add("Type")
sectionTable.Columns.Add("Position")
sectionTable.Columns.Add("Depth")
sectionTable.Columns.Add("Item_Height")
sectionTable.Columns.Add("Type_of_shelf")
sectionTable.Columns.Add("Quantity")
sectionTable.Columns.Add("Right")
sectionTable.Columns.Add("Mid")
sectionTable.Columns.Add("Left")
' loop through all the tabs in the tab control and get the data
Dim TabContSec As TabControl
TabContSec = Section_gui
For i = 0 To TabContSec.TabCount - 1
sectionTable.Clear()
sectionTable.TableName = "Section_" & i + 1
Dim MyTabPage = TabContSec.TabPages(i)
TabContSec.SelectedTab = MyTabPage
' Geting the data of the section
Dim section_width = MyTabPage.Controls("Width_tb").Text
Dim section_height = MyTabPage.Controls("Height_tb").Text
For Each c As Control In MyTabPage.Controls
' using the name of the Item label to get the Item ID and type
If c.Name.Contains("Item") Then
Dim Splitname = c.Name.Split("_")
Dim Item_Type = Splitname(1)
Dim Item_ID = Splitname(2)
Dim ItemRowNr As Integer
' adding a new row for the new item and start populating relevent colums with info from the GUI
sectionTable.Rows.Add()
ItemRowNr = sectionTable.Rows.Count - 1
sectionTable.Rows(ItemRowNr)("Section_width") = section_width
sectionTable.Rows(ItemRowNr)("Section_height") = section_height
sectionTable.Rows(ItemRowNr)("Type") = Item_Type
If Item_Type = "Basket" Then
sectionTable.Rows(ItemRowNr)("Position") = MyTabPage.Controls("Basket_Pos_tb_" & Item_ID).Text
sectionTable.Rows(ItemRowNr)("Depth") = MyTabPage.Controls("Basket_Depth_tb_" & Item_ID).Text
sectionTable.Rows(ItemRowNr)("Item_Height") = MyTabPage.Controls("Basket_Height_cmb_" & Item_ID).Text
ElseIf Item_Type = "Hanger" Then
sectionTable.Rows(ItemRowNr)("Position") = MyTabPage.Controls("Hanger_Pos_tb_" & Item_ID).Text
ElseIf Item_Type = "Hooks" Then
sectionTable.Rows(ItemRowNr)("Position") = MyTabPage.Controls("Hooks_Pos_tb_" & Item_ID).Text
sectionTable.Rows(ItemRowNr)("Quantity") = MyTabPage.Controls("Hooks_Nr_tb_" & Item_ID).Text
ElseIf Item_Type = "Drying" Then
sectionTable.Rows(ItemRowNr)("Position") = MyTabPage.Controls("Drying_Pos_tb_" & Item_ID).Text
Dim CB As CheckBox
CB = MyTabPage.Controls("Drying_Right_cb_" & Item_ID)
sectionTable.Rows(ItemRowNr)("Right") = CB.Checked
CB = MyTabPage.Controls("Drying_mid_cb_" & Item_ID)
sectionTable.Rows(ItemRowNr)("Mid") = CB.Checked
CB = MyTabPage.Controls("Drying_left_cb_" & Item_ID)
sectionTable.Rows(ItemRowNr)("Left") = CB.Checked
ElseIf Item_Type = "Shelf" Then
sectionTable.Rows(ItemRowNr)("Position") = MyTabPage.Controls("Shelf_Pos_tb_" & Item_ID).Text
sectionTable.Rows(ItemRowNr)("Depth") = MyTabPage.Controls("Shelf_Depth_tb_" & Item_ID).Text
sectionTable.Rows(ItemRowNr)("Type_of_shelf") = MyTabPage.Controls("Shelf_type_cmb_" & Item_ID).Text
End If
End If
Next
Input.Tables.Add(sectionTable.Copy)
Next
Return Input
End Function
Private Sub Rail_btn_Click(sender As Object, e As EventArgs) Handles Rail_btn.Click
add_section()
End Sub
Private Sub Del_rail_btn_Click(sender As Object, e As EventArgs) Handles Del_rail_btn.Click
Del_section()
End Sub
Private Sub Hanger_btn_Click(sender As Object, e As EventArgs) Handles Hanger_btn.Click
add_hanger()
End Sub
Private Sub Hooks_btn_Click(sender As Object, e As EventArgs) Handles Hooks_btn.Click
add_hooks()
End Sub
Private Sub Basket_btn_Click(sender As Object, e As EventArgs) Handles Basket_btn.Click
add_basket()
End Sub
Private Sub Shelf_btn_Click(sender As Object, e As EventArgs) Handles Shelf_btn.Click
add_shelf()
End Sub
Private Sub Drying_btn_Click(sender As Object, e As EventArgs) Handles Drying_btn.Click
add_drying_rack()
End Sub
Private Sub Build_btn_Click(sender As Object, e As EventArgs) Handles Build_btn.Click
adminClass.loadSettings("C:\Users\Asus_station3\Desktop", "D:\OneDrive - XperDi AB\XperDi\DLL_Test\Wardrobe", "SolidWorks")
XCCBaseClass.newDesign()
'comment test
ExternalClass.PopulateTamplateXMLGroup()
Dim Input As DataSet
Input = Populate_table_from_GUI()
Program.Add_Parts(Input)
importClass.copyGroupsByDataSet(ExternalClass.groupds_new)
Dim GrNr = groupClass.NewGroupID
Dim Design_table = designModel.selectDesign("*")
Dim Design_name = Design_table.rows(0)("designName") '"135_0922244" 'CADLinkerClass.New_Design_Name '
groupClass.InstantiateGroup(Design_name, GrNr, "START")
'
End Sub
Private Sub Update_KB_Click(sender As Object, e As EventArgs) Handles Update_KB.Click
Program.UpdateKB()
End Sub
End Class

52
Wardrobe/GUI/AppForm.Designer.vb generated Normal file
View File

@ -0,0 +1,52 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
Partial Class AppForm
Inherits System.Windows.Forms.Form
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()>
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()>
Private Sub InitializeComponent()
Me.Panel_Start = New System.Windows.Forms.Panel()
Me.SuspendLayout()
'
'Panel_Start
'
Me.Panel_Start.Location = New System.Drawing.Point(0, 0)
Me.Panel_Start.Margin = New System.Windows.Forms.Padding(4)
Me.Panel_Start.Name = "Panel_Start"
Me.Panel_Start.Size = New System.Drawing.Size(1860, 950)
Me.Panel_Start.TabIndex = 0
'
'AppForm
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(8.0!, 16.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.ClientSize = New System.Drawing.Size(1845, 937)
Me.Controls.Add(Me.Panel_Start)
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle
Me.Margin = New System.Windows.Forms.Padding(4)
Me.MaximizeBox = False
Me.Name = "AppForm"
Me.Text = "AppForm"
Me.ResumeLayout(False)
End Sub
Friend WithEvents Panel_Start As Panel
End Class

121
Wardrobe/GUI/AppForm.resx Normal file
View File

@ -0,0 +1,121 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don
t support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

92
Wardrobe/GUI/AppForm.vb Normal file
View File

@ -0,0 +1,92 @@
Imports XCCLibrary
Imports System.Environment
Public Class AppForm
Public Shared fillMode As Boolean
Public Shared appDataPath As String
Sub AppForm_Load() Handles MyBase.Load
Dim appData As String = GetFolderPath(SpecialFolder.ApplicationData)
Dim appDataDir As New IO.DirectoryInfo(appData & "\Floor Grating Configurator")
appDataPath = appDataDir.FullName
If Not appDataDir.Exists Then
System.IO.Directory.CreateDirectory(appDataPath)
System.IO.File.Create(appDataPath & "\SavedData.txt").Dispose()
End If
Dim savedData As String() = System.IO.File.ReadAllLines(appDataPath & "\SavedData.txt")
For i = 0 To savedData.Length - 1
If savedData(i) = Settings.exportFolderHead Then
Settings.exportFolder = savedData(i + 1)
ElseIf savedData(i) = Settings.KBUpdateTimeHead Then
Settings.KBUpdateTime = savedData(i + 1)
ElseIf savedData(i) = Settings.SRNameHead Then
Settings.SRName = savedData(i + 1)
ElseIf savedData(i) = Settings.SRPhoneHead Then
Settings.SRPhone = savedData(i + 1)
ElseIf savedData(i) = Settings.SRMailHead Then
Settings.SRMail = savedData(i + 1)
End If
Next
Main_Menu.PictureBox_Settings.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_Settings1
Main_Menu.PictureBox_CreateOrder.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_CreateOrder3_01
Main_Menu.PictureBox_Individual.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_Individual3_01
Main_Menu.PictureBox_Multiple.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_Multiple3_01
Settings.Check_Settings()
Dim appDir As String = Application.StartupPath
Dim appDirArray As String() = appDir.Split("\")
For i = 0 To appDirArray.Length - 5
If i = appDirArray.Length - 5 Then
Settings.filesFolder += appDirArray(i)
Else
Settings.filesFolder += appDirArray(i) & "\"
End If
Next
For i = 0 To appDirArray.Length - 4
If i = appDirArray.Length - 4 Then
Settings.HLCtFolder += appDirArray(i)
Else
Settings.HLCtFolder += appDirArray(i) & "\"
End If
Next
Me.Width = 800
Me.Height = 500
Me.Top = 170
Me.Left = 350
Panel_Start.Controls.Clear()
Main_Menu.TopLevel = False
Panel_Start.Controls.Add(Main_Menu)
Main_Menu.Show()
' Get floor gratings database
Database.Retrive_Database()
' Initialize DataTables, Measurments and more
Data.Init_Data()
' Initialize DrawingPanel
Draw_Grating.Load_DrawingPanel()
' Load XCC settings
adminClass.loadSettings(Settings.filesFolder, Settings.HLCtFolder, "SolidWorks")
Grating_Configurator.ComboBox_Type.Items.Add("Pressure Welded")
Grating_Configurator.ComboBox_Type.Items.Add("Type A")
For i = 25 To 55 Step 5
Grating_Configurator.ComboBox_Frame.Items.Add(i & " x " & i)
Next
For i = 65 To 85 Step 10
Grating_Configurator.ComboBox_Frame.Items.Add(i & " x " & i)
Next
End Sub
End Class

View File

@ -0,0 +1,333 @@
Public Class Draw_Grating
Public Shared guiPanelL, guiPanelW As Integer
Public Shared DirSymbolPoints As New List(Of Integer())
Private Shared ArrowSymbolPoints As New Dictionary(Of String, Integer())
Public Shared measureLabels As New Dictionary(Of String, Integer())
Public Shared sideSquareMesLine As New Dictionary(Of String, Integer())
Public Shared Sub Load_DrawingPanel()
AddHandler Grating_Configurator.Panel_Grating.Paint, AddressOf DrawingPanel_Paint
Get_DrawboxParameters()
Create_DirSymbolPoints()
Create_ArrowSymbolPoints()
' Initialize start points
Data.Init_GrossAreaPoints()
Data.Init_GratingPoints()
Update_GratingPoints()
End Sub
' --- Retrive parameters for the drawing box ---
Private Shared Sub Get_DrawboxParameters()
guiPanelL = Grating_Configurator.Panel_Grating.Size.Width
guiPanelW = Grating_Configurator.Panel_Grating.Size.Height
Data.guiPanelMidX = guiPanelL / 2
Data.guiPanelMidY = guiPanelW / 2
Data.guiMaxDrawL = guiPanelL - 80
Data.guiMaxDrawW = guiPanelW - 110
Data.drawAR = Data.guiMaxDrawL / Data.guiMaxDrawW
Data.gratingAR = Data.gratingL / Data.gratingW
End Sub
' --- Create points for grating direction symbol ---
Private Shared Sub Create_DirSymbolPoints()
'DirSymbolPoints.Add({-27 + Data.guiPanelMidX, -2 + Data.guiPanelMidY})
'DirSymbolPoints.Add({17 + Data.guiPanelMidX, -2 + Data.guiPanelMidY})
'DirSymbolPoints.Add({9 + Data.guiPanelMidX, -10 + Data.guiPanelMidY})
'DirSymbolPoints.Add({12 + Data.guiPanelMidX, -13 + Data.guiPanelMidY})
'DirSymbolPoints.Add({27 + Data.guiPanelMidX, 2 + Data.guiPanelMidY})
'DirSymbolPoints.Add({-17 + Data.guiPanelMidX, 2 + Data.guiPanelMidY})
'DirSymbolPoints.Add({-9 + Data.guiPanelMidX, 10 + Data.guiPanelMidY})
'DirSymbolPoints.Add({-12 + Data.guiPanelMidX, 13 + Data.guiPanelMidY})
'DirSymbolPoints.Add({-27 + Data.guiPanelMidX, -2 + Data.guiPanelMidY})
DirSymbolPoints.Add({-17 + Data.guiPanelMidX, -10 + Data.guiPanelMidY})
DirSymbolPoints.Add({-27 + Data.guiPanelMidX, Data.guiPanelMidY})
DirSymbolPoints.Add({27 + Data.guiPanelMidX, Data.guiPanelMidY})
DirSymbolPoints.Add({17 + Data.guiPanelMidX, 10 + Data.guiPanelMidY})
End Sub
' --- Create points for arrow symbol ---
Private Shared Sub Create_ArrowSymbolPoints()
Dim offset As Integer = 20
ArrowSymbolPoints.Add("p1", {offset, guiPanelW - offset})
ArrowSymbolPoints.Add("p2", {offset, guiPanelW - offset - 40})
ArrowSymbolPoints.Add("p3", {offset - 5, guiPanelW - offset - 35})
ArrowSymbolPoints.Add("p4", {offset, guiPanelW - offset - 40})
ArrowSymbolPoints.Add("p5", {offset + 5, guiPanelW - offset - 35})
ArrowSymbolPoints.Add("p6", {offset, guiPanelW - offset - 40})
ArrowSymbolPoints.Add("p7", {offset, guiPanelW - offset})
ArrowSymbolPoints.Add("p8", {offset + 40, guiPanelW - offset})
ArrowSymbolPoints.Add("p9", {offset + 35, guiPanelW - offset - 5})
ArrowSymbolPoints.Add("p10", {offset + 40, guiPanelW - offset})
ArrowSymbolPoints.Add("p11", {offset + 35, guiPanelW - offset + 5})
End Sub
' --- Updates all the gratings points ---
Public Shared Sub Update_GratingPoints()
Data.gratingAR = Data.gratingL / Data.gratingW
If Data.gratingAR < Data.drawAR Then
' Change draw width
Data.scaleDiff = Data.gratingW / Data.guiMaxDrawW
' Gross area points
Data.grossAreaPoints.Rows(0)("GUI X") = Data.guiPanelMidX - Data.gratingL / (Data.scaleDiff * 2)
Data.grossAreaPoints.Rows(0)("GUI Y") = Data.guiPanelMidY - Data.guiMaxDrawW / 2
Data.grossAreaPoints.Rows(1)("GUI X") = Data.guiPanelMidX + Data.gratingL / (Data.scaleDiff * 2)
Data.grossAreaPoints.Rows(1)("GUI Y") = Data.guiPanelMidY - Data.guiMaxDrawW / 2
Data.grossAreaPoints.Rows(2)("GUI X") = Data.guiPanelMidX + Data.gratingL / (Data.scaleDiff * 2)
Data.grossAreaPoints.Rows(2)("GUI Y") = Data.guiPanelMidY + Data.guiMaxDrawW / 2
Data.grossAreaPoints.Rows(3)("GUI X") = Data.guiPanelMidX - Data.gratingL / (Data.scaleDiff * 2)
Data.grossAreaPoints.Rows(3)("GUI Y") = Data.guiPanelMidY + Data.guiMaxDrawW / 2
' Grating points
Data.gratingPoints.Rows(0)("GUI X") = Data.guiPanelMidX - Data.gratingL / (Data.scaleDiff * 2)
Data.gratingPoints.Rows(0)("GUI Y") = Data.guiPanelMidY - Data.guiMaxDrawW / 2
Data.gratingPoints.Rows(1)("GUI X") = Data.guiPanelMidX + Data.gratingL / (Data.scaleDiff * 2)
Data.gratingPoints.Rows(1)("GUI Y") = Data.guiPanelMidY - Data.guiMaxDrawW / 2
Data.gratingPoints.Rows(2)("GUI X") = Data.guiPanelMidX + Data.gratingL / (Data.scaleDiff * 2)
Data.gratingPoints.Rows(2)("GUI Y") = Data.guiPanelMidY + Data.guiMaxDrawW / 2
Data.gratingPoints.Rows(3)("GUI X") = Data.guiPanelMidX - Data.gratingL / (Data.scaleDiff * 2)
Data.gratingPoints.Rows(3)("GUI Y") = Data.guiPanelMidY + Data.guiMaxDrawW / 2
Else
' Change draw height
Data.scaleDiff = Data.gratingL / Data.guiMaxDrawL
' Gross area points
Data.grossAreaPoints.Rows(0)("GUI X") = Data.guiPanelMidX - Data.guiMaxDrawL / 2
Data.grossAreaPoints.Rows(0)("GUI Y") = Data.guiPanelMidY - Data.gratingW / (Data.scaleDiff * 2)
Data.grossAreaPoints.Rows(1)("GUI X") = Data.guiPanelMidX + Data.guiMaxDrawL / 2
Data.grossAreaPoints.Rows(1)("GUI Y") = Data.guiPanelMidY - Data.gratingW / (Data.scaleDiff * 2)
Data.grossAreaPoints.Rows(2)("GUI X") = Data.guiPanelMidX + Data.guiMaxDrawL / 2
Data.grossAreaPoints.Rows(2)("GUI Y") = Data.guiPanelMidY + Data.gratingW / (Data.scaleDiff * 2)
Data.grossAreaPoints.Rows(3)("GUI X") = Data.guiPanelMidX - Data.guiMaxDrawL / 2
Data.grossAreaPoints.Rows(3)("GUI Y") = Data.guiPanelMidY + Data.gratingW / (Data.scaleDiff * 2)
' Grating points
Data.gratingPoints.Rows(0)("GUI X") = Data.guiPanelMidX - Data.guiMaxDrawL / 2
Data.gratingPoints.Rows(0)("GUI Y") = Data.guiPanelMidY - Data.gratingW / (Data.scaleDiff * 2)
Data.gratingPoints.Rows(1)("GUI X") = Data.guiPanelMidX + Data.guiMaxDrawL / 2
Data.gratingPoints.Rows(1)("GUI Y") = Data.guiPanelMidY - Data.gratingW / (Data.scaleDiff * 2)
Data.gratingPoints.Rows(2)("GUI X") = Data.guiPanelMidX + Data.guiMaxDrawL / 2
Data.gratingPoints.Rows(2)("GUI Y") = Data.guiPanelMidY + Data.gratingW / (Data.scaleDiff * 2)
Data.gratingPoints.Rows(3)("GUI X") = Data.guiPanelMidX - Data.guiMaxDrawL / 2
Data.gratingPoints.Rows(3)("GUI Y") = Data.guiPanelMidY + Data.gratingW / (Data.scaleDiff * 2)
End If
' Gross area points
Data.grossAreaPoints.Rows(0)("X") = (-Data.gratingL / 2) / 1000
Data.grossAreaPoints.Rows(0)("Y") = (Data.gratingW / 2) / 1000
Data.grossAreaPoints.Rows(1)("X") = (Data.gratingL / 2) / 1000
Data.grossAreaPoints.Rows(1)("Y") = (Data.gratingW / 2) / 1000
Data.grossAreaPoints.Rows(2)("X") = (Data.gratingL / 2) / 1000
Data.grossAreaPoints.Rows(2)("Y") = (-Data.gratingW / 2) / 1000
Data.grossAreaPoints.Rows(3)("X") = (-Data.gratingL / 2) / 1000
Data.grossAreaPoints.Rows(3)("Y") = (-Data.gratingW / 2) / 1000
' Grating points
Data.gratingPoints.Rows(0)("X") = (-Data.gratingL / 2) / 1000
Data.gratingPoints.Rows(0)("Y") = (Data.gratingW / 2) / 1000
Data.gratingPoints.Rows(1)("X") = (Data.gratingL / 2) / 1000
Data.gratingPoints.Rows(1)("Y") = (Data.gratingW / 2) / 1000
Data.gratingPoints.Rows(2)("X") = (Data.gratingL / 2) / 1000
Data.gratingPoints.Rows(2)("Y") = (-Data.gratingW / 2) / 1000
Data.gratingPoints.Rows(3)("X") = (-Data.gratingL / 2) / 1000
Data.gratingPoints.Rows(3)("Y") = (-Data.gratingW / 2) / 1000
Grating_Configurator.Panel_Grating.Refresh()
End Sub
' --- Draw all the lines for the panel and grating ---
Public Shared Sub DrawingPanel_Paint(sender As Object, e As PaintEventArgs)
Draw_Grating(e.Graphics, 7)
' Draw arrow symbol
Dim symPen As Pen = New Pen(Color.Black, 1)
For i = 1 To ArrowSymbolPoints.Count - 1
e.Graphics.DrawLine(symPen, ArrowSymbolPoints("p" & i)(0), ArrowSymbolPoints("p" & i)(1),
ArrowSymbolPoints("p" & i + 1)(0), ArrowSymbolPoints("p" & i + 1)(1))
Next
End Sub
Public Shared Sub Draw_ForExport(g As Graphics, fontSize As Integer)
Draw_Grating(g, fontSize)
Dim textFont As Font = New Font("Microsoft Sans Serif", 12)
g.DrawString(Grating_Configurator.Label_Line_Grating.Text, textFont, Brushes.Black,
Grating_Configurator.Label_Line_Grating.Location)
g.DrawString(Grating_Configurator.Label_Line_Grid.Text, textFont, Brushes.Black,
Grating_Configurator.Label_Line_Grid.Location)
g.DrawString(Grating_Configurator.Label_Line_Beams.Text, textFont, Brushes.Black,
Grating_Configurator.Label_Line_Beams.Location)
g.DrawString(Grating_Configurator.Label_Line_AngleRecess.Text, textFont, Brushes.Black,
Grating_Configurator.Label_Line_AngleRecess.Location)
End Sub
Public Shared Sub Draw_Grating(g As Graphics, fontSize As Integer)
' Draw grating gross area (red)
Dim penCon As Pen = New Pen(Color.Red, 2)
penCon.DashPattern = {4, 6}
g.DrawLine(penCon, Data.grossAreaPoints(0)("GUI X"), Data.grossAreaPoints(0)("GUI Y"),
Data.grossAreaPoints(1)("GUI X"), Data.grossAreaPoints(1)("GUI Y"))
g.DrawLine(penCon, Data.grossAreaPoints(1)("GUI X"), Data.grossAreaPoints(1)("GUI Y"),
Data.grossAreaPoints(2)("GUI X"), Data.grossAreaPoints(2)("GUI Y"))
g.DrawLine(penCon, Data.grossAreaPoints(2)("GUI X"), Data.grossAreaPoints(2)("GUI Y"),
Data.grossAreaPoints(3)("GUI X"), Data.grossAreaPoints(3)("GUI Y"))
g.DrawLine(penCon, Data.grossAreaPoints(3)("GUI X"), Data.grossAreaPoints(3)("GUI Y"),
Data.grossAreaPoints(0)("GUI X"), Data.grossAreaPoints(0)("GUI Y"))
' Draw grating direction symbol
Dim symPen As Pen = New Pen(Color.Black, 2)
For i = 0 To DirSymbolPoints.Count - 2
g.DrawLine(symPen, DirSymbolPoints(i)(0), DirSymbolPoints(i)(1),
DirSymbolPoints(i + 1)(0), DirSymbolPoints(i + 1)(1))
Next
' Draw measure labels
For i = 0 To measureLabels.Count - 1
Dim mesName As String = measureLabels.Keys(i)
g.DrawString(measureLabels(mesName)(0), New Font("Microsoft Sans Serif", fontSize), Brushes.Black,
New Point(measureLabels(mesName)(1), measureLabels(mesName)(2)))
Next
'Stöd measurement linje för sidesquare and middlesquare
Dim penMes As Pen = New Pen(Color.FromArgb(60, 33, 107, 77), 1)
For i = 0 To sideSquareMesLine.Count - 1
Dim mesName As String = sideSquareMesLine.Keys(i)
g.DrawLine(penMes, sideSquareMesLine(mesName)(0), sideSquareMesLine(mesName)(1),
sideSquareMesLine(mesName)(2), sideSquareMesLine(mesName)(3))
If Data.pointsMeasurements(mesName)(2) = 1 OrElse Data.pointsMeasurements(mesName)(2) = 3 Then
g.DrawLine(penMes, sideSquareMesLine(mesName)(0), sideSquareMesLine(mesName)(1) + 2,
sideSquareMesLine(mesName)(0), sideSquareMesLine(mesName)(1) - 2)
g.DrawLine(penMes, sideSquareMesLine(mesName)(2), sideSquareMesLine(mesName)(1) + 2,
sideSquareMesLine(mesName)(2), sideSquareMesLine(mesName)(1) - 2)
Else
g.DrawLine(penMes, sideSquareMesLine(mesName)(0) + 2, sideSquareMesLine(mesName)(1),
sideSquareMesLine(mesName)(0) - 2, sideSquareMesLine(mesName)(1))
g.DrawLine(penMes, sideSquareMesLine(mesName)(0) + 2, sideSquareMesLine(mesName)(3),
sideSquareMesLine(mesName)(0) - 2, sideSquareMesLine(mesName)(3))
End If
Next
' Draw angle recess help lines
Dim Pendot As Pen = New Pen(Color.Gray, 1)
Pendot.DashPattern = {2, 4}
For i = 0 To Data.angleRecessPoints.Rows.Count - 1
Dim angleQuadrant As String = Data.angleRecessPoints.Rows(i)("QUADRANT")
Dim p1XGUI, p1YGUI, p2XGUI, p2YGUI As Integer
For Each DR As DataRow In Data.gratingPoints.Rows
If DR("NAME").Split("_")(0) = "CA" & i + 1 Then
Dim index As Integer = Data.gratingPoints.Rows.IndexOf(DR)
p1XGUI = Data.gratingPoints.Rows(index)("GUI X")
p1YGUI = Data.gratingPoints.Rows(index)("GUI Y")
p2XGUI = Data.gratingPoints.Rows(index + 1)("GUI X")
p2YGUI = Data.gratingPoints.Rows(index + 1)("GUI Y")
Exit For
End If
Next
g.DrawLine(Pendot, Data.angleRecessPoints.Rows(i)("GUI X"), Data.angleRecessPoints.Rows(i)("GUI Y"),
p1XGUI, p1YGUI)
g.DrawLine(Pendot, Data.angleRecessPoints.Rows(i)("GUI X"), Data.angleRecessPoints.Rows(i)("GUI Y"),
p2XGUI, p2YGUI)
Next
' Draw grating grid for fill area
If AppForm.fillMode Then
Dim dashPen As Pen = New Pen(Color.DarkGray, 1)
dashPen.DashPattern = {6, 4}
'Vertical lines
Dim singleLength As Integer = Calculate_Fill_Grid.gratingLength / Data.scaleDiff
For i = 0 To Calculate_Fill_Grid.numOfHorizontal - 2
Dim x As Integer = Data.grossAreaPoints.Rows(0)("GUI X") + singleLength * (i + 1)
Dim y1 As Integer = Data.grossAreaPoints.Rows(0)("GUI Y")
Dim y2 As Integer = Data.grossAreaPoints.Rows(3)("GUI Y")
g.DrawLine(dashPen, x, y1, x, y2)
Next
'Horizontal lines
Dim singleWidth As Integer = 1000 / Data.scaleDiff 'Calculate_Fill_Grid.gratingWidth
For i = 0 To Calculate_Fill_Grid.numOfVertical - 2
Dim y As Integer = Data.grossAreaPoints.Rows(0)("GUI Y") + singleWidth * (i + 1)
Dim x1 As Integer = Data.grossAreaPoints.Rows(0)("GUI X")
Dim x2 As Integer = Data.grossAreaPoints.Rows(1)("GUI X")
g.DrawLine(dashPen, x1, y, x2, y)
Next
'Support beams
Dim supportPen As Pen = New Pen(Color.LightPink, 4)
For i = 0 To Calculate_Fill_Grid.supportBeamsDT.Rows.Count - 1
If Calculate_Fill_Grid.supportBeamsDT.Rows(i)("TYPE") = "Extra" Then
Dim x As Integer = Data.grossAreaPoints.Rows(0)("GUI X") + Calculate_Fill_Grid.supportBeamsDT.Rows(i)("GLOBAL_OFFSET") / Data.scaleDiff
Dim y1 As Integer = Data.grossAreaPoints.Rows(0)("GUI Y")
Dim y2 As Integer = Data.grossAreaPoints.Rows(3)("GUI Y")
g.DrawLine(supportPen, x, y1, x, y2)
End If
Next
End If
' Draw actual grating (black)
Dim pen As Pen = New Pen(Color.Black, 2)
For i = 0 To Data.gratingPoints.Rows.Count - 1
Dim pTemp1(2) As Integer
Dim pTemp2(2) As Integer
pTemp1(0) = Data.gratingPoints.Rows(i)("GUI X")
pTemp1(1) = Data.gratingPoints.Rows(i)("GUI Y")
Try
pTemp2(0) = Data.gratingPoints.Rows(i + 1)("GUI X")
pTemp2(1) = Data.gratingPoints.Rows(i + 1)("GUI Y")
Catch ex As Exception
pTemp2(0) = Data.gratingPoints.Rows(0)("GUI X")
pTemp2(1) = Data.gratingPoints.Rows(0)("GUI Y")
End Try
g.DrawLine(pen, pTemp1(0), pTemp1(1), pTemp2(0), pTemp2(1))
Next
For i = 0 To Data.gratingMiddlePoints.Rows.Count - 1
Dim pTemp1(2) As Integer
Dim pTemp2(2) As Integer
pTemp1(0) = Data.gratingMiddlePoints.Rows(i)("GUI X")
pTemp1(1) = Data.gratingMiddlePoints.Rows(i)("GUI Y")
If (i + 1) Mod 4 = 0 Then
pTemp2(0) = Data.gratingMiddlePoints.Rows(i - 3)("GUI X")
pTemp2(1) = Data.gratingMiddlePoints.Rows(i - 3)("GUI Y")
Else
pTemp2(0) = Data.gratingMiddlePoints.Rows(i + 1)("GUI X")
pTemp2(1) = Data.gratingMiddlePoints.Rows(i + 1)("GUI Y")
End If
g.DrawLine(pen, pTemp1(0), pTemp1(1), pTemp2(0), pTemp2(1))
Next
' Draw line explainations
g.DrawLine(New Pen(Color.Black, 2), 220, guiPanelW - 20, 250, guiPanelW - 20) ' Grating Line (full black)
Dim gridPen As Pen = New Pen(Color.DarkGray, 1)
gridPen.DashPattern = {6, 4}
g.DrawLine(gridPen, 400, guiPanelW - 20, 434, guiPanelW - 20) ' Grid Line (Dashed black)
g.DrawLine(New Pen(Color.LightPink, 4), 580, guiPanelW - 20, 610, guiPanelW - 20) ' Support beams Line (full pink)
g.DrawLine(penMes, 760, guiPanelW - 16, 792, guiPanelW - 16) ' Dimension help Line (Full gray)
g.DrawLine(Pendot, 760, guiPanelW - 24, 792, guiPanelW - 24) ' Angle recess help Line (dashed gray)
End Sub
End Class

264
Wardrobe/GUI/Export.Designer.vb generated Normal file
View File

@ -0,0 +1,264 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
Partial Class Export
Inherits System.Windows.Forms.Form
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()> _
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()> _
Private Sub InitializeComponent()
Me.CheckBox_3DModel = New System.Windows.Forms.CheckBox()
Me.CheckBox_FrameDrawing = New System.Windows.Forms.CheckBox()
Me.CheckBox_GratingDrawing = New System.Windows.Forms.CheckBox()
Me.CheckBox_Instructions = New System.Windows.Forms.CheckBox()
Me.Label1 = New System.Windows.Forms.Label()
Me.CheckBox_3DModel_SW = New System.Windows.Forms.CheckBox()
Me.CheckBox_3DModel_STEP = New System.Windows.Forms.CheckBox()
Me.Label2 = New System.Windows.Forms.Label()
Me.Label3 = New System.Windows.Forms.Label()
Me.CheckBox_Quote = New System.Windows.Forms.CheckBox()
Me.Panel1 = New System.Windows.Forms.Panel()
Me.Panel2 = New System.Windows.Forms.Panel()
Me.Panel3 = New System.Windows.Forms.Panel()
Me.PictureBox_Export = New System.Windows.Forms.PictureBox()
Me.Panel3.SuspendLayout()
CType(Me.PictureBox_Export, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'CheckBox_3DModel
'
Me.CheckBox_3DModel.AutoSize = True
Me.CheckBox_3DModel.BackColor = System.Drawing.SystemColors.ControlDark
Me.CheckBox_3DModel.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.CheckBox_3DModel.ForeColor = System.Drawing.SystemColors.ControlLightLight
Me.CheckBox_3DModel.Location = New System.Drawing.Point(37, 90)
Me.CheckBox_3DModel.Margin = New System.Windows.Forms.Padding(3, 2, 3, 2)
Me.CheckBox_3DModel.Name = "CheckBox_3DModel"
Me.CheckBox_3DModel.Size = New System.Drawing.Size(154, 24)
Me.CheckBox_3DModel.TabIndex = 37
Me.CheckBox_3DModel.Text = "Grating + Frame"
Me.CheckBox_3DModel.UseVisualStyleBackColor = False
'
'CheckBox_FrameDrawing
'
Me.CheckBox_FrameDrawing.AutoSize = True
Me.CheckBox_FrameDrawing.BackColor = System.Drawing.SystemColors.ControlDark
Me.CheckBox_FrameDrawing.Enabled = False
Me.CheckBox_FrameDrawing.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.CheckBox_FrameDrawing.ForeColor = System.Drawing.SystemColors.ControlLightLight
Me.CheckBox_FrameDrawing.Location = New System.Drawing.Point(412, 75)
Me.CheckBox_FrameDrawing.Margin = New System.Windows.Forms.Padding(3, 2, 3, 2)
Me.CheckBox_FrameDrawing.Name = "CheckBox_FrameDrawing"
Me.CheckBox_FrameDrawing.Size = New System.Drawing.Size(166, 24)
Me.CheckBox_FrameDrawing.TabIndex = 36
Me.CheckBox_FrameDrawing.Text = "Frame Instrucions"
Me.CheckBox_FrameDrawing.UseVisualStyleBackColor = False
'
'CheckBox_GratingDrawing
'
Me.CheckBox_GratingDrawing.AutoSize = True
Me.CheckBox_GratingDrawing.BackColor = System.Drawing.SystemColors.ControlDark
Me.CheckBox_GratingDrawing.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.CheckBox_GratingDrawing.ForeColor = System.Drawing.SystemColors.ControlLightLight
Me.CheckBox_GratingDrawing.Location = New System.Drawing.Point(253, 90)
Me.CheckBox_GratingDrawing.Margin = New System.Windows.Forms.Padding(3, 2, 3, 2)
Me.CheckBox_GratingDrawing.Name = "CheckBox_GratingDrawing"
Me.CheckBox_GratingDrawing.Size = New System.Drawing.Size(86, 24)
Me.CheckBox_GratingDrawing.TabIndex = 35
Me.CheckBox_GratingDrawing.Text = "Grating"
Me.CheckBox_GratingDrawing.UseVisualStyleBackColor = False
'
'CheckBox_Instructions
'
Me.CheckBox_Instructions.AutoSize = True
Me.CheckBox_Instructions.BackColor = System.Drawing.SystemColors.ControlDark
Me.CheckBox_Instructions.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.CheckBox_Instructions.ForeColor = System.Drawing.SystemColors.ControlLightLight
Me.CheckBox_Instructions.Location = New System.Drawing.Point(412, 109)
Me.CheckBox_Instructions.Margin = New System.Windows.Forms.Padding(3, 2, 3, 2)
Me.CheckBox_Instructions.Name = "CheckBox_Instructions"
Me.CheckBox_Instructions.Size = New System.Drawing.Size(196, 24)
Me.CheckBox_Instructions.TabIndex = 33
Me.CheckBox_Instructions.Text = "Assembly Instructions"
Me.CheckBox_Instructions.UseVisualStyleBackColor = False
'
'Label1
'
Me.Label1.AutoSize = True
Me.Label1.BackColor = System.Drawing.SystemColors.ControlDark
Me.Label1.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label1.Location = New System.Drawing.Point(33, 53)
Me.Label1.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(100, 20)
Me.Label1.TabIndex = 39
Me.Label1.Text = "3D-Models"
'
'CheckBox_3DModel_SW
'
Me.CheckBox_3DModel_SW.AutoSize = True
Me.CheckBox_3DModel_SW.BackColor = System.Drawing.SystemColors.ControlDark
Me.CheckBox_3DModel_SW.Checked = True
Me.CheckBox_3DModel_SW.CheckState = System.Windows.Forms.CheckState.Checked
Me.CheckBox_3DModel_SW.Enabled = False
Me.CheckBox_3DModel_SW.ForeColor = System.Drawing.SystemColors.ControlLightLight
Me.CheckBox_3DModel_SW.Location = New System.Drawing.Point(59, 122)
Me.CheckBox_3DModel_SW.Margin = New System.Windows.Forms.Padding(3, 2, 3, 2)
Me.CheckBox_3DModel_SW.Name = "CheckBox_3DModel_SW"
Me.CheckBox_3DModel_SW.Size = New System.Drawing.Size(101, 21)
Me.CheckBox_3DModel_SW.TabIndex = 40
Me.CheckBox_3DModel_SW.Text = "SolidWorks"
Me.CheckBox_3DModel_SW.UseVisualStyleBackColor = False
Me.CheckBox_3DModel_SW.Visible = False
'
'CheckBox_3DModel_STEP
'
Me.CheckBox_3DModel_STEP.AutoSize = True
Me.CheckBox_3DModel_STEP.BackColor = System.Drawing.SystemColors.ControlDark
Me.CheckBox_3DModel_STEP.ForeColor = System.Drawing.SystemColors.ControlLightLight
Me.CheckBox_3DModel_STEP.Location = New System.Drawing.Point(59, 148)
Me.CheckBox_3DModel_STEP.Margin = New System.Windows.Forms.Padding(3, 2, 3, 2)
Me.CheckBox_3DModel_STEP.Name = "CheckBox_3DModel_STEP"
Me.CheckBox_3DModel_STEP.Size = New System.Drawing.Size(66, 21)
Me.CheckBox_3DModel_STEP.TabIndex = 41
Me.CheckBox_3DModel_STEP.Text = "STEP"
Me.CheckBox_3DModel_STEP.UseVisualStyleBackColor = False
Me.CheckBox_3DModel_STEP.Visible = False
'
'Label2
'
Me.Label2.AutoSize = True
Me.Label2.BackColor = System.Drawing.SystemColors.ControlDark
Me.Label2.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label2.Location = New System.Drawing.Point(249, 53)
Me.Label2.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label2.Name = "Label2"
Me.Label2.Size = New System.Drawing.Size(88, 20)
Me.Label2.TabIndex = 42
Me.Label2.Text = "Drawings"
'
'Label3
'
Me.Label3.AutoSize = True
Me.Label3.BackColor = System.Drawing.SystemColors.ControlDark
Me.Label3.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label3.Location = New System.Drawing.Point(424, 53)
Me.Label3.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label3.Name = "Label3"
Me.Label3.Size = New System.Drawing.Size(56, 20)
Me.Label3.TabIndex = 43
Me.Label3.Text = "Other"
'
'CheckBox_Quote
'
Me.CheckBox_Quote.AutoSize = True
Me.CheckBox_Quote.BackColor = System.Drawing.SystemColors.ControlDark
Me.CheckBox_Quote.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.CheckBox_Quote.ForeColor = System.Drawing.SystemColors.ControlLightLight
Me.CheckBox_Quote.Location = New System.Drawing.Point(412, 141)
Me.CheckBox_Quote.Margin = New System.Windows.Forms.Padding(3, 2, 3, 2)
Me.CheckBox_Quote.Name = "CheckBox_Quote"
Me.CheckBox_Quote.Size = New System.Drawing.Size(76, 24)
Me.CheckBox_Quote.TabIndex = 44
Me.CheckBox_Quote.Text = "Quote"
Me.CheckBox_Quote.UseVisualStyleBackColor = False
'
'Panel1
'
Me.Panel1.BackColor = System.Drawing.SystemColors.ActiveCaptionText
Me.Panel1.Location = New System.Drawing.Point(240, 49)
Me.Panel1.Margin = New System.Windows.Forms.Padding(4)
Me.Panel1.Name = "Panel1"
Me.Panel1.Size = New System.Drawing.Size(1, 222)
Me.Panel1.TabIndex = 49
'
'Panel2
'
Me.Panel2.BackColor = System.Drawing.SystemColors.ActiveCaptionText
Me.Panel2.Location = New System.Drawing.Point(415, 49)
Me.Panel2.Margin = New System.Windows.Forms.Padding(4)
Me.Panel2.Name = "Panel2"
Me.Panel2.Size = New System.Drawing.Size(1, 222)
Me.Panel2.TabIndex = 50
'
'Panel3
'
Me.Panel3.BackColor = System.Drawing.SystemColors.ControlDark
Me.Panel3.Controls.Add(Me.PictureBox_Export)
Me.Panel3.Controls.Add(Me.CheckBox_Quote)
Me.Panel3.Controls.Add(Me.CheckBox_Instructions)
Me.Panel3.Controls.Add(Me.CheckBox_FrameDrawing)
Me.Panel3.Location = New System.Drawing.Point(16, 15)
Me.Panel3.Margin = New System.Windows.Forms.Padding(4)
Me.Panel3.Name = "Panel3"
Me.Panel3.Size = New System.Drawing.Size(637, 340)
Me.Panel3.TabIndex = 52
'
'PictureBox_Export
'
Me.PictureBox_Export.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_Export1_01
Me.PictureBox_Export.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
Me.PictureBox_Export.Location = New System.Drawing.Point(251, 275)
Me.PictureBox_Export.Name = "PictureBox_Export"
Me.PictureBox_Export.Size = New System.Drawing.Size(122, 50)
Me.PictureBox_Export.TabIndex = 0
Me.PictureBox_Export.TabStop = False
'
'Export
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(8.0!, 16.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.BackColor = System.Drawing.SystemColors.ControlDarkDark
Me.ClientSize = New System.Drawing.Size(667, 369)
Me.Controls.Add(Me.Panel2)
Me.Controls.Add(Me.Panel1)
Me.Controls.Add(Me.Label3)
Me.Controls.Add(Me.Label2)
Me.Controls.Add(Me.CheckBox_3DModel_STEP)
Me.Controls.Add(Me.CheckBox_3DModel_SW)
Me.Controls.Add(Me.Label1)
Me.Controls.Add(Me.CheckBox_3DModel)
Me.Controls.Add(Me.CheckBox_GratingDrawing)
Me.Controls.Add(Me.Panel3)
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
Me.Margin = New System.Windows.Forms.Padding(4)
Me.Name = "Export"
Me.Text = "Export"
Me.Panel3.ResumeLayout(False)
Me.Panel3.PerformLayout()
CType(Me.PictureBox_Export, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents CheckBox_3DModel As CheckBox
Friend WithEvents CheckBox_FrameDrawing As CheckBox
Friend WithEvents CheckBox_GratingDrawing As CheckBox
Friend WithEvents CheckBox_Instructions As CheckBox
Friend WithEvents Label1 As Label
Friend WithEvents CheckBox_3DModel_SW As CheckBox
Friend WithEvents CheckBox_3DModel_STEP As CheckBox
Friend WithEvents Label2 As Label
Friend WithEvents Label3 As Label
Friend WithEvents CheckBox_Quote As CheckBox
Friend WithEvents Panel1 As Panel
Friend WithEvents Panel2 As Panel
Friend WithEvents Panel3 As Panel
Friend WithEvents PictureBox_Export As PictureBox
End Class

120
Wardrobe/GUI/Export.resx Normal file
View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

162
Wardrobe/GUI/Export.vb Normal file
View File

@ -0,0 +1,162 @@
Public Class Export
Private Sub CheckBox_3DModel_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox_3DModel.CheckedChanged
If User_Input.add3DGrating = True Then
User_Input.add3DGrating = False
CheckBox_3DModel_SW.Visible = False
CheckBox_3DModel_STEP.Visible = False
Else
User_Input.add3DGrating = True
CheckBox_3DModel_SW.Visible = True
CheckBox_3DModel_STEP.Visible = True
End If
End Sub
Private Sub CheckBox_3DModel_STEP_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox_3DModel_STEP.CheckedChanged
If User_Input.add3DStep = True Then
User_Input.add3DStep = False
Else
User_Input.add3DStep = True
End If
End Sub
Private Sub CheckBox_GratingDrawing_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox_GratingDrawing.CheckedChanged
If User_Input.addGratingDrawing = True Then
User_Input.addGratingDrawing = False
Else
User_Input.addGratingDrawing = True
End If
End Sub
Private Sub CheckBox_FrameDrawing_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox_FrameDrawing.CheckedChanged
If User_Input.addFrameDrawing = True Then
User_Input.addFrameDrawing = False
Else
User_Input.addFrameDrawing = True
End If
End Sub
Private Sub CheckBox_Instructions_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox_Instructions.CheckedChanged
If User_Input.addInstructions = True Then
User_Input.addInstructions = False
Else
User_Input.addInstructions = True
End If
End Sub
Private Sub CheckBox_Quote_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox_Quote.CheckedChanged
If User_Input.addQuote = True Then
User_Input.addQuote = False
Else
User_Input.addQuote = True
End If
End Sub
' ---------------------------------- Export Button ----------------------------------
Private Sub Button_Export_SW_Click(sender As Object, e As EventArgs) Handles PictureBox_Export.Click
Cursor.Current = Cursors.WaitCursor
If AppForm.fillMode Then
Calculate_Fill_Grid.Calculate_Grid()
Dim frameCreated As Boolean = False
If User_Input.add3DGrating = True Then
Multiple_3D.BuildGrid()
frameCreated = True
End If
Dim simplifiedCreated As Boolean = False
If User_Input.addGratingDrawing = True Then
Multiple_3D_Simplified.Build_Grid(False)
simplifiedCreated = True
Multiple_Drawing.Generate_Drawing()
End If
Dim simplifiedWithFrameCreated As Boolean = False
If User_Input.addFrameDrawing = True Then
If frameCreated = False Then
Multiple_3D_Simplified.Build_Grid(True)
simplifiedWithFrameCreated = True
End If
For Each DR As DataRow In Frame_3D.frameDT.Rows
If DR("TYPE") = "SIDE" Then
Frame_3D.Generate_End_Frame_Pieces()
Frame_Drawing.Create_Assemblies(simplifiedWithFrameCreated)
Frame_Drawing.Generate_Drawings()
Exit For
End If
Next
End If
If User_Input.addInstructions = True Then
If User_Input.addFrame = True AndAlso simplifiedWithFrameCreated = False Then
Multiple_3D_Simplified.Build_Grid(True)
ElseIf simplifiedWithFrameCreated = False Then
Multiple_3D_Simplified.Build_Grid(False)
simplifiedCreated = True
End If
If simplifiedCreated = False Then
Multiple_3D_Simplified.Build_Grid(False)
End If
Instructions.Generate_Instructions(User_Input.addFrame)
End If
Else
Dim frameCreated As Boolean = False
If User_Input.add3DGrating = True Then
Individual_3D.BuildGrating()
frameCreated = True
End If
If User_Input.addGratingDrawing = True Then
Individual_Drawing.Generate_Drawing()
End If
Dim simplifiedWithFrameCreated As Boolean = False
If User_Input.addFrameDrawing = True Then
If frameCreated = False Then
Individual_3D_Simplified.Build_Simplified(True)
simplifiedWithFrameCreated = True
End If
For Each DR As DataRow In Frame_3D.frameDT.Rows
If DR("TYPE") = "SIDE" Then
Frame_3D.Generate_End_Frame_Pieces()
Frame_Drawing.Create_Assemblies(simplifiedWithFrameCreated)
Frame_Drawing.Generate_Drawings()
Exit For
End If
Next
End If
Dim simplifiedCreated As Boolean = False
If User_Input.addInstructions = True Then
If User_Input.addFrame = True AndAlso simplifiedWithFrameCreated = False Then
Individual_3D_Simplified.Build_Simplified(True)
ElseIf simplifiedWithFrameCreated = False Then
Individual_3D_Simplified.Build_Simplified(False)
simplifiedCreated = True
End If
If simplifiedCreated = False Then
Individual_3D_Simplified.Build_Simplified(False)
End If
Instructions.Generate_Instructions(User_Input.addFrame)
End If
End If
If User_Input.addQuote = True Then
GUI_Export.Generate_Quote()
End If
Cursor.Current = Cursors.Default
Me.Close()
End Sub
Private Sub PictureBox_Export_MouseEnter(sender As Object, e As EventArgs) Handles PictureBox_Export.MouseEnter
PictureBox_Export.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_Export2_01
PictureBox_Export.Cursor = Cursors.Hand
End Sub
Private Sub PictureBox_Export_MouseLeave(sender As Object, e As EventArgs) Handles PictureBox_Export.MouseLeave
PictureBox_Export.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_Export1_01
PictureBox_Export.Cursor = Cursors.Default
End Sub
End Class

View File

@ -0,0 +1,723 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
Partial Class Grating_Configurator
Inherits System.Windows.Forms.Form
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()>
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()>
Private Sub InitializeComponent()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(Grating_Configurator))
Me.Panel_Data = New System.Windows.Forms.Panel()
Me.PictureBox_CalculateGrid = New System.Windows.Forms.PictureBox()
Me.PictureBox_ExportMenu = New System.Windows.Forms.PictureBox()
Me.CheckBox_CutFrame = New System.Windows.Forms.CheckBox()
Me.PictureBox_ConfigType = New System.Windows.Forms.PictureBox()
Me.Label_ConfigType = New System.Windows.Forms.Label()
Me.CheckBox_Frames = New System.Windows.Forms.CheckBox()
Me.Label_Frame = New System.Windows.Forms.Label()
Me.ComboBox_Frame = New System.Windows.Forms.ComboBox()
Me.TextBox_Width = New System.Windows.Forms.TextBox()
Me.ComboBox_Width = New System.Windows.Forms.ComboBox()
Me.Label7 = New System.Windows.Forms.Label()
Me.Label_WidthUnit = New System.Windows.Forms.Label()
Me.Label5 = New System.Windows.Forms.Label()
Me.Label4 = New System.Windows.Forms.Label()
Me.Label3 = New System.Windows.Forms.Label()
Me.Label_Heading = New System.Windows.Forms.Label()
Me.Label_Material = New System.Windows.Forms.Label()
Me.Label_Mesh = New System.Windows.Forms.Label()
Me.Label_Height = New System.Windows.Forms.Label()
Me.Label_Thickness = New System.Windows.Forms.Label()
Me.Label_Width = New System.Windows.Forms.Label()
Me.Label_Length = New System.Windows.Forms.Label()
Me.Label_Type = New System.Windows.Forms.Label()
Me.TextBox_Length = New System.Windows.Forms.TextBox()
Me.ComboBox_Mesh = New System.Windows.Forms.ComboBox()
Me.ComboBox_Thickness = New System.Windows.Forms.ComboBox()
Me.ComboBox_Height = New System.Windows.Forms.ComboBox()
Me.ComboBox_Material = New System.Windows.Forms.ComboBox()
Me.ComboBox_Type = New System.Windows.Forms.ComboBox()
Me.Panel_Recesses = New System.Windows.Forms.Panel()
Me.Button_Radius = New System.Windows.Forms.Button()
Me.Button_Square_Middle = New System.Windows.Forms.Button()
Me.Button_Angle_Side = New System.Windows.Forms.Button()
Me.Button_Square_Side = New System.Windows.Forms.Button()
Me.Button_Square_Corner = New System.Windows.Forms.Button()
Me.Button_Angle_Corner = New System.Windows.Forms.Button()
Me.Label_Recesses = New System.Windows.Forms.Label()
Me.Panel_Grating = New System.Windows.Forms.Panel()
Me.Label_Line_AngleRecess = New System.Windows.Forms.Label()
Me.Label_Line_Beams = New System.Windows.Forms.Label()
Me.Label_Line_Grid = New System.Windows.Forms.Label()
Me.Label_Line_Grating = New System.Windows.Forms.Label()
Me.Label2 = New System.Windows.Forms.Label()
Me.Label1 = New System.Windows.Forms.Label()
Me.Panel_Data.SuspendLayout()
CType(Me.PictureBox_CalculateGrid, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.PictureBox_ExportMenu, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.PictureBox_ConfigType, System.ComponentModel.ISupportInitialize).BeginInit()
Me.Panel_Recesses.SuspendLayout()
Me.Panel_Grating.SuspendLayout()
Me.SuspendLayout()
'
'Panel_Data
'
Me.Panel_Data.BackColor = System.Drawing.Color.FromArgb(CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer))
Me.Panel_Data.Controls.Add(Me.PictureBox_CalculateGrid)
Me.Panel_Data.Controls.Add(Me.PictureBox_ExportMenu)
Me.Panel_Data.Controls.Add(Me.CheckBox_CutFrame)
Me.Panel_Data.Controls.Add(Me.PictureBox_ConfigType)
Me.Panel_Data.Controls.Add(Me.Label_ConfigType)
Me.Panel_Data.Controls.Add(Me.CheckBox_Frames)
Me.Panel_Data.Controls.Add(Me.Label_Frame)
Me.Panel_Data.Controls.Add(Me.ComboBox_Frame)
Me.Panel_Data.Controls.Add(Me.TextBox_Width)
Me.Panel_Data.Controls.Add(Me.ComboBox_Width)
Me.Panel_Data.Controls.Add(Me.Label7)
Me.Panel_Data.Controls.Add(Me.Label_WidthUnit)
Me.Panel_Data.Controls.Add(Me.Label5)
Me.Panel_Data.Controls.Add(Me.Label4)
Me.Panel_Data.Controls.Add(Me.Label3)
Me.Panel_Data.Controls.Add(Me.Label_Heading)
Me.Panel_Data.Controls.Add(Me.Label_Material)
Me.Panel_Data.Controls.Add(Me.Label_Mesh)
Me.Panel_Data.Controls.Add(Me.Label_Height)
Me.Panel_Data.Controls.Add(Me.Label_Thickness)
Me.Panel_Data.Controls.Add(Me.Label_Width)
Me.Panel_Data.Controls.Add(Me.Label_Length)
Me.Panel_Data.Controls.Add(Me.Label_Type)
Me.Panel_Data.Controls.Add(Me.TextBox_Length)
Me.Panel_Data.Controls.Add(Me.ComboBox_Mesh)
Me.Panel_Data.Controls.Add(Me.ComboBox_Thickness)
Me.Panel_Data.Controls.Add(Me.ComboBox_Height)
Me.Panel_Data.Controls.Add(Me.ComboBox_Material)
Me.Panel_Data.Controls.Add(Me.ComboBox_Type)
Me.Panel_Data.Location = New System.Drawing.Point(0, 0)
Me.Panel_Data.Margin = New System.Windows.Forms.Padding(0)
Me.Panel_Data.Name = "Panel_Data"
Me.Panel_Data.Size = New System.Drawing.Size(420, 950)
Me.Panel_Data.TabIndex = 0
'
'PictureBox_CalculateGrid
'
Me.PictureBox_CalculateGrid.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_UpdateGrid1_01
Me.PictureBox_CalculateGrid.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
Me.PictureBox_CalculateGrid.Location = New System.Drawing.Point(147, 708)
Me.PictureBox_CalculateGrid.Name = "PictureBox_CalculateGrid"
Me.PictureBox_CalculateGrid.Size = New System.Drawing.Size(186, 43)
Me.PictureBox_CalculateGrid.TabIndex = 43
Me.PictureBox_CalculateGrid.TabStop = False
'
'PictureBox_ExportMenu
'
Me.PictureBox_ExportMenu.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_ExportMenu1_01
Me.PictureBox_ExportMenu.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
Me.PictureBox_ExportMenu.Location = New System.Drawing.Point(101, 823)
Me.PictureBox_ExportMenu.Name = "PictureBox_ExportMenu"
Me.PictureBox_ExportMenu.Size = New System.Drawing.Size(214, 50)
Me.PictureBox_ExportMenu.TabIndex = 42
Me.PictureBox_ExportMenu.TabStop = False
'
'CheckBox_CutFrame
'
Me.CheckBox_CutFrame.AutoSize = True
Me.CheckBox_CutFrame.ForeColor = System.Drawing.SystemColors.ControlLightLight
Me.CheckBox_CutFrame.Location = New System.Drawing.Point(147, 725)
Me.CheckBox_CutFrame.Margin = New System.Windows.Forms.Padding(3, 2, 3, 2)
Me.CheckBox_CutFrame.Name = "CheckBox_CutFrame"
Me.CheckBox_CutFrame.Size = New System.Drawing.Size(129, 21)
Me.CheckBox_CutFrame.TabIndex = 41
Me.CheckBox_CutFrame.Text = "Pre-Cut Frames"
Me.CheckBox_CutFrame.UseVisualStyleBackColor = True
Me.CheckBox_CutFrame.Visible = False
'
'PictureBox_ConfigType
'
Me.PictureBox_ConfigType.BackgroundImage = CType(resources.GetObject("PictureBox_ConfigType.BackgroundImage"), System.Drawing.Image)
Me.PictureBox_ConfigType.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
Me.PictureBox_ConfigType.Location = New System.Drawing.Point(300, 44)
Me.PictureBox_ConfigType.Margin = New System.Windows.Forms.Padding(4)
Me.PictureBox_ConfigType.Name = "PictureBox_ConfigType"
Me.PictureBox_ConfigType.Size = New System.Drawing.Size(53, 38)
Me.PictureBox_ConfigType.TabIndex = 37
Me.PictureBox_ConfigType.TabStop = False
'
'Label_ConfigType
'
Me.Label_ConfigType.AutoSize = True
Me.Label_ConfigType.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label_ConfigType.ForeColor = System.Drawing.SystemColors.ControlLightLight
Me.Label_ConfigType.Location = New System.Drawing.Point(31, 64)
Me.Label_ConfigType.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label_ConfigType.Name = "Label_ConfigType"
Me.Label_ConfigType.Size = New System.Drawing.Size(142, 20)
Me.Label_ConfigType.TabIndex = 36
Me.Label_ConfigType.Text = "- Single Grating"
'
'CheckBox_Frames
'
Me.CheckBox_Frames.AutoSize = True
Me.CheckBox_Frames.ForeColor = System.Drawing.SystemColors.ControlLightLight
Me.CheckBox_Frames.Location = New System.Drawing.Point(147, 661)
Me.CheckBox_Frames.Margin = New System.Windows.Forms.Padding(3, 2, 3, 2)
Me.CheckBox_Frames.Name = "CheckBox_Frames"
Me.CheckBox_Frames.Size = New System.Drawing.Size(106, 21)
Me.CheckBox_Frames.TabIndex = 35
Me.CheckBox_Frames.Text = "Add Frames"
Me.CheckBox_Frames.UseVisualStyleBackColor = True
'
'Label_Frame
'
Me.Label_Frame.AutoSize = True
Me.Label_Frame.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label_Frame.ForeColor = System.Drawing.SystemColors.ControlLightLight
Me.Label_Frame.Location = New System.Drawing.Point(31, 688)
Me.Label_Frame.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label_Frame.Name = "Label_Frame"
Me.Label_Frame.Size = New System.Drawing.Size(99, 20)
Me.Label_Frame.TabIndex = 34
Me.Label_Frame.Text = "Frame WxH"
'
'ComboBox_Frame
'
Me.ComboBox_Frame.BackColor = System.Drawing.SystemColors.ScrollBar
Me.ComboBox_Frame.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.ComboBox_Frame.Enabled = False
Me.ComboBox_Frame.FormattingEnabled = True
Me.ComboBox_Frame.Location = New System.Drawing.Point(147, 688)
Me.ComboBox_Frame.Margin = New System.Windows.Forms.Padding(4)
Me.ComboBox_Frame.Name = "ComboBox_Frame"
Me.ComboBox_Frame.Size = New System.Drawing.Size(205, 24)
Me.ComboBox_Frame.TabIndex = 33
'
'TextBox_Width
'
Me.TextBox_Width.BackColor = System.Drawing.Color.FromArgb(CType(CType(224, Byte), Integer), CType(CType(224, Byte), Integer), CType(CType(224, Byte), Integer))
Me.TextBox_Width.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.TextBox_Width.Location = New System.Drawing.Point(147, 572)
Me.TextBox_Width.Margin = New System.Windows.Forms.Padding(4)
Me.TextBox_Width.Name = "TextBox_Width"
Me.TextBox_Width.Size = New System.Drawing.Size(206, 22)
Me.TextBox_Width.TabIndex = 26
'
'ComboBox_Width
'
Me.ComboBox_Width.BackColor = System.Drawing.SystemColors.ScrollBar
Me.ComboBox_Width.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.ComboBox_Width.FormattingEnabled = True
Me.ComboBox_Width.Location = New System.Drawing.Point(147, 572)
Me.ComboBox_Width.Margin = New System.Windows.Forms.Padding(4)
Me.ComboBox_Width.Name = "ComboBox_Width"
Me.ComboBox_Width.Size = New System.Drawing.Size(205, 24)
Me.ComboBox_Width.TabIndex = 25
'
'Label7
'
Me.Label7.AutoSize = True
Me.Label7.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label7.ForeColor = System.Drawing.SystemColors.ControlLightLight
Me.Label7.Location = New System.Drawing.Point(359, 495)
Me.Label7.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label7.Name = "Label7"
Me.Label7.Size = New System.Drawing.Size(30, 17)
Me.Label7.TabIndex = 24
Me.Label7.Text = "mm"
'
'Label_WidthUnit
'
Me.Label_WidthUnit.AutoSize = True
Me.Label_WidthUnit.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label_WidthUnit.ForeColor = System.Drawing.SystemColors.ControlLightLight
Me.Label_WidthUnit.Location = New System.Drawing.Point(359, 576)
Me.Label_WidthUnit.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label_WidthUnit.Name = "Label_WidthUnit"
Me.Label_WidthUnit.Size = New System.Drawing.Size(30, 17)
Me.Label_WidthUnit.TabIndex = 23
Me.Label_WidthUnit.Text = "mm"
'
'Label5
'
Me.Label5.AutoSize = True
Me.Label5.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label5.ForeColor = System.Drawing.SystemColors.ControlLightLight
Me.Label5.Location = New System.Drawing.Point(359, 404)
Me.Label5.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label5.Name = "Label5"
Me.Label5.Size = New System.Drawing.Size(30, 17)
Me.Label5.TabIndex = 22
Me.Label5.Text = "mm"
'
'Label4
'
Me.Label4.AutoSize = True
Me.Label4.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label4.ForeColor = System.Drawing.SystemColors.ControlLightLight
Me.Label4.Location = New System.Drawing.Point(359, 346)
Me.Label4.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label4.Name = "Label4"
Me.Label4.Size = New System.Drawing.Size(30, 17)
Me.Label4.TabIndex = 21
Me.Label4.Text = "mm"
'
'Label3
'
Me.Label3.AutoSize = True
Me.Label3.Font = New System.Drawing.Font("Microsoft Sans Serif", 8.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label3.ForeColor = System.Drawing.SystemColors.ControlLightLight
Me.Label3.Location = New System.Drawing.Point(359, 292)
Me.Label3.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label3.Name = "Label3"
Me.Label3.Size = New System.Drawing.Size(30, 17)
Me.Label3.TabIndex = 20
Me.Label3.Text = "mm"
'
'Label_Heading
'
Me.Label_Heading.AutoSize = True
Me.Label_Heading.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label_Heading.ForeColor = System.Drawing.SystemColors.ControlLightLight
Me.Label_Heading.Location = New System.Drawing.Point(29, 31)
Me.Label_Heading.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label_Heading.Name = "Label_Heading"
Me.Label_Heading.Size = New System.Drawing.Size(198, 25)
Me.Label_Heading.TabIndex = 15
Me.Label_Heading.Text = "Grating Parameters"
'
'Label_Material
'
Me.Label_Material.AutoSize = True
Me.Label_Material.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label_Material.ForeColor = System.Drawing.Color.White
Me.Label_Material.Location = New System.Drawing.Point(61, 176)
Me.Label_Material.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label_Material.Name = "Label_Material"
Me.Label_Material.Size = New System.Drawing.Size(69, 20)
Me.Label_Material.TabIndex = 14
Me.Label_Material.Text = "Material"
'
'Label_Mesh
'
Me.Label_Mesh.AutoSize = True
Me.Label_Mesh.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label_Mesh.ForeColor = System.Drawing.SystemColors.ControlLightLight
Me.Label_Mesh.Location = New System.Drawing.Point(41, 287)
Me.Label_Mesh.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label_Mesh.Name = "Label_Mesh"
Me.Label_Mesh.Size = New System.Drawing.Size(88, 20)
Me.Label_Mesh.TabIndex = 13
Me.Label_Mesh.Text = "Mesh Size"
'
'Label_Height
'
Me.Label_Height.AutoSize = True
Me.Label_Height.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label_Height.ForeColor = System.Drawing.SystemColors.ControlLightLight
Me.Label_Height.Location = New System.Drawing.Point(73, 343)
Me.Label_Height.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label_Height.Name = "Label_Height"
Me.Label_Height.Size = New System.Drawing.Size(58, 20)
Me.Label_Height.TabIndex = 12
Me.Label_Height.Text = "Height"
'
'Label_Thickness
'
Me.Label_Thickness.AutoSize = True
Me.Label_Thickness.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label_Thickness.ForeColor = System.Drawing.SystemColors.ControlLightLight
Me.Label_Thickness.Location = New System.Drawing.Point(43, 399)
Me.Label_Thickness.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label_Thickness.Name = "Label_Thickness"
Me.Label_Thickness.Size = New System.Drawing.Size(85, 20)
Me.Label_Thickness.TabIndex = 11
Me.Label_Thickness.Text = "Thickness"
'
'Label_Width
'
Me.Label_Width.AutoSize = True
Me.Label_Width.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label_Width.ForeColor = System.Drawing.SystemColors.ControlLightLight
Me.Label_Width.Location = New System.Drawing.Point(80, 572)
Me.Label_Width.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label_Width.Name = "Label_Width"
Me.Label_Width.Size = New System.Drawing.Size(52, 20)
Me.Label_Width.TabIndex = 10
Me.Label_Width.Text = "Width"
'
'Label_Length
'
Me.Label_Length.AutoSize = True
Me.Label_Length.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label_Length.ForeColor = System.Drawing.SystemColors.ControlLightLight
Me.Label_Length.Location = New System.Drawing.Point(69, 490)
Me.Label_Length.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label_Length.Name = "Label_Length"
Me.Label_Length.Size = New System.Drawing.Size(60, 20)
Me.Label_Length.TabIndex = 9
Me.Label_Length.Text = "Length"
'
'Label_Type
'
Me.Label_Type.AutoSize = True
Me.Label_Type.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.75!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label_Type.ForeColor = System.Drawing.SystemColors.ControlLightLight
Me.Label_Type.Location = New System.Drawing.Point(85, 124)
Me.Label_Type.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label_Type.Name = "Label_Type"
Me.Label_Type.Size = New System.Drawing.Size(45, 20)
Me.Label_Type.TabIndex = 8
Me.Label_Type.Text = "Type"
'
'TextBox_Length
'
Me.TextBox_Length.BackColor = System.Drawing.Color.FromArgb(CType(CType(224, Byte), Integer), CType(CType(224, Byte), Integer), CType(CType(224, Byte), Integer))
Me.TextBox_Length.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.TextBox_Length.Location = New System.Drawing.Point(147, 490)
Me.TextBox_Length.Margin = New System.Windows.Forms.Padding(4)
Me.TextBox_Length.Name = "TextBox_Length"
Me.TextBox_Length.Size = New System.Drawing.Size(206, 22)
Me.TextBox_Length.TabIndex = 7
'
'ComboBox_Mesh
'
Me.ComboBox_Mesh.BackColor = System.Drawing.SystemColors.ScrollBar
Me.ComboBox_Mesh.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.ComboBox_Mesh.FormattingEnabled = True
Me.ComboBox_Mesh.Location = New System.Drawing.Point(147, 287)
Me.ComboBox_Mesh.Margin = New System.Windows.Forms.Padding(4)
Me.ComboBox_Mesh.Name = "ComboBox_Mesh"
Me.ComboBox_Mesh.Size = New System.Drawing.Size(205, 24)
Me.ComboBox_Mesh.TabIndex = 6
'
'ComboBox_Thickness
'
Me.ComboBox_Thickness.BackColor = System.Drawing.SystemColors.ScrollBar
Me.ComboBox_Thickness.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.ComboBox_Thickness.FormattingEnabled = True
Me.ComboBox_Thickness.Location = New System.Drawing.Point(147, 398)
Me.ComboBox_Thickness.Margin = New System.Windows.Forms.Padding(4)
Me.ComboBox_Thickness.Name = "ComboBox_Thickness"
Me.ComboBox_Thickness.Size = New System.Drawing.Size(205, 24)
Me.ComboBox_Thickness.TabIndex = 3
'
'ComboBox_Height
'
Me.ComboBox_Height.BackColor = System.Drawing.SystemColors.ScrollBar
Me.ComboBox_Height.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.ComboBox_Height.FormattingEnabled = True
Me.ComboBox_Height.Location = New System.Drawing.Point(147, 342)
Me.ComboBox_Height.Margin = New System.Windows.Forms.Padding(4)
Me.ComboBox_Height.Name = "ComboBox_Height"
Me.ComboBox_Height.Size = New System.Drawing.Size(205, 24)
Me.ComboBox_Height.TabIndex = 2
'
'ComboBox_Material
'
Me.ComboBox_Material.BackColor = System.Drawing.SystemColors.ScrollBar
Me.ComboBox_Material.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.ComboBox_Material.FormattingEnabled = True
Me.ComboBox_Material.Location = New System.Drawing.Point(147, 175)
Me.ComboBox_Material.Margin = New System.Windows.Forms.Padding(4)
Me.ComboBox_Material.Name = "ComboBox_Material"
Me.ComboBox_Material.Size = New System.Drawing.Size(205, 24)
Me.ComboBox_Material.TabIndex = 1
'
'ComboBox_Type
'
Me.ComboBox_Type.BackColor = System.Drawing.SystemColors.ScrollBar
Me.ComboBox_Type.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.ComboBox_Type.FormattingEnabled = True
Me.ComboBox_Type.Location = New System.Drawing.Point(147, 124)
Me.ComboBox_Type.Margin = New System.Windows.Forms.Padding(4)
Me.ComboBox_Type.Name = "ComboBox_Type"
Me.ComboBox_Type.Size = New System.Drawing.Size(205, 24)
Me.ComboBox_Type.TabIndex = 0
'
'Panel_Recesses
'
Me.Panel_Recesses.BackColor = System.Drawing.Color.Gray
Me.Panel_Recesses.Controls.Add(Me.Button_Radius)
Me.Panel_Recesses.Controls.Add(Me.Button_Square_Middle)
Me.Panel_Recesses.Controls.Add(Me.Button_Angle_Side)
Me.Panel_Recesses.Controls.Add(Me.Button_Square_Side)
Me.Panel_Recesses.Controls.Add(Me.Button_Square_Corner)
Me.Panel_Recesses.Controls.Add(Me.Button_Angle_Corner)
Me.Panel_Recesses.Controls.Add(Me.Label_Recesses)
Me.Panel_Recesses.Location = New System.Drawing.Point(0, 0)
Me.Panel_Recesses.Margin = New System.Windows.Forms.Padding(4)
Me.Panel_Recesses.Name = "Panel_Recesses"
Me.Panel_Recesses.Size = New System.Drawing.Size(1860, 148)
Me.Panel_Recesses.TabIndex = 1
'
'Button_Radius
'
Me.Button_Radius.BackColor = System.Drawing.Color.Transparent
Me.Button_Radius.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Radius
Me.Button_Radius.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
Me.Button_Radius.Enabled = False
Me.Button_Radius.FlatAppearance.BorderColor = System.Drawing.Color.Black
Me.Button_Radius.FlatAppearance.BorderSize = 0
Me.Button_Radius.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.Button_Radius.Location = New System.Drawing.Point(900, 31)
Me.Button_Radius.Margin = New System.Windows.Forms.Padding(4)
Me.Button_Radius.Name = "Button_Radius"
Me.Button_Radius.Size = New System.Drawing.Size(93, 86)
Me.Button_Radius.TabIndex = 22
Me.Button_Radius.UseVisualStyleBackColor = False
'
'Button_Square_Middle
'
Me.Button_Square_Middle.BackColor = System.Drawing.Color.Transparent
Me.Button_Square_Middle.BackgroundImage = Global.Wardrobe.My.Resources.Resources.SquareMiddle
Me.Button_Square_Middle.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
Me.Button_Square_Middle.FlatAppearance.BorderColor = System.Drawing.Color.Black
Me.Button_Square_Middle.FlatAppearance.BorderSize = 0
Me.Button_Square_Middle.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.Button_Square_Middle.Location = New System.Drawing.Point(1180, 31)
Me.Button_Square_Middle.Margin = New System.Windows.Forms.Padding(4)
Me.Button_Square_Middle.Name = "Button_Square_Middle"
Me.Button_Square_Middle.Size = New System.Drawing.Size(93, 86)
Me.Button_Square_Middle.TabIndex = 21
Me.Button_Square_Middle.UseVisualStyleBackColor = False
'
'Button_Angle_Side
'
Me.Button_Angle_Side.BackColor = System.Drawing.Color.Transparent
Me.Button_Angle_Side.BackgroundImage = Global.Wardrobe.My.Resources.Resources.RadiusMiddle
Me.Button_Angle_Side.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
Me.Button_Angle_Side.Enabled = False
Me.Button_Angle_Side.FlatAppearance.BorderColor = System.Drawing.Color.Black
Me.Button_Angle_Side.FlatAppearance.BorderSize = 0
Me.Button_Angle_Side.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.Button_Angle_Side.Location = New System.Drawing.Point(1320, 31)
Me.Button_Angle_Side.Margin = New System.Windows.Forms.Padding(4)
Me.Button_Angle_Side.Name = "Button_Angle_Side"
Me.Button_Angle_Side.Size = New System.Drawing.Size(93, 86)
Me.Button_Angle_Side.TabIndex = 19
Me.Button_Angle_Side.UseVisualStyleBackColor = False
'
'Button_Square_Side
'
Me.Button_Square_Side.BackColor = System.Drawing.Color.Transparent
Me.Button_Square_Side.BackgroundImage = CType(resources.GetObject("Button_Square_Side.BackgroundImage"), System.Drawing.Image)
Me.Button_Square_Side.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
Me.Button_Square_Side.FlatAppearance.BorderColor = System.Drawing.Color.Black
Me.Button_Square_Side.FlatAppearance.BorderSize = 0
Me.Button_Square_Side.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.Button_Square_Side.Location = New System.Drawing.Point(1040, 31)
Me.Button_Square_Side.Margin = New System.Windows.Forms.Padding(4)
Me.Button_Square_Side.Name = "Button_Square_Side"
Me.Button_Square_Side.Size = New System.Drawing.Size(93, 86)
Me.Button_Square_Side.TabIndex = 20
Me.Button_Square_Side.UseVisualStyleBackColor = False
'
'Button_Square_Corner
'
Me.Button_Square_Corner.BackColor = System.Drawing.Color.Transparent
Me.Button_Square_Corner.BackgroundImage = CType(resources.GetObject("Button_Square_Corner.BackgroundImage"), System.Drawing.Image)
Me.Button_Square_Corner.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
Me.Button_Square_Corner.FlatAppearance.BorderColor = System.Drawing.Color.Black
Me.Button_Square_Corner.FlatAppearance.BorderSize = 0
Me.Button_Square_Corner.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.Button_Square_Corner.Location = New System.Drawing.Point(760, 31)
Me.Button_Square_Corner.Margin = New System.Windows.Forms.Padding(4)
Me.Button_Square_Corner.Name = "Button_Square_Corner"
Me.Button_Square_Corner.Size = New System.Drawing.Size(93, 86)
Me.Button_Square_Corner.TabIndex = 18
Me.Button_Square_Corner.UseVisualStyleBackColor = False
'
'Button_Angle_Corner
'
Me.Button_Angle_Corner.BackColor = System.Drawing.Color.Transparent
Me.Button_Angle_Corner.BackgroundImage = CType(resources.GetObject("Button_Angle_Corner.BackgroundImage"), System.Drawing.Image)
Me.Button_Angle_Corner.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
Me.Button_Angle_Corner.FlatAppearance.BorderColor = System.Drawing.Color.Black
Me.Button_Angle_Corner.FlatAppearance.BorderSize = 0
Me.Button_Angle_Corner.FlatStyle = System.Windows.Forms.FlatStyle.Flat
Me.Button_Angle_Corner.Location = New System.Drawing.Point(620, 31)
Me.Button_Angle_Corner.Margin = New System.Windows.Forms.Padding(4)
Me.Button_Angle_Corner.Name = "Button_Angle_Corner"
Me.Button_Angle_Corner.Size = New System.Drawing.Size(93, 86)
Me.Button_Angle_Corner.TabIndex = 17
Me.Button_Angle_Corner.UseVisualStyleBackColor = False
'
'Label_Recesses
'
Me.Label_Recesses.AutoSize = True
Me.Label_Recesses.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label_Recesses.ForeColor = System.Drawing.SystemColors.ControlLightLight
Me.Label_Recesses.Location = New System.Drawing.Point(457, 31)
Me.Label_Recesses.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label_Recesses.Name = "Label_Recesses"
Me.Label_Recesses.Size = New System.Drawing.Size(106, 25)
Me.Label_Recesses.TabIndex = 16
Me.Label_Recesses.Text = "Recesses"
'
'Panel_Grating
'
Me.Panel_Grating.BackColor = System.Drawing.Color.White
Me.Panel_Grating.Controls.Add(Me.Label_Line_AngleRecess)
Me.Panel_Grating.Controls.Add(Me.Label_Line_Beams)
Me.Panel_Grating.Controls.Add(Me.Label_Line_Grid)
Me.Panel_Grating.Controls.Add(Me.Label_Line_Grating)
Me.Panel_Grating.Controls.Add(Me.Label2)
Me.Panel_Grating.Controls.Add(Me.Label1)
Me.Panel_Grating.Location = New System.Drawing.Point(420, 148)
Me.Panel_Grating.Margin = New System.Windows.Forms.Padding(4)
Me.Panel_Grating.Name = "Panel_Grating"
Me.Panel_Grating.Size = New System.Drawing.Size(1440, 802)
Me.Panel_Grating.TabIndex = 2
'
'Label_Line_AngleRecess
'
Me.Label_Line_AngleRecess.AutoSize = True
Me.Label_Line_AngleRecess.Font = New System.Drawing.Font("Microsoft Sans Serif", 7.8!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label_Line_AngleRecess.Location = New System.Drawing.Point(741, 586)
Me.Label_Line_AngleRecess.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label_Line_AngleRecess.Name = "Label_Line_AngleRecess"
Me.Label_Line_AngleRecess.Size = New System.Drawing.Size(112, 17)
Me.Label_Line_AngleRecess.TabIndex = 5
Me.Label_Line_AngleRecess.Text = "Dimension Lines"
'
'Label_Line_Beams
'
Me.Label_Line_Beams.AutoSize = True
Me.Label_Line_Beams.Font = New System.Drawing.Font("Microsoft Sans Serif", 7.8!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label_Line_Beams.Location = New System.Drawing.Point(571, 586)
Me.Label_Line_Beams.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label_Line_Beams.Name = "Label_Line_Beams"
Me.Label_Line_Beams.Size = New System.Drawing.Size(105, 17)
Me.Label_Line_Beams.TabIndex = 4
Me.Label_Line_Beams.Text = "Support Beams"
'
'Label_Line_Grid
'
Me.Label_Line_Grid.AutoSize = True
Me.Label_Line_Grid.Font = New System.Drawing.Font("Microsoft Sans Serif", 7.8!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label_Line_Grid.Location = New System.Drawing.Point(435, 586)
Me.Label_Line_Grid.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label_Line_Grid.Name = "Label_Line_Grid"
Me.Label_Line_Grid.Size = New System.Drawing.Size(86, 17)
Me.Label_Line_Grid.TabIndex = 3
Me.Label_Line_Grid.Text = "Grating Grid"
'
'Label_Line_Grating
'
Me.Label_Line_Grating.AutoSize = True
Me.Label_Line_Grating.Font = New System.Drawing.Font("Microsoft Sans Serif", 7.8!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label_Line_Grating.Location = New System.Drawing.Point(276, 586)
Me.Label_Line_Grating.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label_Line_Grating.Name = "Label_Line_Grating"
Me.Label_Line_Grating.Size = New System.Drawing.Size(104, 17)
Me.Label_Line_Grating.TabIndex = 2
Me.Label_Line_Grating.Text = "Grating Outline"
'
'Label2
'
Me.Label2.AutoSize = True
Me.Label2.Font = New System.Drawing.Font("Microsoft Sans Serif", 7.8!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label2.Location = New System.Drawing.Point(85, 769)
Me.Label2.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label2.Name = "Label2"
Me.Label2.Size = New System.Drawing.Size(16, 17)
Me.Label2.TabIndex = 1
Me.Label2.Text = "L"
'
'Label1
'
Me.Label1.AutoSize = True
Me.Label1.Font = New System.Drawing.Font("Microsoft Sans Serif", 7.8!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label1.Location = New System.Drawing.Point(17, 708)
Me.Label1.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(21, 17)
Me.Label1.TabIndex = 0
Me.Label1.Text = "W"
'
'Grating_Configurator
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(8.0!, 16.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.BackColor = System.Drawing.SystemColors.Control
Me.ClientSize = New System.Drawing.Size(1556, 884)
Me.Controls.Add(Me.Panel_Data)
Me.Controls.Add(Me.Panel_Recesses)
Me.Controls.Add(Me.Panel_Grating)
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
Me.Margin = New System.Windows.Forms.Padding(4)
Me.Name = "Grating_Configurator"
Me.Text = "Individual"
Me.Panel_Data.ResumeLayout(False)
Me.Panel_Data.PerformLayout()
CType(Me.PictureBox_CalculateGrid, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.PictureBox_ExportMenu, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.PictureBox_ConfigType, System.ComponentModel.ISupportInitialize).EndInit()
Me.Panel_Recesses.ResumeLayout(False)
Me.Panel_Recesses.PerformLayout()
Me.Panel_Grating.ResumeLayout(False)
Me.Panel_Grating.PerformLayout()
Me.ResumeLayout(False)
End Sub
Friend WithEvents Panel_Data As Panel
Friend WithEvents TextBox_Length As TextBox
Friend WithEvents ComboBox_Mesh As ComboBox
Friend WithEvents ComboBox_Thickness As ComboBox
Friend WithEvents ComboBox_Height As ComboBox
Friend WithEvents ComboBox_Material As ComboBox
Friend WithEvents ComboBox_Type As ComboBox
Friend WithEvents Label_Type As Label
Friend WithEvents Label_Heading As Label
Friend WithEvents Label_Material As Label
Friend WithEvents Label_Mesh As Label
Friend WithEvents Label_Height As Label
Friend WithEvents Label_Thickness As Label
Friend WithEvents Label_Width As Label
Friend WithEvents Label_Length As Label
Friend WithEvents Panel_Recesses As Panel
Friend WithEvents Button_Square_Middle As Button
Friend WithEvents Button_Square_Side As Button
Friend WithEvents Button_Angle_Side As Button
Friend WithEvents Button_Square_Corner As Button
Friend WithEvents Button_Angle_Corner As Button
Friend WithEvents Label_Recesses As Label
Friend WithEvents Panel_Grating As Panel
Friend WithEvents Label2 As Label
Friend WithEvents Label1 As Label
Friend WithEvents Label3 As Label
Friend WithEvents Label7 As Label
Friend WithEvents Label_WidthUnit As Label
Friend WithEvents Label5 As Label
Friend WithEvents Label4 As Label
Friend WithEvents TextBox_Width As TextBox
Friend WithEvents ComboBox_Width As ComboBox
Friend WithEvents Button_Radius As Button
Friend WithEvents Label_Frame As Label
Friend WithEvents ComboBox_Frame As ComboBox
Friend WithEvents CheckBox_Frames As CheckBox
Friend WithEvents Label_ConfigType As Label
Friend WithEvents PictureBox_ConfigType As PictureBox
Friend WithEvents CheckBox_CutFrame As CheckBox
Friend WithEvents PictureBox_ExportMenu As PictureBox
Friend WithEvents PictureBox_CalculateGrid As PictureBox
Friend WithEvents Label_Line_AngleRecess As Label
Friend WithEvents Label_Line_Beams As Label
Friend WithEvents Label_Line_Grid As Label
Friend WithEvents Label_Line_Grating As Label
End Class

View File

@ -0,0 +1,847 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="PictureBox_ConfigType.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
L0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9D
ULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0
+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8
AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAA
AAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAA
AOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADs
MwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME
9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUy
BEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRF
u88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvP
DwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8A
AAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAA
AMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADA
PkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5D
UC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1Av
Q1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQ
tPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7
/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wA
AAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAA
AADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA
7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwz
BPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1
MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIE
RbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7
zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88P
AAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAA
AADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAA
wD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+
Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQ
L0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9D
ULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0
+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8
AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAA
AAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAA
AOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADs
MwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME
9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUy
BEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRF
u88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvP
DwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8A
AAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAA
AMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADA
PkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5D
UC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1Av
Q1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQ
tPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7
/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wA
AAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAA
AADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA
7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwz
BPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1
MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIE
RbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7
zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88P
AAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAA
AADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAA
wD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+
Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQ
L0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9D
ULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0
+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8
AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAA
AAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAA
AOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADs
MwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME
9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUy
BEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRF
u88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvP
DwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8A
AAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAA
AMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADA
PkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5D
UC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1Av
Q1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQ
tPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7
/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wA
AAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAA
AADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA
7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwz
BPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1
MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIE
RbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7
zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88P
AAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAA
AADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAA
wD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+
Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQ
L0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9D
ULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0
+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8
AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAA
AAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAA
AOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADs
MwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME
9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUy
BEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRF
u88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvP
DwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8A
AAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAA
AMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADA
PkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5D
UC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1Av
Q1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQ
tPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7
/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wA
AAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAA
AADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA
7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwz
BPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1
MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIE
RbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7
zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88P
AAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAA
AADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAA
wD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+
Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQ
L0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9D
ULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0
+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8
AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAA
AAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAA
AOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADs
MwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME
9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUy
BEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRF
u88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvP
DwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8A
AAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAA
AMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADA
PkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5D
UC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1Av
Q1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQ
tPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7
/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wA
AAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAA
AADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA
7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwz
BPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1
MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIE
RbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7
zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88P
AAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAA
AADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAA
wD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+
Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQ
L0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9D
ULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0
+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8
AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAA
AAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAA
AOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADs
MwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME
9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUy
BEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRF
u88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvP
DwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8A
AAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAA
AMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADA
PkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5D
UC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1Av
Q1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQ
tPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7
/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wA
AAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAA
AADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA
7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwz
BPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1
MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIE
RbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7
zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88P
AAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAA
AADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAA
wD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+
Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQ
L0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9D
ULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0
+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8
AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAA
AAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAA
AOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADs
MwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME
9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUy
BEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRF
u88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvP
DwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8A
AAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAA
AMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADA
PkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5D
UC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1Av
Q1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQ
tPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7
/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wA
AAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAA
AADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA
7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwz
BPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1
MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIE
RbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7
zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88P
AAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAA
AADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAA
wD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+
Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQ
L0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9D
ULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0
+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8
AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAA
AAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAA
AOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADs
MwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME
9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUy
BEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRF
u88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvP
DwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8A
AAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAA
AMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADA
PkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5D
UC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1Av
Q1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQ
tPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7
/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wA
AAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAA
AADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA
7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwz
BPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1
MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIE
RbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7
zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88P
AAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAA
AADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAA
wD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+
Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQ
L0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9D
ULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0
+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8
AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAA
AAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAA
AOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADs
MwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME
9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUy
BEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRF
u88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvP
DwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8A
AAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAA
AMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADA
PkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5D
UC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1Av
Q1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQ
tPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7
/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wA
AAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAA
AADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA
7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwz
BPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIERbvPDwAAAADAPkNQL0NQtPv8AAAAAADsMwT1
MgRFu88PAAAAAMA+Q1AvQ1C0+/wAAAAAAOwzBPUyBEW7zw8AAAAAwD5DUC9DULT7/AAAAAAA7DME9TIE
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
Po8vo4Cxtsl4cswAAAAASUVORK5CYII=
</value>
</data>
<data name="Button_Square_Side.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
RU5ErkJggg==
</value>
</data>
<data name="Button_Square_Corner.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
zFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshM
lbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5
W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOV
dYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3
GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNB
B9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRg
Xd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bV
rWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2a
dns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3
Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2
GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NB
vyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSL
YshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiG
zFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshM
lbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5
W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOV
dYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3
GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNB
B9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRg
Xd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bV
rWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2a
dns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3
Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2
GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NB
vyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSL
YshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiG
zFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshM
lbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5
W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOV
dYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3
GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNB
B9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRg
Xd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bV
rWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2a
dns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3
Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2
GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NB
vyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSL
YshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiG
zFQ5W1k3GHRgXd2adns2GPSLYshMlbOVdYNBB9bVrWm3Z4NBvyiGzFQ5W1k3GHRgXd2adns2GPSLYshM
lbOVdYNBB9bVrWm3Z4NBvyiGzJxy/rOVdUP9o6H+ogFs+k/8B+Wf6ZYyE0NmTjn/1coKwN/+lW4pMzFk
psrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFk
psrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFk
psrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFk
psrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFk
psrZygrA3wz6RTFkpsrZygrA3wz6RTFkpsrZygrA3wz6RTFk5pTzf6qgy/55/DfAsro16Qbd9D/pljIT
QwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEE
AN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDg
LTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4S
QwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEE
AN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDg
LTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4SQwDgLTEEAN4S
QwDgLTEEAN4SQwDgJf/+r/8LaLxoKagskSkAAAAASUVORK5CYII=
</value>
</data>
<data name="Button_Angle_Corner.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
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
RU5ErkJggg==
</value>
</data>
</root>

View File

@ -0,0 +1,387 @@

Public Class Grating_Configurator
Sub Load_GUI()
' Initialize GUI
Init_Form()
Draw_Grating.Update_GratingPoints()
End Sub
' --- Initialize GUI (form) size and position ---
Private Sub Init_Form()
PictureBox_CalculateGrid.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_UpdateGrid3_01
PictureBox_ExportMenu.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_ExportMenu3_01
Me.Width = AppForm.Width
Me.Height = AppForm.Height
If AppForm.fillMode = True Then
Init_Multiple()
Else
Init_Individual()
End If
Me.ComboBox_Material.Enabled = False
Me.ComboBox_Mesh.Enabled = False
Me.ComboBox_Height.Enabled = False
Me.ComboBox_Thickness.Enabled = False
Me.ComboBox_Width.Enabled = False
Me.TextBox_Width.Enabled = False
Me.TextBox_Length.Enabled = False
Me.PictureBox_ExportMenu.Enabled = False
Me.Button_Angle_Corner.Enabled = False
Me.Button_Angle_Side.Enabled = False
Me.Button_Square_Corner.Enabled = False
Me.Button_Square_Side.Enabled = False
Me.Button_Square_Middle.Enabled = False
PictureBox_ExportMenu.Top = 715
Label_Line_Grating.Location = New Point(260, Draw_Grating.guiPanelW - 27)
Label_Line_Grid.Location = New Point(444, Draw_Grating.guiPanelW - 27)
Label_Line_Beams.Location = New Point(620, Draw_Grating.guiPanelW - 27)
Label_Line_AngleRecess.Location = New Point(802, Draw_Grating.guiPanelW - 27)
End Sub
Private Sub Init_Individual()
Label_ConfigType.Text = "- Single Grating"
PictureBox_ConfigType.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Individual_Icon
PictureBox_CalculateGrid.Visible = False
Label_Width.Top = 465
TextBox_Width.Top = 465
ComboBox_Width.Top = 465
Label_WidthUnit.Top = 469
CheckBox_Frames.Top = 537
Label_Frame.Top = 559
ComboBox_Frame.Top = 559
CheckBox_CutFrame.Top = 589
Dim CheckTemp As New CheckBox With {
.Name = "CheckBox_Whole_Mesh",
.Text = "Whole Mesh Widths",
.Left = 110,
.Top = 443,
.Font = New Font("Microsoft Sans Serif", 7.8),
.Checked = True,
.Enabled = False,
.AutoSize = True,
.BackColor = Color.Transparent,
.ForeColor = Color.White
}
AddHandler CheckTemp.CheckedChanged, AddressOf CheckBox_Whole_Mesh_CheckedChanged
Me.Panel_Data.Controls.Add(CheckTemp)
Me.ComboBox_Width.Visible = True
Me.TextBox_Width.Visible = False
End Sub
Private Sub Init_Multiple()
Label_ConfigType.Text = "- Fill Area"
PictureBox_ConfigType.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Fill_Icon
PictureBox_CalculateGrid.Visible = True
Label_Width.Top = 440
TextBox_Width.Top = 440
ComboBox_Width.Top = 440
Label_WidthUnit.Top = 444
CheckBox_Frames.Top = 637
Label_Frame.Top = 659
ComboBox_Frame.Top = 659
CheckBox_CutFrame.Top = 689
' --- Max Load ---
Dim LabelTemp As New Label With {
.Name = "Label_Max_Load",
.Text = "Max Load",
.Left = 35,
.Top = 500,
.AutoSize = True,
.Font = New Font("Microsoft Sans Serif", 10),
.ForeColor = Color.White
}
Me.Panel_Data.Controls.Add(LabelTemp)
Dim textBoxTemp As New TextBox With {
.Name = "TextBox_Max_Load",
.Text = "5",
.Left = 110,
.Top = 500,
.Width = 155,
.Font = New Font("Microsoft Sans Serif", 8),
.Enabled = False,
.BackColor = Color.FromArgb(224, 224, 224)
}
AddHandler textBoxTemp.KeyPress, AddressOf TextBox_Max_Load_KeyPress
Me.Panel_Data.Controls.Add(textBoxTemp)
Dim LabelTemp2 As New Label With {
.Name = "Label_Max_Load_Unit",
.Text = "kN/m²",
.Left = 269,
.Top = 504,
.Font = New Font("Microsoft Sans Serif", 8),
.ForeColor = Color.White
}
Me.Panel_Data.Controls.Add(LabelTemp2)
' --- Max Grating weight ---
Dim LabelTemp3 As New Label With {
.Name = "Label_Max_Weight",
.Text = "Max Single",
.Left = 15,
.Top = 535,
.AutoSize = True,
.Font = New Font("Microsoft Sans Serif", 10),
.ForeColor = Color.White
}
Me.Panel_Data.Controls.Add(LabelTemp3)
' --- Max Grating weight ---
Dim LabelTemp3_2 As New Label With {
.Name = "Label_Max_Weight2",
.Text = "Grating Mass",
.Left = 15,
.Top = 552,
.AutoSize = True,
.Font = New Font("Microsoft Sans Serif", 10),
.ForeColor = Color.White
}
Me.Panel_Data.Controls.Add(LabelTemp3_2)
Dim textBoxTemp2 As New TextBox With {
.Name = "TextBox_Max_Weight",
.Text = "70",
.Left = 110,
.Top = 545,
.Width = 155,
.Font = New Font("Microsoft Sans Serif", 8),
.Enabled = False,
.BackColor = Color.FromArgb(224, 224, 224)
}
AddHandler textBoxTemp2.KeyPress, AddressOf TextBox_Max_Load_KeyPress
Me.Panel_Data.Controls.Add(textBoxTemp2)
Dim LabelTemp4 As New Label With {
.Name = "Label_Max_Weight_Unit",
.Text = "kg",
.Left = 269,
.Top = 549,
.Font = New Font("Microsoft Sans Serif", 8),
.ForeColor = Color.White
}
Me.Panel_Data.Controls.Add(LabelTemp4)
Me.ComboBox_Width.Visible = False
Me.TextBox_Width.Visible = True
End Sub
' ---------------------------------- Individual Templates ----------------------------------
' --- TextBox Template ---
Public Sub Create_TextBox_Recesses(TextBoxName As String, TextBoxText As String, TextBoxLeft As Integer, TextBoxTop As Integer,
TextBoxWidth As Integer)
Dim textBoxTemp As New TextBox With {
.Name = TextBoxName,
.Text = TextBoxText,
.Left = TextBoxLeft,
.Top = TextBoxTop,
.Width = TextBoxWidth,
.Font = New Font("Microsoft Sans Serif", 10)
}
Me.Panel_Recesses.Controls.Add(textBoxTemp)
End Sub
' --- Label Template for Individual ---
Public Sub Create_Label_Recesses(LabelName As String, LabelText As String, LabelLeft As Integer, LabelTop As Integer)
Dim LabelTemp As New Label With {
.Name = LabelName,
.Text = LabelText,
.Left = LabelLeft,
.Top = LabelTop,
.Font = New Font("Microsoft Sans Serif", 10)
}
Me.Panel_Recesses.Controls.Add(LabelTemp)
End Sub
' ---------------------------------- Gratings Data ----------------------------------
' --- When user changes grating type ---
Private Sub ComboBox_Type_TextChanged(sender As Object, e As EventArgs) Handles ComboBox_Type.TextChanged
User_Input.TypeChanged(sender, e)
End Sub
' --- When user changes grating material ---
Private Sub ComboBox_Material_TextChanged(sender As Object, e As EventArgs) Handles ComboBox_Material.TextChanged
User_Input.MaterialChanged(sender, e)
End Sub
' --- When user changes mesh size ---
Private Sub ComboBox_Mesh_TextChanged(sender As Object, e As EventArgs) Handles ComboBox_Mesh.TextChanged
User_Input.MeshChanged(sender, e)
End Sub
' --- When user changes grating height ---
Private Sub ComboBox_Height_TextChanged(sender As Object, e As EventArgs) Handles ComboBox_Height.TextChanged
User_Input.HeightChanged(sender, e)
End Sub
' --- When user changes grating thickness ---
Private Sub ComboBox_Thickness_TextChanged(sender As Object, e As EventArgs) Handles ComboBox_Thickness.TextChanged
User_Input.ThicknessChanged(sender, e)
End Sub
' --- When user checkes/uncheckes whole meshes ---
Private Sub CheckBox_Whole_Mesh_CheckedChanged(sender As Object, e As EventArgs)
User_Input.WholeMeshWidthsChanged(sender, e)
End Sub
' --- Grating width changed ---
Private Sub ComboBox_Width_TextChanged(sender As Object, e As EventArgs) Handles ComboBox_Width.TextChanged
User_Input.WidthChanged(sender, e)
End Sub
' --- Check if width is a number ---
Private Sub ComboBox_Width_KeyPress(sender As Object, e As KeyPressEventArgs) Handles ComboBox_Width.KeyPress
User_Input.Check_IfNumber(e)
End Sub
Private Sub ComboBox_Frame_TextChanged(sender As Object, e As EventArgs) Handles ComboBox_Frame.TextChanged
User_Input.FrameChanged(sender, e)
End Sub
' --- Grating width changed ---
Private Sub TextBox_Width_TextChanged(sender As Object, e As EventArgs) Handles TextBox_Width.TextChanged
User_Input.WidthChanged(sender, e)
End Sub
' --- Check if width is a number ---
Private Sub TextBox_Width_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox_Width.KeyPress
User_Input.Check_IfNumber(e)
End Sub
' --- Grating length changed ---
Private Sub LengthBox_TextChanged(sender As Object, e As EventArgs) Handles TextBox_Length.TextChanged
User_Input.LengthChanged(sender, e)
End Sub
' --- Check if length is a number ---
Private Sub ComboBox_Length_KeyPress(sender As Object, e As KeyPressEventArgs) Handles TextBox_Length.KeyPress
User_Input.Check_IfNumber(e)
End Sub
Private Sub TextBox_Length_Leave(sender As Object, e As EventArgs) Handles TextBox_Length.Leave
If TextBox_Length.Text <> "" Then
If AppForm.fillMode Then
If CInt(TextBox_Length.Text) < 300 Then
MessageBox.Show("Length must be at least 300 [mm]")
TextBox_Length.Focus()
End If
Else
If CInt(TextBox_Length.Text) < 300 OrElse CInt(TextBox_Length.Text) > 6000 Then
MessageBox.Show("Length must be at least 300 [mm] and max 6000 [mm]")
TextBox_Length.Focus()
End If
End If
End If
End Sub
Private Sub CheckBox_Frames_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox_Frames.CheckedChanged
If User_Input.addFrame = True Then
User_Input.addFrame = False
Export.CheckBox_FrameDrawing.Checked = False
Export.CheckBox_FrameDrawing.Enabled = False
User_Input.addFrameDrawing = False
CheckBox_CutFrame.Visible = False
ComboBox_Frame.Enabled = False
Else
User_Input.addFrame = True
Export.CheckBox_FrameDrawing.Enabled = True
CheckBox_CutFrame.Visible = True
ComboBox_Frame.Enabled = True
End If
End Sub
Private Sub CheckBox_CutFrame_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox_CutFrame.CheckedChanged
If User_Input.preCutFrame = True Then
User_Input.preCutFrame = False
Else
User_Input.preCutFrame = True
End If
End Sub
' --- Check if max laod is a number ---
Public Sub TextBox_Max_Load_KeyPress(sender As Object, e As KeyPressEventArgs)
User_Input.Check_IfNumber(e)
End Sub
' ---------------------------------- Functions ----------------------------------
' --- When angle button is pressed ---
Private Sub Button_Angle_Corner_Click(sender As Object, e As EventArgs) Handles Button_Angle_Corner.Click
Corner_Angle.AngleButton(sender, e)
End Sub
' --- When angle side button is pressed ---
Private Sub Button_Angle_Side_Click(sender As Object, e As EventArgs) Handles Button_Angle_Side.Click
End Sub
' --- When square corner button is pressed ---
Private Sub Button_Square_Corner_Click(sender As Object, e As EventArgs) Handles Button_Square_Corner.Click
Corner_Rectangle.SquareButtton(sender, e)
End Sub
' --- When square side button is pressed ---
Private Sub Button_Square_Side_Click(sender As Object, e As EventArgs) Handles Button_Square_Side.Click
Side_Rectangle.SquareSideButtton(sender, e)
End Sub
' --- When middle square button is pressed ---
Private Sub Button_Square_Middle_Click(sender As Object, e As EventArgs) Handles Button_Square_Middle.Click
Middle_Rectangle.SquareMiddleButtton(sender, e)
End Sub
' ---------------------------------- Calculate Grid Button ----------------------------------
Public Sub Button_Calculate_Click(sender As Object, e As EventArgs) Handles PictureBox_CalculateGrid.Click
Calculate_Fill_Grid.Calculate_Grid()
End Sub
Private Sub PictureBox_CalculateGrid_MouseEnter(sender As Object, e As EventArgs) Handles PictureBox_CalculateGrid.MouseEnter
PictureBox_CalculateGrid.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_UpdateGrid2_01
PictureBox_CalculateGrid.Cursor = Cursors.Hand
End Sub
Private Sub PictureBox_CalculateGrid_MouseLeave(sender As Object, e As EventArgs) Handles PictureBox_CalculateGrid.MouseLeave
PictureBox_CalculateGrid.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_UpdateGrid1_01
PictureBox_CalculateGrid.Cursor = Cursors.Default
End Sub
' ---------------------------------- Export Menu Button ----------------------------------
Private Sub Button_Export_GUI_Click(sender As Object, e As EventArgs) Handles PictureBox_ExportMenu.Click
If User_Input.addFrame = True Then
Export.CheckBox_3DModel.Text = "Grating + Frame"
Else
Export.CheckBox_3DModel.Text = "Grating"
End If
Export.StartPosition = FormStartPosition.Manual
Export.Location = New Point(500, 250)
Export.PictureBox_Export.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_Export1_01
Export.ShowDialog()
End Sub
Private Sub PictureBox_ExportMenu_MouseEnter(sender As Object, e As EventArgs) Handles PictureBox_ExportMenu.MouseEnter
PictureBox_ExportMenu.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_ExportMenu2_01
PictureBox_ExportMenu.Cursor = Cursors.Hand
End Sub
Private Sub PictureBox_ExportMenu_MouseLeave(sender As Object, e As EventArgs) Handles PictureBox_ExportMenu.MouseLeave
PictureBox_ExportMenu.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_ExportMenu1_01
PictureBox_ExportMenu.Cursor = Cursors.Default
End Sub
End Class

168
Wardrobe/GUI/Main_Menu.Designer.vb generated Normal file
View File

@ -0,0 +1,168 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
Partial Class Main_Menu
Inherits System.Windows.Forms.Form
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()>
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()>
Private Sub InitializeComponent()
Dim resources As System.ComponentModel.ComponentResourceManager = New System.ComponentModel.ComponentResourceManager(GetType(Main_Menu))
Me.Label_SettingsError = New System.Windows.Forms.Label()
Me.PictureBox_Settings = New System.Windows.Forms.PictureBox()
Me.PictureBox_CreateOrder = New System.Windows.Forms.PictureBox()
Me.PictureBox_Individual = New System.Windows.Forms.PictureBox()
Me.PictureBox_Multiple = New System.Windows.Forms.PictureBox()
Me.Panel1 = New System.Windows.Forms.Panel()
Me.Label1 = New System.Windows.Forms.Label()
Me.Label2 = New System.Windows.Forms.Label()
Me.Label3 = New System.Windows.Forms.Label()
CType(Me.PictureBox_Settings, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.PictureBox_CreateOrder, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.PictureBox_Individual, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.PictureBox_Multiple, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'Label_SettingsError
'
Me.Label_SettingsError.AutoSize = True
Me.Label_SettingsError.Font = New System.Drawing.Font("Microsoft Sans Serif", 10.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label_SettingsError.ForeColor = System.Drawing.Color.Red
Me.Label_SettingsError.Location = New System.Drawing.Point(188, 48)
Me.Label_SettingsError.Name = "Label_SettingsError"
Me.Label_SettingsError.Size = New System.Drawing.Size(133, 20)
Me.Label_SettingsError.TabIndex = 8
Me.Label_SettingsError.Text = "Update Settings!"
'
'PictureBox_Settings
'
Me.PictureBox_Settings.BackgroundImage = CType(resources.GetObject("PictureBox_Settings.BackgroundImage"), System.Drawing.Image)
Me.PictureBox_Settings.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
Me.PictureBox_Settings.Location = New System.Drawing.Point(49, 42)
Me.PictureBox_Settings.Name = "PictureBox_Settings"
Me.PictureBox_Settings.Size = New System.Drawing.Size(123, 30)
Me.PictureBox_Settings.TabIndex = 13
Me.PictureBox_Settings.TabStop = False
'
'PictureBox_CreateOrder
'
Me.PictureBox_CreateOrder.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_CreateOrder1_01
Me.PictureBox_CreateOrder.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
Me.PictureBox_CreateOrder.Enabled = False
Me.PictureBox_CreateOrder.Location = New System.Drawing.Point(134, 311)
Me.PictureBox_CreateOrder.Name = "PictureBox_CreateOrder"
Me.PictureBox_CreateOrder.Size = New System.Drawing.Size(222, 60)
Me.PictureBox_CreateOrder.TabIndex = 14
Me.PictureBox_CreateOrder.TabStop = False
'
'PictureBox_Individual
'
Me.PictureBox_Individual.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_Individual1_01
Me.PictureBox_Individual.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
Me.PictureBox_Individual.Enabled = False
Me.PictureBox_Individual.Location = New System.Drawing.Point(560, 220)
Me.PictureBox_Individual.Name = "PictureBox_Individual"
Me.PictureBox_Individual.Size = New System.Drawing.Size(288, 84)
Me.PictureBox_Individual.TabIndex = 15
Me.PictureBox_Individual.TabStop = False
'
'PictureBox_Multiple
'
Me.PictureBox_Multiple.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_Multiple1_01
Me.PictureBox_Multiple.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
Me.PictureBox_Multiple.Enabled = False
Me.PictureBox_Multiple.Location = New System.Drawing.Point(560, 389)
Me.PictureBox_Multiple.Name = "PictureBox_Multiple"
Me.PictureBox_Multiple.Size = New System.Drawing.Size(288, 84)
Me.PictureBox_Multiple.TabIndex = 16
Me.PictureBox_Multiple.TabStop = False
'
'Panel1
'
Me.Panel1.BackColor = System.Drawing.Color.Black
Me.Panel1.Location = New System.Drawing.Point(476, 121)
Me.Panel1.Name = "Panel1"
Me.Panel1.Size = New System.Drawing.Size(1, 400)
Me.Panel1.TabIndex = 17
'
'Label1
'
Me.Label1.AutoSize = True
Me.Label1.Font = New System.Drawing.Font("Microsoft Sans Serif", 18.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label1.ForeColor = System.Drawing.SystemColors.ActiveCaptionText
Me.Label1.Location = New System.Drawing.Point(554, 126)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(266, 36)
Me.Label1.TabIndex = 18
Me.Label1.Text = "Configure Gratings"
'
'Label2
'
Me.Label2.AutoSize = True
Me.Label2.Location = New System.Drawing.Point(917, 531)
Me.Label2.Name = "Label2"
Me.Label2.Size = New System.Drawing.Size(121, 17)
Me.Label2.TabIndex = 19
Me.Label2.Text = "By: Måns Olander"
'
'Label3
'
Me.Label3.AutoSize = True
Me.Label3.Location = New System.Drawing.Point(942, 548)
Me.Label3.Name = "Label3"
Me.Label3.Size = New System.Drawing.Size(92, 17)
Me.Label3.TabIndex = 20
Me.Label3.Text = "Anton Lüning"
'
'Main_Menu
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(8.0!, 16.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.BackColor = System.Drawing.Color.FromArgb(CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer))
Me.ClientSize = New System.Drawing.Size(1067, 615)
Me.Controls.Add(Me.Label3)
Me.Controls.Add(Me.Label2)
Me.Controls.Add(Me.Label1)
Me.Controls.Add(Me.Panel1)
Me.Controls.Add(Me.PictureBox_Multiple)
Me.Controls.Add(Me.PictureBox_Individual)
Me.Controls.Add(Me.PictureBox_CreateOrder)
Me.Controls.Add(Me.PictureBox_Settings)
Me.Controls.Add(Me.Label_SettingsError)
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
Me.Margin = New System.Windows.Forms.Padding(3, 2, 3, 2)
Me.Name = "Main_Menu"
Me.Text = "Main_Menu"
CType(Me.PictureBox_Settings, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.PictureBox_CreateOrder, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.PictureBox_Individual, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.PictureBox_Multiple, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents Label_SettingsError As Label
Friend WithEvents PictureBox_Settings As PictureBox
Friend WithEvents PictureBox_CreateOrder As PictureBox
Friend WithEvents PictureBox_Individual As PictureBox
Friend WithEvents PictureBox_Multiple As PictureBox
Friend WithEvents Panel1 As Panel
Friend WithEvents Label1 As Label
Friend WithEvents Label2 As Label
Friend WithEvents Label3 As Label
End Class

249
Wardrobe/GUI/Main_Menu.resx Normal file
View File

@ -0,0 +1,249 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="PictureBox_Settings.BackgroundImage" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
iVBORw0KGgoAAAANSUhEUgAAAjsAAACZCAYAAADJnfuXAAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAu
IwAALiMBeKU/dgAAHJxJREFUeF7tnd213LaSRm8ICmAeFIJDcAgOQSHoZd4dgkJwCA5gHhyCQnAIzsC3
9hnxLB6qupsoFP7Ir9ba9/pATRAFkKiPAAj+599//xU/+J///b8vxnfj3yT+Nn43PnnnE0IIIUR73MS7
YWLkFyNT5Bz5x/jNO7cQQggh2uIm3gkTIQgdxIgnUrL55pVBCCGEEO1wE++ECRCmmjxh0gqN8AghhBAd
cRPvggkP1uh4gqQl372yCCGEEKINbuJdMOHx10GI9EILloUQQohOuIl3wREhvfjVK48QQggh8nET74Ij
QnohsSOEEEJ0wk28C44I6cVXrzxCCCGEyMdNvAuOCOnF7155hBBCCJGPm3gXHBHSC4kdIYQQohNu4l1w
REgvJHaEEEKITriJd8ERIb2Q2BFCCCE64Sb2woL+J+Or8afBnjfA35+932dj5/GESA8kdoQQQohOuIk9
IOAfBMCRb0bTzfcO5+uJxI4QQgjRCTexJRboGc05+4VxftdM8BzO1ROJHSGEEKITbmIrLMiXCJ2NZoLn
cJ6eNBU7lv+vxh/G/mvuTBHyLTB9qkIIIcStcBNbQJA1SoXORrrgIb9d/r1pInYsX3xi/ZN3zg2+8v6L
d7wQQghxRdzEbCy41gidjVTBY3mN+ggopIsdy7O0jr94+QghhBBXw03MxIJqhtDZqBI8duxng7e9ssoT
hdGXTOEWrWMJHiGEEJfHTczCgmmm0NkoFjz2e9aqvJre6Q3raXgjreo1ezu+to4leIQQQlwaNzEDC6It
hM7GS8Fj//6LcVykOyuUs3gdjR2TVccSPEIIIS6Lm1iLBc+WQmfjJ8HD3wbTVCzC9Y6Znbc3pvY+PcJ+
l13HEjxCCCEuiZtYgwXNHkJng/MwFcQ0FaMj3m9WBLH28DVx0o0WdSzBI4QQ4nK4iVEsWPYUOndgW9fz
Lnr4b6NlHUvwCCGEuBRuYgQLkhI6bXlb12P0qGMJHiGEEJfBTYxgAVJC51pI8AghhLgEbmIpFhj5aKcX
MMXaSPAIIYRYHjexBAuIbNTnBUpxDSR4hBBCLI2bWIIFQ43qXJ9fvbYXQgghVsBNLMEC4chvTIk+8FZY
0a7VQgghxCy4iSVYEJTYuQdNvtQuhBBCtMZNLMGCoMTOPfjba38hhBBidtzEEiwIXmnnYvGEY9sLIYQQ
K+AmlmBB8LdjUBTX5Nj2QgghxAq4iaVYINRU1g04trsQYkk+G7xhWcIvhpeXEEvgJpZigZDPGPDGjhsk
xSX47rW9EGI5eNmg1P4yvLyEWAI3MYIFQwmea/PVa3chxHJI7Ijb4SZGsYAowXNN9CaWENdBYkfcDjex
BguMEjzXgrbUfP1H9msefjMIHqA1DmIFJHbE7XATayE4/giSXvAU6yCh8//Chu+D/WGwbqnU/jEIFAQY
hJF2ohajkdgRt8NNzIAg+SNYekFUzM+dhQ6CBIETETdnjHxZA4WQ8s4vREskdsTtcBOzIFj+CJpeMBXz
clehg8ghEDAa08sIIoz4eOURogUSO+J2uImZEDR/BE8vqIr5uKvQYaSlp8g5GovAGU3yyiZEJhI74na4
idkQPHfBVMzLHYUOU0mtpqsihuhhgbNXViEykNgRt8NNzMYCqD4pMT93FDqIipGjOc/sT0OLmV/DaBjB
u4ReYtI79yt6rOPiPKUmsSOWxk3MxoLoap+ToLy/G4i0hx2j/dtn/t34avBB1L8NL7/ZuaPQIUjObozy
3HFKsQSCcKkR7L28somYRvWEaICbmIkFUcSAF2BngmCPWKleKGp5IIAQP98N71wzcscRnZVMa3keI7Ej
hHiJm5iJBVJEhBdgZwBB0iyQWN4IH/xHTHnnn4G7ffOKaYJZp66emeeLkNgRQpzATczCAinB3guwo0Hk
dOtU7FyfDKbFvLKM5m5z8ZHgOIN5vgiJHSHECdzELCyQzjaqwwjLsA9a2rkRfzOuX7rL5nZMU9Ya62i+
GeT1qN5YWEzQYtSQ32a87eWdR0jsCCFO4CZmYAGU0YyZpm8QGVMEdSsHa3pmqpu7fNG8RnTU7oPDtcfx
0TJ4eQqJHSHECdzEDCyAzjRt06tzO42Vib2HZnl7i0DulvNCsAg7agiUzNfACWjUeYl5+QiJHSHECdzE
DAigh4A6imnfZLGyMfo1y1tbV+9kCXARyxY6G+yjU2JeHkJiRwhxAjexFgucXw6BdARME03fcVgZZxE8
fNXbLeNFiARFrNXUZ6n48vIQEjtCiBO4ibVY4JwheC/zcUUr6wyCB3F45R17S6eNMEZfvLwyIKiVmJeH
kNgRQpzATazBAuYMmwhOO3X1CCvzDIJnuXorIGItF24zYlRiXh6toGw8LCAKANGHqADeLtvSCcyjBbLE
jjjCNbm/fo/XLv3cChupUkbKSpkp++bH5tcM918t9DX4QV+7+eXBb6ruDTexBguYo18356JwyzY7VnZe
TR/5lhY3klu2CxCx1oGnZHND7/hM8JWpzMiGi9vr+K0CyL6jPxItr5fXHq8cHt6xGxFjjZiX1x6vHEcI
kt6xUaL96rO2K+VVGTafzxrXDtd8q6nqCNxDpfchDyPP+qqSNoi281kQZwgbyhy5dzHuX+qI9j7ddm5i
FAuWvFLtBdFe0Fhu2VbBfBj90dSZbvxMItZa7HC9njXv+AzoMCJTfI+MYJ09hVxST1nmlcNjhHnlOMLT
cKZF+9bMtntUBu7T2muY4DlylIR+t7auEBCeDyUWbedX4B913MLocxBQT2PXTwkW7Fhc/Kcx0z4wZ6C8
lwjU5se3nV+9ueqeOxEjYHh5ZVESkLzja+AJkk6ildFpZt2PmQHzrHnl8BhhXjmOXFHsMBKwz5vAnhlA
EUwjprfoc7OMOtr7wD1YYtlihzZitKiXcT24/c77f1iQY9+XWV6DjtA6MHXDfBm5ISM3vFuuxYk8+bWu
C0ZVzpp3fJSS89YYHW/GKI/EzkfzynHkimIH2/IliLYQ60ex0JoWox37+45RrxLLFDvUY+2IW9R+Gql7
+x8LcKPXitRyuQBtPo18fb/19M0Iop1uSxHNEwj5n8E7PkKroeRnhrjyynIWiZ2P5pXjCNdMps0kdloJ
nc0QCz1mCVrei5toK70OssQO56YMI43zv8eyt/+x4Dbj95pKqO1Mp8T8GrUxI8L3rU7t/xll4g07jx4d
QhY1nf9Vrq8RQmezmjqU2PloXjmOXFXsEER7XA9ZQf8R2e3jGYMApfd8ht8zCJ3N3v0hmBG0vIC3Cpcb
1dkw32bYnLEE1nrNOirEDVhjjxb/rQJiY6RtT5pe2V7RI7gdzSuHxwjzynHkqmKn57XQ6iGndGqpp0Xb
eYM+ctTUlWfv/hBQRy6GzeAqT90u5t+K04utX1+MUjv0TcAmiKwmembpXOkEI3XXM8Bt5pXDY4R55Thy
VbHT01o9SM8kBo5WK3Z6LkY+Yx/EzupTWCs/bb/E/FtVjDJ86vo0kKzRDUQP/kVHKnoy25MWQdgr5zMk
dj6aV44jCNxtf5WMKYVoEOSe28qxomWPVPeYvqqxaDtD6ZtfnnF+RtGpJ/pY/q7pv979WV3szBhQUzEf
eUvO830FZpzSyu50tz0eZhXdGU9a1NlGxuhYaV1twdIjEsjpPL289njl8PCO3YgY9evltccrxysIRNuu
wpHgET3vER4QNgGUIcL2tq+jrLwzYwzXfVa59r5mGvl5ZT9DtK+hTrgmnvUL28scpfX37s/qYufSU1gb
5ucsX5AvhY7b9WkgLRfP8UTCNTnLwu2aJy3qiM7F64BIi3Q8m3HsMc8okc4+8/zPiFiPBwT8L7WaIPiI
jED9bIQ1GiD3hjD08o4Qqfe90b888pXrhrqotZp2jtQzMaLk4Wfre87aZcROSSUti/m58rqqGad6ECSt
jZuYJ52R/kc7PzqtM+XmN5EOjmO8/CJI7JRzBbHD/XX2oYI4we+jlvXwUjMdc/bBnnsyZdqnEM5bavQD
0Rh+9hq+hNiZcdSgCebr6E9I1DDjVBb0EDyb0fm83M48GTqRiJ0VOhuRTg7L+qSExE45q4udyNQS90NE
mGMZbcL1HrXSGYwacRdt54h/PAx6eZ3h7PkuIXYy51Knxnxl00evDlZgVrEDlC3aAUaN67ZHnUS3oI8I
gcgIUk1Ht0dip5yVxU7NQ27EbyzjeomOsjJ15eX3Ch6sIn1btJ0jdVtzrZ99mLuE2OnVYU2B4/8qzCx2
gJsm0unWGudsWTeRJ7vosHJkdCdrZDbSdr36johJ7Dy3mrZDAEQs43qJTi3VjAZHFgxH2zlyTdWO7p6p
03d/VhY7swfRVMxftVNbGCruPcqDcTNmT29FO/Wa0ZZIZ+7lU0rvgFlCxCR2nltt20Wu0+joykb0fqw9
b892jpyrdnbmzGjZuz8Kootg/qqd2sOoBjftCNFT24nvia5HKlmrcyQSuDKujREB8ywRk9h5brVtFzln
re/R+7F0rc6Rnu0cXZNUc72fqdd3f1YOopHh9mUxf/kUg1cPs7OiKB0lergxM67ryPA1vnp5nSXSsdYO
Y0MkeNUGzLNETGLnudW2XeSctb5H6hur7Qt6tnP0RQX6HdYXenm+gvrhfnnG+wPcsmJnc+AumM+/H+tg
EbjgXJ8WgJuJGzE63x4xbv6aERZYpUOvDVwQ8TXjvGeIWI/7pWcQfMaItuu5jmUj4mfGmrbe7VzTT3Js
081ZJXYWwXyW2BkLfjBH3GO0p1bwRMpIJ4ePUSJvm0js/GzUpZdXJncWOyN8j7wsULueBXr7GhGSnlFf
5MXIb5r4WVbsGM0U4IyYv38c/F+FHp13b7gJWwufGsGzimWIDomdckYEfI+7iJ2IZVyjvX1lIXaLPpFR
HxZrM/ITfghcWexcMYg+xPxVO80JwoenkBZTXdGh7FUso0OX2ClnRMD3kNh5bBnr2Ub4Gt3fq8Toa3nY
LKojBdFFMH/VTvPDUwfCJ/PpprRzp75XsdrABRI75YwIgh4SO48t4zoY1c6RKe2oIXzw8+VMz8pBNLqC
e0nM338O/q/CrUTpDl6LzBjtQTiVTNlK7Ly2jPOeIWISO8+ttu16+869G7GVxQ70FDwY/ST+PuwrVxY7
PEG7Tl0N8/XTwfeVuKvY2cgQPSUdvMTOa8s47xkiJrHz3Grbrrfv0ftxdbED9H0t1vA8M87nTm+tLHZa
3HxTYr7+evB9Je4udoCnjZonHcSSl6+HxM5ryzjvGSImsfPcatuut+93FjtQ2/dF7afBEALpqpvVWfk/
OnNVzNdVXzuHWcQO5ThD9qcb9tTc9GffQsCHVSxDdEjslDNDEASJnceWcR3M0s5Av0r/13Okh/O9l4FA
+uUQnFYiY8X69Jif3w9+r0SPzvsMZ6319Gikg8fOrlGT2HltGec9Q8Qkdp5bbdv19v2ua3YeQX0wvcWr
5D2Mc72dm0DKepBVF79+UG5XxHz8fPB5NVYTO61v9qgYKbnWI4bfdI49ybg2RgTMs0RMYue51bbdCN8j
dlWxswfhs23dEdl48Yy9v+DxdlILSL8dAtQq4MixAi+F+fj14PNqrCZ2elxTkQXLJZ1QxFZ9cBgRMM8S
MYmd53YXsZPxtvHsYseD659yR66NR/Z2zbyfxILSqtNZl57KMv/+Pvi7GjWfPcikxLzjM0FYlFpJJ9Ra
TM1EpFOsDZhniZjEznOrbbsRvkfWqWRco7O0c5Rtyitynezt7QH2Q+YEJmO1BcszNU4q5tvKb2FByVtE
rSmx1gGndScU7Ry8vGYn4mtGIDlDxCR2nltt243wPeJnRn3P0s4ZcF/UTHX94mVKkGUdD4HWg2kVL/2b
4QW8HvToILpjfq26LcDG++KwCSix1qOFrTuhSP7YTO11lkggqQ2YZ4mYxM5zq227Eb5HRnIzptN7+0r/
wTmfUdvHROoS++plFsaC26i3hlrciEMxnxCQnq+rwGp717dBlBg3pZdHFpFOvuQaJ2BGbMX7KFKXrdt3
I2ISO8+ttu1G+B79XlTtQ1dvX8+0Z+1oP1NbkWn6373MwliAG7mY9lJrd8yflV83Zyr0bQX8RJRYS6FG
vUSstEyRdQLYaqOkIwLmWSLW4zM4EjtlVus76xYjVvvSwIxiB6tdxxnxK13sjHxNmoW8swXYEObHqm9g
IdBmnQopsRYd+0bkRsVKO/nocC9PTSvdR5GA2bJ994xamPqK3kHwEZG2q62fUb5HHz5qNjntfW+cPV+t
oI+MXOeKHbBgN3KdSa0SHo75wCLxkfseIVjYiuC4JusVswfIUmsRdKLTS1jpiEvNuTI69z0IYERUi92p
2aOj1HotnI8Emx7TvxI7ZZbhe/Thg0W5Xn6viPiJ1fh6tj1r6zPiWxOxM/oV9hUXWb5hZWdh+Ojpq9Wm
Mc4SMYJi1vVEPtGnu+hixUgw2YxjawQsx/IEt59fb/EwEu3Ue1zn0fpv+ckSGBXwj0Tqh7J7eZ1llO8s
s4ha6X0TeQDYrMbXkvas6Vv2fcpZ++JlVIUFy9E7MnPuWfZ2KcLK/cfOjxFEnyJWoMYQG3QgkQDJMZFO
fW/RT1jUjO5g+E1wONsx8Ts69WdPsTWdnEd08Se+PWvPDMFR8zT/qA+j/mrrUGKnzLJ8jwTpzbgmXq1L
3UZQa6zG15L2jK6xjd5Tn73MqrGgOTpoLyd4rLyj6wyWHRU7QaZxUyNA6Di5aQmaG/xNOtMRtR3PZjWB
l3JkGD7jlwf/dnYPDH7vlTNKraCjjSj/xtZmUYG5JyrENqNO92XbRgajgQKRRH2RV6lRL/QPGSKQPPAh
cn9Qdnzw8n3GJsSjvnNsre9c+7XGNYAP271H8I/49MjIyyv7GUrLQfnP1inxPOrn20O8l2k1FjRZw+EF
056wYHkJwWPlnEHocBO55bsIZ4PxbFYrDuhMtiA5gxE4vHLW0MJqOv2NWiH2yM5eE/R/CC4CYkRYPLJ9
wD0jPPgNv0V4Z16Lz8qwiRtEa+a9T/nx46zveyjTTPeiZzXXfY0Y4RqlThHU1Cttx98Z7ff2EO8VOAUL
njN85mD6ER4r3wxCB7iw3DJeBDqa1QQP5fV8KYWOYybLHkHMGr3aW4bYgRbB7eyoUzT4lJp37j097HhO
AmYPO573FVz7M9sIsdPS3h+ujoVNg+B5CKajQPCUKvDmWJlY2zTTpzkyhqdnZyXBQ5DMbBPE7CyWJeI2
WgUQ71ylRNcYPLOzAUlip70dz3uGGUXBZlcTO++x/1jYNAieh2A6mmlGLqwsvF4+06aBdMhuWS8KT8Yz
G0KnxYhki8AbtewHkMxpms2885SCYM22s2JRYqe9Hc97hpmns2rEzmz96ocR5H1B07EgOttHRREYQ6e1
7PyzjHjtucOozhE6wxYBstYIZHSGXpkzmKFDaiHmWkzVZQmyFnXuneeIxE57O573LFz/rQVPJP8asQOz
jCD/NFX+4Y9sLIiyOZ0XXEfDOpmWAeUn7HzUxQzrmI7UXtwrwzXAzTnLU1av0Uc6glE+M7rU6t7LHrnK
Ejv4mz196p3niMROezuet4SWgod7ISI8MuIBfo1aLkB98uDzU7l+SsjEAumsYgdYy8OX2puOalj+bLI4
05TVkawOfWVGix46mN4jjlz3vYIhxrl6XGuZgqd2W/s92YLnTF1K7LS343lLaSEMuAfIe5TY2eChqufo
OS8qPIznbmIWFkgRE16AnQ2m2xAlKU+clg9rcvB9xpGcPdxkrg83hfbnBu31VEKnNFpscv5WQRHxiI+9
p0kRKRnCNXukjesra0pLYuejHc+5itiBrIet46jGaLGz0bpPpcwv7wc3MQMLpKM/GxGFb3uxrub0957s
d4gb/GV6bHaBs+eneU3xDgGa+sncG4R8yI98U4R1IjxhIkxqn8Q4nnzcoeSO0H6UI9p2+NHKBzpmyhY1
AofEzkc7nnMlsbPBNYtAKb0HucY57tinzCJ2NuhjEPsZwoc8yOv0g5SbWIsF0RkX4dbANBQi6AhTYd7v
V4Abym0/4cJNRQdKB8JNRqfwCn7H7wmap2/KCaBTQpBRds+vPQTt2X3c2g2h6fkAez96CVHOw/le1fN2
HeHHbCJZtIF7cNsQ0rsmYLsmvOMhsv8U+Xp5ZcN1XNKfVt8DbmINFkRn2SRPPIebyG1DIYQQyxMZQUFY
eHktj5sYhQB6CKhibjSNJYQQ14PRj4gxeuLltzxuYgQLnBI6ayLBI4QQ14J+PWKXjQduYikWMK+2Rudu
SPAIIcR1YDoqYqwV8vJbHjexBALlIXCKNZHgEUKI9WHRe8Qu/dKKm3gWC5BfDwFTrI0EjxBC9IWXRbJG
VMgnut0Cbzx5eV4CN/EMFhjZh8YLmGJtJHiEEKIPvEq9GSMrvG4e3cKBvGr2BFtpe4xi3MQzWFBcafM8
UYYEjxBCtIfRFM8QPoz40Be/GvVh2iqyp87eLvvK+Yab+AoLhuwY7AVJcR0keIQQoi2le+Fsm+xB6U7L
z+yyC5M33MRXWCDU21f34NLDmkIIMZDoXjjZdum1Ohtu4issCErs3APtsiyEEG2IvjWVaYws3eITJG7i
KywISuzch1vcCEII0ZlH63V6GYuZbzN67ya+wgKgXjm/D88+NCeEECJG5pqbUkPoXH6dzh438RUWAD8f
AqK4LhI7QgiRCyMqo4ypq1sJHXATz2BBUN/CugcSO0IIkQtiY4Txivotlya4iWewIPjJ0F4710drdoQQ
Ih9Gd3gJpGYjwLPGlNmtH1zdxLNYIGS/nX92gVFci8tvNCWEEIPhgZJ9zWo3BvSMPlx7phluYgkWECV4
rsvt5nWFEGIwvJL+u4FQKTVGiRBNNZ+duCRuYikERUOC51pws7ntLYQQohuIFqagGKGhXz7Cv4GWHDzB
TYxgwbGX4Plu/Gn8tUsTuWgzQSGEEJfBTYxiQbK14PkQhO1vvrwu0ZOLhI4QQohL4SbWYMGyleB5GITt
3xA9jPZ4x60K/vB6PyNZ3r+3QEJHCCHE5XATa7GgmS14TgVh+x2bHa68/w+v8vMpjg8Ly+zvHj5J6Agh
hLgkbmIGFjyzBE9xELZj2AMI0dBjDVEGiJmneyD8+I13bAYSOkIIIS6Lm5iFBdFawVMdhC2PL8aMmx8y
PUXZTq+gt9+2EDwSOkIIIS6Nm5iJBdOo4EkNwpbfDAuZEV18RDW8/4Edmyl4JHSEEEJcHjcxGwuqpYIn
PQhbnkxteefqRdoulpZXhuCR0BFCCHEL3MQWWHBl8fCZN4u+ecdn4JyrF+xo6ZYpiuVZI3gkdIQQQtwG
N7ElFmgfraHhVeumHyo7nK8n7HLplqkGyzcieCR0hBBC3Ao3sQcWdBnpYX+cpgJnz49gP4ImYgcs7xLB
I6EjhBDidriJV8UJ/r1oJnaA/A/nO8J6KX35VgghxC1xE6/KQQD0pKnYATsHI2XfjP26KP4bIaQPxAkh
hLgtbuJV2YmA3jQXO0IIIYTwcROviiNCeiGxI4QQQgzCTbwqjgjphcSOEEIIMQg38ao4IqQXEjtCCCHE
INzEq+KIkF5I7AghhBCDcBOviiNCeiGxI4QQQgzCTbwqJjpGfQz0q1ceIYQQQrTHTbwqJjr4JIUnRlrT
bZdoIYQQQnzETbwqJjr4LpcnRlryj1cWIYQQQvTBTbwyJj68j5C2ROt1hBBCiIG4iVfGxAcfH/VESQu+
e2UQQgghRD/cxKtjIoTpLD6O6QmULFgMrW9SCSGEEINxE++ACZHtw5nZ01p8fFNfGBdCCCEmwU28GyZO
PhlMb1Xh5S2EEEKIkfz7n/8CPSRLBmvkLakAAAAASUVORK5CYII=
</value>
</data>
</root>

154
Wardrobe/GUI/Main_Menu.vb Normal file
View File

@ -0,0 +1,154 @@

Public Class Main_Menu
Private Sub Generate_Folders()
' 3D-Models
Settings.folderPaths.Add("models3D", Settings.folderPaths("order") & "\3D-Models")
System.IO.Directory.CreateDirectory(Settings.folderPaths("models3D"))
Settings.folderPaths.Add("models3D_gratings", Settings.folderPaths("models3D") & "\Floor Gratings")
System.IO.Directory.CreateDirectory(Settings.folderPaths("models3D_gratings"))
Settings.folderPaths.Add("models3D_gratings_sw", Settings.folderPaths("models3D_gratings") & "\SLD")
System.IO.Directory.CreateDirectory(Settings.folderPaths("models3D_gratings_sw"))
Settings.folderPaths.Add("models3D_gratings_sw_support", Settings.folderPaths("models3D_gratings_sw") & "\Support Models")
System.IO.Directory.CreateDirectory(Settings.folderPaths("models3D_gratings_sw_support"))
Settings.folderPaths.Add("models3D_gratings_stp", Settings.folderPaths("models3D_gratings") & "\STEP")
System.IO.Directory.CreateDirectory(Settings.folderPaths("models3D_gratings_stp"))
Settings.folderPaths.Add("models3D_frames", Settings.folderPaths("models3D") & "\Frames")
System.IO.Directory.CreateDirectory(Settings.folderPaths("models3D_frames"))
Settings.folderPaths.Add("models3D_frames_sw", Settings.folderPaths("models3D_frames") & "\SLD")
System.IO.Directory.CreateDirectory(Settings.folderPaths("models3D_frames_sw"))
Settings.folderPaths.Add("models3D_frames_sw_support", Settings.folderPaths("models3D_frames_sw") & "\Support Models")
System.IO.Directory.CreateDirectory(Settings.folderPaths("models3D_frames_sw_support"))
Settings.folderPaths.Add("models3D_frames_stp", Settings.folderPaths("models3D_frames") & "\STEP")
System.IO.Directory.CreateDirectory(Settings.folderPaths("models3D_frames_stp"))
' Drawings
Settings.folderPaths.Add("drawings", Settings.folderPaths("order") & "\Drawings")
System.IO.Directory.CreateDirectory(Settings.folderPaths("drawings"))
Settings.folderPaths.Add("drawings_gratings", Settings.folderPaths("drawings") & "\Floor Gratings")
System.IO.Directory.CreateDirectory(Settings.folderPaths("drawings_gratings"))
Settings.folderPaths.Add("drawings_gratings_sw", Settings.folderPaths("drawings_gratings") & "\SLD")
System.IO.Directory.CreateDirectory(Settings.folderPaths("drawings_gratings_sw"))
Settings.folderPaths.Add("drawings_gratings_pdf", Settings.folderPaths("drawings_gratings") & "\PDF")
System.IO.Directory.CreateDirectory(Settings.folderPaths("drawings_gratings_pdf"))
Settings.folderPaths.Add("drawings_frames", Settings.folderPaths("drawings") & "\Frames")
System.IO.Directory.CreateDirectory(Settings.folderPaths("drawings_frames"))
Settings.folderPaths.Add("drawings_frames_sw", Settings.folderPaths("drawings_frames") & "\SLD")
System.IO.Directory.CreateDirectory(Settings.folderPaths("drawings_frames_sw"))
Settings.folderPaths.Add("drawings_frames_pdf", Settings.folderPaths("drawings_frames") & "\PDF")
System.IO.Directory.CreateDirectory(Settings.folderPaths("drawings_frames_pdf"))
' Quote
Settings.folderPaths.Add("quote", Settings.folderPaths("order") & "\Quote")
System.IO.Directory.CreateDirectory(Settings.folderPaths("quote"))
' Placement Guides
Settings.folderPaths.Add("guide", Settings.folderPaths("order") & "\Instructions")
System.IO.Directory.CreateDirectory(Settings.folderPaths("guide"))
End Sub
' ---------------------------------- Create Order Button ----------------------------------
Private Sub Button_Order_Click(sender As Object, e As EventArgs) Handles PictureBox_CreateOrder.Click
PictureBox_Individual.Enabled = True
PictureBox_Individual.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_Individual1_01
PictureBox_Multiple.Enabled = True
PictureBox_Multiple.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_Multiple1_01
Settings.folderPaths.Add("order", Settings.exportFolder & "\Order " & GUI_Export.Get_RandomNumber(100000, 999999))
System.IO.Directory.CreateDirectory(Settings.folderPaths("order"))
End Sub
Private Sub PictureBox_CreateOrder_MouseEnter(sender As Object, e As EventArgs) Handles PictureBox_CreateOrder.MouseEnter
PictureBox_CreateOrder.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_CreateOrder2_01
PictureBox_CreateOrder.Cursor = Cursors.Hand
End Sub
Private Sub PictureBox_CreateOrder_MouseLeave(sender As Object, e As EventArgs) Handles PictureBox_CreateOrder.MouseLeave
PictureBox_CreateOrder.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_CreateOrder1_01
PictureBox_CreateOrder.Cursor = Cursors.Default
End Sub
' ---------------------------------- Create Individual Button ----------------------------------
Private Sub Button_Individual_Click(sender As Object, e As EventArgs) Handles PictureBox_Individual.Click
If AppForm.fillMode = True Then
Grating_Configurator.Panel_Data.Controls.RemoveByKey("Label_Max_Load")
RemoveHandler Grating_Configurator.Panel_Data.Controls("TextBox_Max_Load").KeyPress, AddressOf Grating_Configurator.TextBox_Max_Load_KeyPress
Grating_Configurator.Panel_Data.Controls.RemoveByKey("TextBox_Max_Load")
Grating_Configurator.Panel_Data.Controls.RemoveByKey("Label_Max_Load_Unit")
Grating_Configurator.Panel_Data.Controls.RemoveByKey("Label_Max_Weight")
RemoveHandler Grating_Configurator.Panel_Data.Controls("TextBox_Max_Weight").KeyPress, AddressOf Grating_Configurator.TextBox_Max_Load_KeyPress
Grating_Configurator.Panel_Data.Controls.RemoveByKey("TextBox_Max_Weight")
Grating_Configurator.Panel_Data.Controls.RemoveByKey("Label_Max_Weight_Unit")
RemoveHandler Grating_Configurator.Panel_Data.Controls("Button_Calculate").Click, AddressOf Grating_Configurator.Button_Calculate_Click
Grating_Configurator.Panel_Data.Controls.RemoveByKey("Button_Calculate")
End If
AppForm.fillMode = False
AppForm.Panel_Start.Controls.Clear()
Grating_Configurator.TopLevel = False
AppForm.Panel_Start.Controls.Add(Grating_Configurator)
AppForm.Width = 1400
AppForm.Height = 800
AppForm.Top = 20
AppForm.Left = 50
Grating_Configurator.Load_GUI()
Grating_Configurator.Show()
Generate_Folders()
End Sub
Private Sub PictureBox_Individual_MouseEnter(sender As Object, e As EventArgs) Handles PictureBox_Individual.MouseEnter
PictureBox_Individual.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_Individual2_01
PictureBox_Individual.Cursor = Cursors.Hand
End Sub
Private Sub PictureBox_Individual_MouseLeave(sender As Object, e As EventArgs) Handles PictureBox_Individual.MouseLeave
PictureBox_Individual.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_Individual1_01
PictureBox_Individual.Cursor = Cursors.Default
End Sub
' ---------------------------------- Create Multiple Button ----------------------------------
Private Sub Button_Multiple_Click(sender As Object, e As EventArgs) Handles PictureBox_Multiple.Click
AppForm.fillMode = True
AppForm.Panel_Start.Controls.Clear()
Grating_Configurator.TopLevel = False
AppForm.Panel_Start.Controls.Add(Grating_Configurator)
AppForm.Width = 1400
AppForm.Height = 800
AppForm.Top = 20
AppForm.Left = 50
Grating_Configurator.Load_GUI()
Grating_Configurator.Show()
Generate_Folders()
End Sub
Private Sub PictureBox_Multiple_MouseEnter(sender As Object, e As EventArgs) Handles PictureBox_Multiple.MouseEnter
PictureBox_Multiple.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_Multiple2_01
PictureBox_Multiple.Cursor = Cursors.Hand
End Sub
Private Sub PictureBox_Multiple_MouseLeave(sender As Object, e As EventArgs) Handles PictureBox_Multiple.MouseLeave
PictureBox_Multiple.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_Multiple1_01
PictureBox_Multiple.Cursor = Cursors.Default
End Sub
' ---------------------------------- Settings Button ----------------------------------
Private Sub Button_Settings_Click(sender As Object, e As EventArgs) Handles PictureBox_Settings.Click
AppForm.Panel_Start.Controls.Clear()
Settings.TopLevel = False
AppForm.Panel_Start.Controls.Add(Settings)
AppForm.Width = 440
AppForm.Height = 550
Settings.Init_Settings()
Settings.Show()
End Sub
Private Sub PictureBox_Settings_MouseEnter(sender As Object, e As EventArgs) Handles PictureBox_Settings.MouseEnter
PictureBox_Settings.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_Settings2
PictureBox_Settings.Cursor = Cursors.Hand
End Sub
Private Sub PictureBox_Settings_MouseLeave(sender As Object, e As EventArgs) Handles PictureBox_Settings.MouseLeave
PictureBox_Settings.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_Settings1
PictureBox_Settings.Cursor = Cursors.Default
End Sub
End Class

301
Wardrobe/GUI/Settings.Designer.vb generated Normal file
View File

@ -0,0 +1,301 @@
<Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()>
Partial Class Settings
Inherits System.Windows.Forms.Form
'Form overrides dispose to clean up the component list.
<System.Diagnostics.DebuggerNonUserCode()>
Protected Overrides Sub Dispose(ByVal disposing As Boolean)
Try
If disposing AndAlso components IsNot Nothing Then
components.Dispose()
End If
Finally
MyBase.Dispose(disposing)
End Try
End Sub
'Required by the Windows Form Designer
Private components As System.ComponentModel.IContainer
'NOTE: The following procedure is required by the Windows Form Designer
'It can be modified using the Windows Form Designer.
'Do not modify it using the code editor.
<System.Diagnostics.DebuggerStepThrough()>
Private Sub InitializeComponent()
Me.Label_Name = New System.Windows.Forms.Label()
Me.TextBox_Name = New System.Windows.Forms.TextBox()
Me.Label_UserData = New System.Windows.Forms.Label()
Me.TextBox_Phone = New System.Windows.Forms.TextBox()
Me.Label_Tel = New System.Windows.Forms.Label()
Me.TextBox_Mail = New System.Windows.Forms.TextBox()
Me.Label_Mail = New System.Windows.Forms.Label()
Me.Label_Name_Needed = New System.Windows.Forms.Label()
Me.Label_Phone_Needed = New System.Windows.Forms.Label()
Me.Label_Mail_Needed = New System.Windows.Forms.Label()
Me.Label_KB_Updated = New System.Windows.Forms.Label()
Me.Label_File_Path = New System.Windows.Forms.Label()
Me.CheckBox_NoSW = New System.Windows.Forms.CheckBox()
Me.Panel1 = New System.Windows.Forms.Panel()
Me.Panel2 = New System.Windows.Forms.Panel()
Me.Panel3 = New System.Windows.Forms.Panel()
Me.PictureBox_Save = New System.Windows.Forms.PictureBox()
Me.PictureBox_UpdateKB = New System.Windows.Forms.PictureBox()
Me.PictureBox_FilePath = New System.Windows.Forms.PictureBox()
CType(Me.PictureBox_Save, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.PictureBox_UpdateKB, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.PictureBox_FilePath, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'Label_Name
'
Me.Label_Name.AutoSize = True
Me.Label_Name.ForeColor = System.Drawing.SystemColors.ControlLightLight
Me.Label_Name.Location = New System.Drawing.Point(75, 396)
Me.Label_Name.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label_Name.Name = "Label_Name"
Me.Label_Name.Size = New System.Drawing.Size(49, 17)
Me.Label_Name.TabIndex = 2
Me.Label_Name.Text = "Name:"
'
'TextBox_Name
'
Me.TextBox_Name.BackColor = System.Drawing.SystemColors.ScrollBar
Me.TextBox_Name.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.TextBox_Name.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.TextBox_Name.Location = New System.Drawing.Point(191, 393)
Me.TextBox_Name.Margin = New System.Windows.Forms.Padding(4)
Me.TextBox_Name.Name = "TextBox_Name"
Me.TextBox_Name.Size = New System.Drawing.Size(227, 24)
Me.TextBox_Name.TabIndex = 3
'
'Label_UserData
'
Me.Label_UserData.AutoSize = True
Me.Label_UserData.Font = New System.Drawing.Font("Microsoft Sans Serif", 14.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label_UserData.ForeColor = System.Drawing.SystemColors.ActiveCaptionText
Me.Label_UserData.Location = New System.Drawing.Point(73, 345)
Me.Label_UserData.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label_UserData.Name = "Label_UserData"
Me.Label_UserData.Size = New System.Drawing.Size(242, 29)
Me.Label_UserData.TabIndex = 4
Me.Label_UserData.Text = "Sales Representative"
'
'TextBox_Phone
'
Me.TextBox_Phone.BackColor = System.Drawing.SystemColors.ScrollBar
Me.TextBox_Phone.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.TextBox_Phone.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.TextBox_Phone.Location = New System.Drawing.Point(191, 443)
Me.TextBox_Phone.Margin = New System.Windows.Forms.Padding(4)
Me.TextBox_Phone.Name = "TextBox_Phone"
Me.TextBox_Phone.Size = New System.Drawing.Size(227, 24)
Me.TextBox_Phone.TabIndex = 6
'
'Label_Tel
'
Me.Label_Tel.AutoSize = True
Me.Label_Tel.ForeColor = System.Drawing.SystemColors.ControlLightLight
Me.Label_Tel.Location = New System.Drawing.Point(75, 447)
Me.Label_Tel.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label_Tel.Name = "Label_Tel"
Me.Label_Tel.Size = New System.Drawing.Size(107, 17)
Me.Label_Tel.TabIndex = 5
Me.Label_Tel.Text = "Phone Number:"
'
'TextBox_Mail
'
Me.TextBox_Mail.BackColor = System.Drawing.SystemColors.ScrollBar
Me.TextBox_Mail.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.TextBox_Mail.Font = New System.Drawing.Font("Microsoft Sans Serif", 9.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.TextBox_Mail.Location = New System.Drawing.Point(191, 495)
Me.TextBox_Mail.Margin = New System.Windows.Forms.Padding(4)
Me.TextBox_Mail.Name = "TextBox_Mail"
Me.TextBox_Mail.Size = New System.Drawing.Size(227, 24)
Me.TextBox_Mail.TabIndex = 8
'
'Label_Mail
'
Me.Label_Mail.AutoSize = True
Me.Label_Mail.ForeColor = System.Drawing.SystemColors.ControlLightLight
Me.Label_Mail.Location = New System.Drawing.Point(75, 499)
Me.Label_Mail.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label_Mail.Name = "Label_Mail"
Me.Label_Mail.Size = New System.Drawing.Size(37, 17)
Me.Label_Mail.TabIndex = 7
Me.Label_Mail.Text = "Mail:"
'
'Label_Name_Needed
'
Me.Label_Name_Needed.AutoSize = True
Me.Label_Name_Needed.ForeColor = System.Drawing.Color.Red
Me.Label_Name_Needed.Location = New System.Drawing.Point(427, 396)
Me.Label_Name_Needed.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label_Name_Needed.Name = "Label_Name_Needed"
Me.Label_Name_Needed.Size = New System.Drawing.Size(58, 17)
Me.Label_Name_Needed.TabIndex = 10
Me.Label_Name_Needed.Text = "Needed"
'
'Label_Phone_Needed
'
Me.Label_Phone_Needed.AutoSize = True
Me.Label_Phone_Needed.ForeColor = System.Drawing.Color.Red
Me.Label_Phone_Needed.Location = New System.Drawing.Point(427, 449)
Me.Label_Phone_Needed.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label_Phone_Needed.Name = "Label_Phone_Needed"
Me.Label_Phone_Needed.Size = New System.Drawing.Size(58, 17)
Me.Label_Phone_Needed.TabIndex = 11
Me.Label_Phone_Needed.Text = "Needed"
'
'Label_Mail_Needed
'
Me.Label_Mail_Needed.AutoSize = True
Me.Label_Mail_Needed.ForeColor = System.Drawing.Color.Red
Me.Label_Mail_Needed.Location = New System.Drawing.Point(427, 501)
Me.Label_Mail_Needed.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label_Mail_Needed.Name = "Label_Mail_Needed"
Me.Label_Mail_Needed.Size = New System.Drawing.Size(58, 17)
Me.Label_Mail_Needed.TabIndex = 12
Me.Label_Mail_Needed.Text = "Needed"
'
'Label_KB_Updated
'
Me.Label_KB_Updated.AutoSize = True
Me.Label_KB_Updated.BackColor = System.Drawing.SystemColors.ScrollBar
Me.Label_KB_Updated.Location = New System.Drawing.Point(68, 273)
Me.Label_KB_Updated.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label_KB_Updated.Name = "Label_KB_Updated"
Me.Label_KB_Updated.Size = New System.Drawing.Size(0, 17)
Me.Label_KB_Updated.TabIndex = 13
'
'Label_File_Path
'
Me.Label_File_Path.AutoSize = True
Me.Label_File_Path.BackColor = System.Drawing.SystemColors.ScrollBar
Me.Label_File_Path.Location = New System.Drawing.Point(68, 106)
Me.Label_File_Path.Margin = New System.Windows.Forms.Padding(4, 0, 4, 0)
Me.Label_File_Path.Name = "Label_File_Path"
Me.Label_File_Path.Size = New System.Drawing.Size(0, 17)
Me.Label_File_Path.TabIndex = 14
'
'CheckBox_NoSW
'
Me.CheckBox_NoSW.AutoSize = True
Me.CheckBox_NoSW.ForeColor = System.Drawing.SystemColors.ControlLightLight
Me.CheckBox_NoSW.Location = New System.Drawing.Point(65, 172)
Me.CheckBox_NoSW.Margin = New System.Windows.Forms.Padding(4)
Me.CheckBox_NoSW.Name = "CheckBox_NoSW"
Me.CheckBox_NoSW.Size = New System.Drawing.Size(179, 21)
Me.CheckBox_NoSW.TabIndex = 15
Me.CheckBox_NoSW.Text = "Run without SolidWorks"
Me.CheckBox_NoSW.UseVisualStyleBackColor = True
'
'Panel1
'
Me.Panel1.BackColor = System.Drawing.Color.Black
Me.Panel1.Location = New System.Drawing.Point(65, 152)
Me.Panel1.Name = "Panel1"
Me.Panel1.Size = New System.Drawing.Size(450, 1)
Me.Panel1.TabIndex = 19
'
'Panel2
'
Me.Panel2.BackColor = System.Drawing.Color.Black
Me.Panel2.Location = New System.Drawing.Point(65, 323)
Me.Panel2.Name = "Panel2"
Me.Panel2.Size = New System.Drawing.Size(450, 1)
Me.Panel2.TabIndex = 20
'
'Panel3
'
Me.Panel3.BackColor = System.Drawing.Color.Black
Me.Panel3.Location = New System.Drawing.Point(65, 555)
Me.Panel3.Name = "Panel3"
Me.Panel3.Size = New System.Drawing.Size(450, 1)
Me.Panel3.TabIndex = 21
'
'PictureBox_Save
'
Me.PictureBox_Save.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_SaveSettings1_01
Me.PictureBox_Save.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
Me.PictureBox_Save.Location = New System.Drawing.Point(245, 573)
Me.PictureBox_Save.Name = "PictureBox_Save"
Me.PictureBox_Save.Size = New System.Drawing.Size(110, 45)
Me.PictureBox_Save.TabIndex = 18
Me.PictureBox_Save.TabStop = False
'
'PictureBox_UpdateKB
'
Me.PictureBox_UpdateKB.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_UpdateKB1_01
Me.PictureBox_UpdateKB.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
Me.PictureBox_UpdateKB.Location = New System.Drawing.Point(65, 200)
Me.PictureBox_UpdateKB.Name = "PictureBox_UpdateKB"
Me.PictureBox_UpdateKB.Size = New System.Drawing.Size(402, 62)
Me.PictureBox_UpdateKB.TabIndex = 17
Me.PictureBox_UpdateKB.TabStop = False
'
'PictureBox_FilePath
'
Me.PictureBox_FilePath.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_FilePath1_01
Me.PictureBox_FilePath.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom
Me.PictureBox_FilePath.Location = New System.Drawing.Point(65, 34)
Me.PictureBox_FilePath.Name = "PictureBox_FilePath"
Me.PictureBox_FilePath.Size = New System.Drawing.Size(283, 62)
Me.PictureBox_FilePath.TabIndex = 16
Me.PictureBox_FilePath.TabStop = False
'
'Settings
'
Me.AutoScaleDimensions = New System.Drawing.SizeF(8.0!, 16.0!)
Me.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font
Me.BackColor = System.Drawing.Color.FromArgb(CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer), CType(CType(64, Byte), Integer))
Me.ClientSize = New System.Drawing.Size(600, 650)
Me.Controls.Add(Me.Panel3)
Me.Controls.Add(Me.Panel2)
Me.Controls.Add(Me.Panel1)
Me.Controls.Add(Me.PictureBox_Save)
Me.Controls.Add(Me.PictureBox_UpdateKB)
Me.Controls.Add(Me.PictureBox_FilePath)
Me.Controls.Add(Me.CheckBox_NoSW)
Me.Controls.Add(Me.Label_File_Path)
Me.Controls.Add(Me.Label_KB_Updated)
Me.Controls.Add(Me.Label_Mail_Needed)
Me.Controls.Add(Me.Label_Phone_Needed)
Me.Controls.Add(Me.Label_Name_Needed)
Me.Controls.Add(Me.TextBox_Mail)
Me.Controls.Add(Me.Label_Mail)
Me.Controls.Add(Me.TextBox_Phone)
Me.Controls.Add(Me.Label_Tel)
Me.Controls.Add(Me.Label_UserData)
Me.Controls.Add(Me.TextBox_Name)
Me.Controls.Add(Me.Label_Name)
Me.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None
Me.Margin = New System.Windows.Forms.Padding(4)
Me.Name = "Settings"
Me.Text = "Settings"
CType(Me.PictureBox_Save, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.PictureBox_UpdateKB, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.PictureBox_FilePath, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
Friend WithEvents Label_Name As Label
Friend WithEvents TextBox_Name As TextBox
Friend WithEvents Label_UserData As Label
Friend WithEvents TextBox_Phone As TextBox
Friend WithEvents Label_Tel As Label
Friend WithEvents TextBox_Mail As TextBox
Friend WithEvents Label_Mail As Label
Friend WithEvents Label_Name_Needed As Label
Friend WithEvents Label_Phone_Needed As Label
Friend WithEvents Label_Mail_Needed As Label
Friend WithEvents Label_KB_Updated As Label
Friend WithEvents Label_File_Path As Label
Friend WithEvents CheckBox_NoSW As CheckBox
Friend WithEvents PictureBox_FilePath As PictureBox
Friend WithEvents PictureBox_UpdateKB As PictureBox
Friend WithEvents PictureBox_Save As PictureBox
Friend WithEvents Panel1 As Panel
Friend WithEvents Panel2 As Panel
Friend WithEvents Panel3 As Panel
End Class

120
Wardrobe/GUI/Settings.resx Normal file
View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

204
Wardrobe/GUI/Settings.vb Normal file
View File

@ -0,0 +1,204 @@
Imports XCCLibrary
Public Class Settings
Public Shared filesFolder As String
Public Shared HLCtFolder As String
Public Shared folderPaths As New Dictionary(Of String, String)
Private Shared appDataList As New List(Of String)
Public Shared withoutSW As Boolean
Public Shared KBUpdateTime As String
Public Shared KBUpdateTimeHead As String = "Knowledge Base: Last Updated"
Public Shared exportFolder As String
Public Shared exportFolderHead As String = "Export Folder Path"
Public Shared SRName, SRPhone, SRMail As String
Public Shared SRNameHead As String = "Sales Representative: Name"
Public Shared SRPhoneHead As String = "Sales Representative: Phone Number"
Public Shared SRMailHead As String = "Sales Representative: Mail"
Public Sub Init_Settings()
PictureBox_FilePath.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_FilePath1_01
PictureBox_UpdateKB.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_UpdateKB1_01
PictureBox_Save.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_SaveSettings1_01
Dim appData As String() = System.IO.File.ReadAllLines(AppForm.appDataPath & "\SavedData.txt")
appDataList.Clear()
For i = 0 To appData.Length - 1
appDataList.Add(appData(i))
Next
TextBox_Name.Text = SRName
TextBox_Phone.Text = SRPhone
TextBox_Mail.Text = SRMail
Label_KB_Updated.Text = "Last Updated: " & KBUpdateTime
Label_File_Path.Text = exportFolder
End Sub
Private Sub TextBox_Name_Leave(sender As Object, e As EventArgs) Handles TextBox_Name.Leave
SRName = sender.Text
Update_AppData(SRNameHead, SRName)
End Sub
Private Sub TextBox_Phone_Leave(sender As Object, e As EventArgs) Handles TextBox_Phone.Leave
SRPhone = sender.Text
Update_AppData(SRPhoneHead, SRPhone)
End Sub
Private Sub TextBox_Mail_Leave(sender As Object, e As EventArgs) Handles TextBox_Mail.Leave
SRMail = sender.Text
Update_AppData(SRMailHead, SRMail)
End Sub
Private Sub CheckBox_NoSW_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox_NoSW.CheckedChanged
If CheckBox_NoSW.Checked = True Then
withoutSW = True
PictureBox_UpdateKB.Enabled = False
PictureBox_UpdateKB.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_UpdateKB3_01
Label_KB_Updated.Text = ""
Else
withoutSW = False
PictureBox_UpdateKB.Enabled = True
PictureBox_UpdateKB.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_UpdateKB1_01
Label_KB_Updated.Text = "Last Updated: " & KBUpdateTime
Label_KB_Updated.ForeColor = Color.Black
End If
End Sub
' ---------------------------------- Update File Path Button ----------------------------------
Private Sub Button_FilePath_Click(sender As Object, e As EventArgs) Handles PictureBox_FilePath.Click
Dim ofd As FolderBrowserDialog = New FolderBrowserDialog
If ofd.ShowDialog() <> DialogResult.Cancel Then
Settings.exportFolder = ofd.SelectedPath
Update_AppData(exportFolderHead, ofd.SelectedPath)
Label_File_Path.Text = exportFolder
End If
End Sub
Private Sub PictureBox_FilePath_MouseEnter(sender As Object, e As EventArgs) Handles PictureBox_FilePath.MouseEnter
PictureBox_FilePath.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_FilePath2_01
PictureBox_FilePath.Cursor = Cursors.Hand
End Sub
Private Sub PictureBox_FilePath_MouseLeave(sender As Object, e As EventArgs) Handles PictureBox_FilePath.MouseLeave
PictureBox_FilePath.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_FilePath1_01
PictureBox_FilePath.Cursor = Cursors.Default
End Sub
' ---------------------------------- Update KB Button ----------------------------------
Private Sub Button_KB_Click(sender As Object, e As EventArgs) Handles PictureBox_UpdateKB.Click
Cursor.Current = Cursors.WaitCursor
adminClass.updateDatabase() 'Update KB
Dim timeNow As Date = Date.Now
KBUpdateTime = timeNow.ToString()
Label_KB_Updated.Text = "Last Updated: " & KBUpdateTime
Update_AppData(KBUpdateTimeHead, KBUpdateTime)
Cursor.Current = Cursors.Default
End Sub
Private Sub PictureBox_UpdateKB_MouseEnter(sender As Object, e As EventArgs) Handles PictureBox_UpdateKB.MouseEnter
PictureBox_UpdateKB.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_UpdateKB2_01
PictureBox_UpdateKB.Cursor = Cursors.Hand
End Sub
Private Sub PictureBox_UpdateKB_MouseLeave(sender As Object, e As EventArgs) Handles PictureBox_UpdateKB.MouseLeave
PictureBox_UpdateKB.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_UpdateKB1_01
PictureBox_UpdateKB.Cursor = Cursors.Default
End Sub
' ---------------------------------- Save Button ----------------------------------
Private Sub Button_Save_Click(sender As Object, e As EventArgs) Handles PictureBox_Save.Click
System.IO.File.WriteAllLines(AppForm.appDataPath & "\SavedData.txt", appDataList.ToArray())
Check_Settings()
AppForm.Panel_Start.Controls.Clear()
Main_Menu.TopLevel = False
AppForm.Panel_Start.Controls.Add(Main_Menu)
AppForm.Width = 800
AppForm.Height = 500
Main_Menu.Show()
End Sub
Private Sub PictureBox_Save_MouseEnter(sender As Object, e As EventArgs) Handles PictureBox_Save.MouseEnter
PictureBox_Save.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_SaveSettings2_01
PictureBox_Save.Cursor = Cursors.Hand
End Sub
Private Sub PictureBox_Save_MouseLeave(sender As Object, e As EventArgs) Handles PictureBox_Save.MouseLeave
PictureBox_Save.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_SaveSettings1_01
PictureBox_Save.Cursor = Cursors.Default
End Sub
Public Sub Check_Settings()
If SRName <> "" AndAlso SRPhone <> "" AndAlso SRMail <> "" AndAlso exportFolder <> "" Then
Main_Menu.PictureBox_CreateOrder.Enabled = True
Main_Menu.PictureBox_CreateOrder.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_CreateOrder1_01
Main_Menu.Label_SettingsError.Visible = False
Else
Main_Menu.PictureBox_CreateOrder.Enabled = False
Main_Menu.PictureBox_CreateOrder.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_CreateOrder3_01
Main_Menu.Label_SettingsError.Visible = True
End If
If exportFolder = "" Then
Label_File_Path.Text = "Needed"
Label_File_Path.ForeColor = Color.Red
Else
Label_File_Path.ForeColor = Color.Black
End If
If withoutSW = False AndAlso KBUpdateTime = "" Then
Label_KB_Updated.Text = "Update"
Label_KB_Updated.ForeColor = Color.Red
Else
Label_KB_Updated.ForeColor = Color.Black
End If
If SRName <> "" Then
Label_Name_Needed.Visible = False
Else
Label_Name_Needed.Visible = True
End If
If SRPhone <> "" Then
Label_Phone_Needed.Visible = False
Else
Label_Phone_Needed.Visible = True
End If
If SRMail <> "" Then
Label_Mail_Needed.Visible = False
Else
Label_Mail_Needed.Visible = True
End If
End Sub
Private Shared Sub Update_AppData(dataName As String, data As String)
Dim pathUpdated As Boolean = False
For i = 0 To appDataList.Count - 1
If appDataList(i) = dataName Then
appDataList(i + 1) = data
pathUpdated = True
Exit For
End If
Next
If pathUpdated = False Then
appDataList.Add("")
appDataList.Add(dataName)
appDataList.Add(data)
End If
End Sub
End Class

View File

@ -0,0 +1,272 @@
Public Class Calculate_Fill_Grid
Public Shared maxGratingWidth, maxGratingLength As Integer
Public Shared numOfHorizontal, numOfVertical As Integer
Public Shared gratingLength, gratingWidth As Integer
Public Shared gratingDimensionsDT As New DataTable
Public Shared supportBeamsDT As New DataTable
Public Shared withSupportBeam As Boolean = False
Public Shared Sub Calculate_Grid()
maxGratingWidth = Get_Max_Width()
maxGratingLength = Get_Max_Length(maxGratingWidth)
Get_NumOf_Vertical(maxGratingWidth)
Get_NumOf_Horizontal(maxGratingLength)
Fill_Dimension_DT()
Get_Grid_Beams()
Calculate_Support_Beams()
Grating_Configurator.Panel_Grating.Refresh()
End Sub
Private Shared Function Get_Max_Width()
If Data.gratingW >= 1000 Then
If Data.gratingW Mod 1000 > 0 AndAlso Data.gratingW Mod 1000 <= 200 Then
Return (Data.gratingW Mod 1000) + 1000
End If
Return 1000
End If
Return Data.gratingW
End Function
Private Shared Function Get_Max_Length(gratingMaxWidth As Integer)
Dim maxWeight As Double = CDbl(Grating_Configurator.Panel_Data.Controls("TextBox_Max_Weight").Text)
Dim loadBarHeight As Integer = 25
Dim loadBarThickness As Integer = 2
Dim loadBarWeight As Double = 0
Dim crossBarWeight As Double = 0
If User_Input.gratingType = "Pressure Welded" Then
loadBarWeight = 0.385 ' För 1x1 m
If User_Input.CBDiameter = 5 Then
crossBarWeight = 0.153 ' För 1x1 m
Else
crossBarWeight = 0.259 ' För 1x1 m
End If
Else ' Type-A
crossBarWeight = 0.312 ' För 1x1 m
loadBarWeight = 0.337 ' För 1x1 m
End If
Dim LBHdiff As Double = 1 + (User_Input.gratingHeight - loadBarHeight) / loadBarHeight
loadBarWeight *= LBHdiff
Dim LBTdiff As Double = 1 + (User_Input.loadBarThickness - loadBarThickness) / loadBarThickness
loadBarWeight *= LBTdiff
Dim numOfLB As Integer = 1 + Math.Floor((1000 - User_Input.loadBarSpacing) / User_Input.loadBarSpacing)
Dim numOfCB As Integer = 1 + Math.Floor((1000 - User_Input.crossBarSpacing) / User_Input.crossBarSpacing)
Dim gratingWeight As Double = (numOfLB + 4) * loadBarWeight + numOfCB * crossBarWeight
Dim maxArea As Double = maxWeight / gratingWeight
Dim maxLength As Double = maxArea / (gratingMaxWidth / 1000)
maxLength = Math.Floor(maxLength * 10) * 100
Return CInt(maxLength)
End Function
Private Shared Sub Get_NumOf_Horizontal(maxGratingLength As Integer)
If (Data.gratingL / maxGratingLength) Mod 1 = 0 Then
numOfHorizontal = Data.gratingL / maxGratingLength
Else
numOfHorizontal = Math.Floor(Data.gratingL / maxGratingLength) + 1
End If
End Sub
Private Shared Sub Get_NumOf_Vertical(maxGratingWidth As Integer)
If Data.gratingW < 1000 Then
numOfVertical = 1
ElseIf Data.gratingW Mod 1000 = 0 Then
numOfVertical = Data.gratingW / 1000
Else
If Data.gratingW Mod 1000 <= 200 Then
numOfVertical = Math.Floor(Data.gratingW / 1000)
Else
numOfVertical = Math.Floor(Data.gratingW / 1000) + 1
End If
End If
End Sub
Private Shared Function Calculate_Grating_Length(gratingLength As Integer, modInterval As Integer)
Dim gLength As Integer
If Data.gratingL Mod gratingLength = 0 Then
gLength = gratingLength
ElseIf Data.gratingL Mod gratingLength >= 300 AndAlso Math.Floor((Data.gratingL + 0.5) / gratingLength) + 1 = numOfHorizontal Then
gLength = gratingLength
ElseIf Math.Floor((Data.gratingL + 0.5) / gratingLength) + 1 > numOfHorizontal Then
gLength = Calculate_Grating_Length(maxGratingLength, 10)
Else
gLength = Calculate_Grating_Length(gratingLength - modInterval, modInterval)
End If
Return gLength
End Function
Private Shared Sub Fill_Dimension_DT()
gratingDimensionsDT.Clear()
gratingDimensionsDT.Columns.Clear()
gratingDimensionsDT.Columns.Add("INDEX", GetType(Integer))
gratingDimensionsDT.Columns.Add("ROW", GetType(Integer))
gratingDimensionsDT.Columns.Add("COLUMN", GetType(Integer))
gratingDimensionsDT.Columns.Add("WIDTH", GetType(Integer))
gratingDimensionsDT.Columns.Add("LENGTH", GetType(Integer))
gratingLength = Calculate_Grating_Length(maxGratingLength, 100)
For i = 0 To numOfHorizontal * numOfVertical - 1
Dim tempDR As DataRow = gratingDimensionsDT.NewRow
tempDR("INDEX") = i
tempDR("ROW") = Math.Floor((i + 0.5) / numOfHorizontal)
tempDR("COLUMN") = i Mod numOfHorizontal
If tempDR("ROW") + 1 < numOfVertical Then
tempDR("WIDTH") = 1000
Else
If Data.gratingW Mod 1000 <= 200 Then
tempDR("WIDTH") = maxGratingWidth
Else
tempDR("WIDTH") = Data.gratingW Mod 1000
End If
End If
If tempDR("COLUMN") + 1 < numOfHorizontal Then
tempDR("LENGTH") = gratingLength
Else
tempDR("LENGTH") = Data.gratingL - gratingLength * (numOfHorizontal - 1)
End If
gratingDimensionsDT.Rows.Add(tempDR)
Next
End Sub
Private Shared Sub Calculate_Support_Beams()
' Hämta belastning från gui
Dim maxLoad As Double = CDbl(Grating_Configurator.Panel_Data.Controls("TextBox_Max_Load").Text)
' Kolla mot load tables och hitta max längd
Dim loadDT As DataTable = Database.database.Tables("LOAD")
Dim nameInDT As String = loadDT.Rows(0)("NAME")
Dim LBHeightInDT As Integer = loadDT.Rows(0)("LB-HEIGHT")
Dim LBThicknessInDT As Integer = loadDT.Rows(0)("LB-THICKNESS")
Dim loadName As String = User_Input.gratingName.Substring(0, 1)
If User_Input.gratingName.Substring(User_Input.gratingName.Length - 1, 1) = "T" Then
loadName += "-T"
ElseIf loadName = "A" Then
loadName += User_Input.gratingMesh.Split(" ")(0)
End If
Dim maxUnsupportedLenght As Integer
For i = 0 To loadDT.Rows.Count - 1
If loadName = nameInDT AndAlso User_Input.gratingHeight = LBHeightInDT _
AndAlso User_Input.loadBarThickness = LBThicknessInDT Then
If loadDT.Rows(i)("300") < maxLoad Then
MessageBox.Show("Max supported load for chosen grating parameters is: " & loadDT.Rows(i)("300") & " [kN/m^2]")
Return
End If
For j = loadDT.Columns.Count - 1 To 0 Step -1
If loadDT.Rows(i)(j) >= maxLoad Then
maxUnsupportedLenght = CInt(loadDT.Columns(j).ColumnName)
Exit For
End If
Next
Exit For
End If
Try
nameInDT = loadDT.Rows(i + 1)("NAME")
LBHeightInDT = loadDT.Rows(i + 1)("LB-HEIGHT")
LBThicknessInDT = loadDT.Rows(i + 1)("LB-THICKNESS")
Catch ex As Exception
End Try
Next
' Jämför med längd
If Math.Floor((gratingLength + 1) / maxUnsupportedLenght) < 1 Then '+1 för att floor inte kan hantera jämna tal
Return
End If
' Definera support beams
For i = 0 To numOfHorizontal - 1
Dim gratingL As Integer = gratingDimensionsDT.Rows(i)("LENGTH")
Dim numOfBeamsNeeded As Integer = Math.Floor((gratingL + 1) / maxUnsupportedLenght)
If numOfBeamsNeeded > 0 Then
Dim beamSpacing As Integer = (Math.Floor(((gratingL + 1) / (numOfBeamsNeeded + 1)) / 10)) * 10
For j = 1 To numOfBeamsNeeded
Dim tempDR As DataRow = supportBeamsDT.NewRow
tempDR("INDEX") = supportBeamsDT.Rows.Count + 1
tempDR("TYPE") = "Extra"
tempDR("COLUMN") = i
tempDR("COLUMN_OFFSET") = j * beamSpacing
tempDR("GLOBAL_OFFSET") = gratingLength * i + tempDR("COLUMN_OFFSET")
tempDR("LENGTH") = Data.gratingW
tempDR("OFFSET_TOP") = 0
tempDR("OFFSET_BOTTOM") = 0
tempDR("ROTATION") = 0
supportBeamsDT.Rows.Add(tempDR)
Next
End If
Next
End Sub
Private Shared Sub Get_Grid_Beams()
withSupportBeam = False
supportBeamsDT.Clear()
supportBeamsDT.Columns.Clear()
supportBeamsDT.Columns.Add("INDEX", GetType(Integer))
supportBeamsDT.Columns.Add("TYPE", GetType(String))
supportBeamsDT.Columns.Add("COLUMN", GetType(Integer))
supportBeamsDT.Columns.Add("COLUMN_OFFSET", GetType(Integer))
supportBeamsDT.Columns.Add("GLOBAL_OFFSET", GetType(Integer))
supportBeamsDT.Columns.Add("LENGTH", GetType(Integer))
supportBeamsDT.Columns.Add("OFFSET_TOP", GetType(Integer))
supportBeamsDT.Columns.Add("OFFSET_BOTTOM", GetType(Integer))
supportBeamsDT.Columns.Add("ROTATION", GetType(Integer))
'Horizontal Beams
For i = 0 To numOfVertical - 2
withSupportBeam = True
Dim tempDR As DataRow = supportBeamsDT.NewRow
tempDR("INDEX") = supportBeamsDT.Rows.Count + 1
tempDR("TYPE") = "Grid"
tempDR("GLOBAL_OFFSET") = gratingDimensionsDT.Rows(numOfHorizontal * (numOfVertical - 1))("WIDTH")
For j = 1 To i
tempDR("GLOBAL_OFFSET") += gratingDimensionsDT.Rows(numOfHorizontal * (numOfVertical - 1) - j * numOfHorizontal)("WIDTH")
Next
tempDR("LENGTH") = Data.gratingL
tempDR("OFFSET_TOP") = 0
tempDR("OFFSET_BOTTOM") = 0
tempDR("ROTATION") = 90
supportBeamsDT.Rows.Add(tempDR)
Next
'Vertical Beams
For i = 0 To numOfHorizontal - 2
withSupportBeam = True
Dim tempDR As DataRow = supportBeamsDT.NewRow
tempDR("INDEX") = supportBeamsDT.Rows.Count + 1
tempDR("TYPE") = "Grid"
tempDR("GLOBAL_OFFSET") = gratingDimensionsDT.Rows(0)("LENGTH")
For j = 1 To i
tempDR("GLOBAL_OFFSET") += gratingDimensionsDT.Rows(j)("LENGTH")
Next
tempDR("LENGTH") = Data.gratingW
tempDR("OFFSET_TOP") = 0
tempDR("OFFSET_BOTTOM") = 0
tempDR("ROTATION") = 0
supportBeamsDT.Rows.Add(tempDR)
Next
End Sub
End Class

View File

@ -0,0 +1,149 @@
Public Class Data
Public Shared grossAreaPoints As New DataTable
Public Shared gratingPoints As New DataTable
Public Shared gratingMiddlePoints As New DataTable
Public Shared angleRecessPoints As New DataTable
Public Shared guiPanelMidX, guiPanelMidY As Integer
Public Shared guiMaxDrawL As Integer = 1
Public Shared guiMaxDrawW As Integer = 1
Public Shared gratingW As Integer = 1000
Public Shared gratingL As Integer = 1000
Public Shared drawAR, gratingAR As Decimal
Public Shared scaleDiff As Decimal = 1
Public Shared recessData As New DataTable
Public Shared pointsMeasurements As New Dictionary(Of String, Integer())
' --- Initialize Datatables, measurments and more ---
Public Shared Sub Init_Data()
' Gross area points
grossAreaPoints.Columns.Add("NAME", GetType(String))
grossAreaPoints.Columns.Add("QUADRANT", GetType(String))
grossAreaPoints.Columns.Add("X", GetType(Decimal))
grossAreaPoints.Columns.Add("Y", GetType(Decimal))
grossAreaPoints.Columns.Add("GUI X", GetType(Integer))
grossAreaPoints.Columns.Add("GUI Y", GetType(Integer))
' Grating points
gratingPoints.Columns.Add("NAME", GetType(String))
gratingPoints.Columns.Add("QUADRANT", GetType(String))
gratingPoints.Columns.Add("X", GetType(Decimal))
gratingPoints.Columns.Add("Y", GetType(Decimal))
gratingPoints.Columns.Add("GUI X", GetType(Integer))
gratingPoints.Columns.Add("GUI Y", GetType(Integer))
gratingPoints.Columns.Add("RECESS OK", GetType(Boolean))
' Grating Middle points
gratingMiddlePoints.Columns.Add("NAME", GetType(String))
gratingMiddlePoints.Columns.Add("X", GetType(Decimal))
gratingMiddlePoints.Columns.Add("Y", GetType(Decimal))
gratingMiddlePoints.Columns.Add("GUI X", GetType(Integer))
gratingMiddlePoints.Columns.Add("GUI Y", GetType(Integer))
' Angle recess points
angleRecessPoints.Columns.Add("NAME", GetType(String))
angleRecessPoints.Columns.Add("QUADRANT", GetType(String))
angleRecessPoints.Columns.Add("GUI X", GetType(Integer))
angleRecessPoints.Columns.Add("GUI Y", GetType(Integer))
pointsMeasurements.Add("Lmes", {1, 2, 1})
pointsMeasurements.Add("Wmes", {2, 3, 2})
recessData.Columns.Add("RECESS TYPE", GetType(String))
recessData.Columns.Add("NAME", GetType(String))
recessData.Columns.Add("CORNER", GetType(Integer))
recessData.Columns.Add("SIDE", GetType(Integer))
recessData.Columns.Add("WIDTH", GetType(Integer))
recessData.Columns.Add("LENGTH", GetType(Integer))
recessData.Columns.Add("OFFSET", GetType(Integer))
recessData.Columns.Add("OFFSET X", GetType(Integer))
recessData.Columns.Add("OFFSET Y", GetType(Integer))
recessData.Columns.Add("GRATINGS", GetType(List(Of Integer)))
End Sub
Public Shared Sub Init_GrossAreaPoints()
Dim pointRow As DataRow = grossAreaPoints.NewRow
pointRow("NAME") = "P1"
pointRow("QUADRANT") = 1
pointRow("X") = (-gratingL / 2) / 1000
pointRow("Y") = (gratingW / 2) / 1000
pointRow("GUI X") = guiPanelMidX - guiMaxDrawL / 2
pointRow("GUI Y") = guiPanelMidY - guiMaxDrawW / 2
grossAreaPoints.Rows.Add(pointRow)
pointRow = grossAreaPoints.NewRow
pointRow("NAME") = "P2"
pointRow("QUADRANT") = 2
pointRow("X") = (gratingL / 2) / 1000
pointRow("Y") = (gratingW / 2) / 1000
pointRow("GUI X") = guiPanelMidX + guiMaxDrawL / 2
pointRow("GUI Y") = guiPanelMidY - guiMaxDrawW / 2
grossAreaPoints.Rows.Add(pointRow)
pointRow = grossAreaPoints.NewRow
pointRow("NAME") = "P3"
pointRow("QUADRANT") = 3
pointRow("X") = (gratingL / 2) / 1000
pointRow("Y") = (-gratingW / 2) / 1000
pointRow("GUI X") = guiPanelMidX + guiMaxDrawL / 2
pointRow("GUI Y") = guiPanelMidY + guiMaxDrawW / 2
grossAreaPoints.Rows.Add(pointRow)
pointRow = grossAreaPoints.NewRow
pointRow("NAME") = "P4"
pointRow("QUADRANT") = 4
pointRow("X") = (-gratingL / 2) / 1000
pointRow("Y") = (-gratingW / 2) / 1000
pointRow("GUI X") = guiPanelMidX - guiMaxDrawL / 2
pointRow("GUI Y") = guiPanelMidY + guiMaxDrawW / 2
grossAreaPoints.Rows.Add(pointRow)
End Sub
Public Shared Sub Init_GratingPoints()
Dim pointRow As DataRow = gratingPoints.NewRow
pointRow("NAME") = "P1"
pointRow("QUADRANT") = 1
pointRow("X") = (-gratingL / 2) / 1000
pointRow("Y") = (gratingW / 2) / 1000
pointRow("GUI X") = guiPanelMidX - guiMaxDrawL / 2
pointRow("GUI Y") = guiPanelMidY - guiMaxDrawW / 2
pointRow("RECESS OK") = True
gratingPoints.Rows.Add(pointRow)
pointRow = gratingPoints.NewRow
pointRow("NAME") = "P2"
pointRow("QUADRANT") = 2
pointRow("X") = (gratingL / 2) / 1000
pointRow("Y") = (gratingW / 2) / 1000
pointRow("GUI X") = guiPanelMidX + guiMaxDrawL / 2
pointRow("GUI Y") = guiPanelMidY - guiMaxDrawW / 2
pointRow("RECESS OK") = True
gratingPoints.Rows.Add(pointRow)
pointRow = gratingPoints.NewRow
pointRow("NAME") = "P3"
pointRow("QUADRANT") = 3
pointRow("X") = (gratingL / 2) / 1000
pointRow("Y") = (-gratingW / 2) / 1000
pointRow("GUI X") = guiPanelMidX + guiMaxDrawL / 2
pointRow("GUI Y") = guiPanelMidY + guiMaxDrawW / 2
pointRow("RECESS OK") = True
gratingPoints.Rows.Add(pointRow)
pointRow = gratingPoints.NewRow
pointRow("NAME") = "P4"
pointRow("QUADRANT") = 4
pointRow("X") = (-gratingL / 2) / 1000
pointRow("Y") = (-gratingW / 2) / 1000
pointRow("GUI X") = guiPanelMidX - guiMaxDrawL / 2
pointRow("GUI Y") = guiPanelMidY + guiMaxDrawW / 2
pointRow("RECESS OK") = True
gratingPoints.Rows.Add(pointRow)
End Sub
End Class

View File

@ -0,0 +1,79 @@
Imports System.Globalization
Imports Excel = Microsoft.Office.Interop.Excel
Public Class Database
Public Shared database As New DataSet
' --- Retrive the Excel database ---
Public Shared Sub Retrive_Database()
Dim excelApp As Excel.Application = New Excel.Application
Dim excelWB As Excel.Workbook
' Make .csv files of each sheet in Excel
excelApp.DisplayAlerts = False
Dim wSNames As New List(Of String)
excelWB = excelApp.Workbooks.Open(Settings.HLCtFolder & "\Database\Databas.xlsx")
For i = 1 To 5
Dim activeSheet As Excel.Worksheet
activeSheet = excelWB.Sheets(i)
wSNames.Add(activeSheet.Name)
activeSheet.SaveAs(Settings.HLCtFolder & "\Database\" & wSNames(i - 1), Excel.XlFileFormat.xlCSV)
System.Runtime.InteropServices.Marshal.ReleaseComObject(activeSheet)
Next
excelWB.Close()
excelApp.Quit()
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelWB)
System.Runtime.InteropServices.Marshal.ReleaseComObject(excelApp)
' Read all .csv files to local database
For i = 0 To wSNames.Count - 1
Dim tempDT As New DataTable With {
.TableName = wSNames(i)
}
Dim lines = IO.File.ReadAllLines(Settings.HLCtFolder & "\Database\" & wSNames(i) & ".csv")
' Create DataTable columns
Dim words As String() = lines(0).Split(New Char() {","c})
For j = 0 To words.Count - 1
Dim colName As String = words(j).Split("[")(0)
colName = colName.Substring(0, colName.Length - 1)
Dim type As String = words(j).Split("[")(1).Split("]")(0)
If type = "str" Then
tempDT.Columns.Add(colName, GetType(String))
ElseIf type = "int" Then
tempDT.Columns.Add(colName, GetType(Integer))
ElseIf type = "dbl" Then
tempDT.Columns.Add(colName, GetType(Double))
Else
tempDT.Columns.Add(colName, GetType(Boolean))
End If
Next
' Fill the DataTable with all data
For j = 1 To lines.Count - 1
Dim values As String() = lines(j).Split(New Char() {","c})
tempDT.Rows.Add()
For k = 0 To values.Count - 1
If tempDT.Columns(k).DataType = GetType(Double) Then
values(k) = CDbl(Val(values(k)))
End If
Try
tempDT.Rows(tempDT.Rows.Count - 1)(k) = values(k)
Catch ex As Exception
If values(k) <> "" AndAlso values(k) = 0 Then
tempDT.Rows(tempDT.Rows.Count - 1)(k) = False
ElseIf values(k) <> "" AndAlso values(k) = 1 Then
tempDT.Rows(tempDT.Rows.Count - 1)(k) = True
End If
End Try
Next
Next
' Add DataTable to local database (DataSet)
database.Tables.Add(tempDT)
Next
End Sub
End Class

View File

@ -0,0 +1,536 @@
Public Class User_Input
Public Shared gratingType, gratingMaterial, gratingMesh, gratingName As String
Public Shared gratingSerrated As Boolean = False
Public Shared gratingLacquered As Boolean = False
Public Shared loadBarSpacing, crossBarSpacing, gratingHeight, loadBarThickness As Integer
Public Shared CBDiameter, CBHeight, CBThickness As Double
Public Shared wholeMeshesColumn As String
Private Shared serratedCheckBox As New CheckBox
Private Shared serratedCheckBoxBol As Boolean = False
Private Shared lacqueredCheckBox As New CheckBox
Private Shared lacqueredCheckBoxBol As Boolean = False
Public Shared add3DGrating As Boolean = False
Public Shared addFrame As Boolean = False
Public Shared addGratingDrawing As Boolean = False
Public Shared addFrameDrawing As Boolean = False
Public Shared addInstructions As Boolean = False
Public Shared addQuote As Boolean = False
Public Shared add3DStep As Boolean = False
Public Shared preCutFrame As Boolean = False
Public Shared frameSize As Integer
Public Shared Sub TypeChanged(sender As Object, e As EventArgs)
Grating_Configurator.ComboBox_Material.Enabled = True
Grating_Configurator.ComboBox_Material.Items.Clear()
gratingType = Grating_Configurator.ComboBox_Type.Text
Dim materialDT As DataTable = Database.database.Tables("Material")
Dim typeInDT As String = materialDT.Rows(0)("TYPE")
For i = 0 To materialDT.Rows.Count - 1
If gratingType = typeInDT Then
Grating_Configurator.ComboBox_Material.Items.Add(materialDT.Rows(i)("MATERIAL"))
End If
Try
typeInDT = materialDT.Rows(i + 1)("TYPE")
Catch ex As Exception
End Try
Next
Grating_Configurator.ComboBox_Material.Text = Grating_Configurator.ComboBox_Material.Items(0)
End Sub
Public Shared Sub MaterialChanged(sender As Object, e As EventArgs)
Grating_Configurator.ComboBox_Mesh.Enabled = True
gratingMaterial = Grating_Configurator.ComboBox_Material.Text
Dim serratedDT As DataTable = Database.database.Tables("Serrated")
Dim removeCheckBox As Boolean = True
Dim typeInDT As String = serratedDT.Rows(0)("TYPE")
Dim materialInDT As String = serratedDT.Rows(0)("MATERIAL")
If serratedCheckBoxBol = False Then
For i = 0 To serratedDT.Rows.Count - 1
If gratingMaterial = materialInDT AndAlso gratingType = typeInDT Then
serratedCheckBox.Name = "CheckBox_Serrated"
serratedCheckBox.Text = "Serrated"
serratedCheckBox.Left = Grating_Configurator.ComboBox_Material.Left
serratedCheckBox.Top = Grating_Configurator.ComboBox_Material.Top + 25
serratedCheckBox.ForeColor = Color.White
AddHandler serratedCheckBox.CheckedChanged, AddressOf CheckBox_Serrated_CheckedChanged
Grating_Configurator.Panel_Data.Controls.Add(serratedCheckBox)
serratedCheckBoxBol = True
Exit For
End If
Try
typeInDT = serratedDT.Rows(i + 1)("TYPE")
materialInDT = serratedDT.Rows(i + 1)("MATERIAL")
Catch ex As Exception
End Try
Next
Else
For i = 0 To serratedDT.Rows.Count - 1
If gratingMaterial = materialInDT AndAlso gratingType = typeInDT Then
removeCheckBox = False
Exit For
End If
Try
typeInDT = serratedDT.Rows(i + 1)("TYPE")
materialInDT = serratedDT.Rows(i + 1)("MATERIAL")
Catch ex As Exception
End Try
Next
If serratedCheckBoxBol = True AndAlso removeCheckBox = True Then
RemoveHandler serratedCheckBox.CheckedChanged, AddressOf CheckBox_Serrated_CheckedChanged
Grating_Configurator.Panel_Data.Controls.RemoveByKey("CheckBox_Serrated")
serratedCheckBoxBol = False
gratingSerrated = False
End If
End If
If lacqueredCheckBoxBol = False AndAlso (gratingMaterial = "Hot dip galvanized steel" _
OrElse gratingMaterial = "Untreated") Then
lacqueredCheckBox.Name = "CheckBox_Lacquered"
lacqueredCheckBox.Text = "Lacquered"
lacqueredCheckBox.Left = Grating_Configurator.ComboBox_Material.Left
lacqueredCheckBox.Top = Grating_Configurator.ComboBox_Material.Top + 50
lacqueredCheckBox.ForeColor = Color.White
AddHandler lacqueredCheckBox.CheckedChanged, AddressOf CheckBox_Lacquered_CheckedChanged
Grating_Configurator.Panel_Data.Controls.Add(lacqueredCheckBox)
lacqueredCheckBoxBol = True
ElseIf lacqueredCheckBoxBol = True AndAlso gratingMaterial <> "Hot dip galvanized steel" _
AndAlso gratingMaterial <> "Untreated" Then
RemoveHandler lacqueredCheckBox.CheckedChanged, AddressOf CheckBox_Lacquered_CheckedChanged
Grating_Configurator.Panel_Data.Controls.RemoveByKey("CheckBox_Lacquered")
lacqueredCheckBoxBol = False
gratingLacquered = False
End If
Update_AvalaibleMeshes()
End Sub
Private Shared Sub CheckBox_Serrated_CheckedChanged(sender As Object, e As EventArgs)
If sender.Checked Then
gratingSerrated = True
Update_AvalaibleMeshes()
Else
gratingSerrated = False
Update_AvalaibleMeshes()
End If
End Sub
Private Shared Sub CheckBox_Lacquered_CheckedChanged(sender As Object, e As EventArgs)
If sender.Checked Then
gratingLacquered = True
Else
gratingLacquered = False
End If
End Sub
Private Shared Sub Update_AvalaibleMeshes()
Grating_Configurator.ComboBox_Height.Items.Clear()
Grating_Configurator.ComboBox_Height.Enabled = False
Grating_Configurator.ComboBox_Thickness.Items.Clear()
Grating_Configurator.ComboBox_Thickness.Enabled = False
Grating_Configurator.ComboBox_Mesh.Items.Clear()
Dim meshesDT As DataTable = Database.database.Tables("Meshes")
Dim typeInDT As String = meshesDT.Rows(0)("TYPE")
Dim materialInDT As String = meshesDT.Rows(0)("MATERIAL")
Dim serratedInDT As Boolean = CBool(meshesDT.Rows(0)("SERRATED"))
For i = 0 To meshesDT.Rows.Count - 1
If gratingSerrated = serratedInDT AndAlso gratingMaterial = materialInDT AndAlso gratingType = typeInDT Then
Dim item As String
item = meshesDT.Rows(i)("LB-SPACING") & "x" & meshesDT.Rows(i)("CB-SPACING") &
" (" & meshesDT.Rows(i)("NAME") & ")"
Dim addItem As Boolean = True
For j = 0 To Grating_Configurator.ComboBox_Mesh.Items.Count - 1
If item = Grating_Configurator.ComboBox_Mesh.Items(j) Then
addItem = False
Exit For
End If
Next
If addItem = True Then
Grating_Configurator.ComboBox_Mesh.Items.Add(item)
End If
End If
Try
typeInDT = meshesDT.Rows(i + 1)("TYPE")
materialInDT = meshesDT.Rows(i + 1)("MATERIAL")
serratedInDT = meshesDT.Rows(i + 1)("SERRATED")
Catch ex As Exception
End Try
Next
If Grating_Configurator.ComboBox_Mesh.Items.Count = 0 Then
Grating_Configurator.ComboBox_Mesh.Items.Add("")
End If
End Sub
Public Shared Sub MeshChanged(sender As Object, e As EventArgs)
Grating_Configurator.ComboBox_Thickness.Items.Clear()
Grating_Configurator.ComboBox_Thickness.Enabled = False
Grating_Configurator.ComboBox_Height.Enabled = True
Grating_Configurator.ComboBox_Height.Items.Clear()
gratingMesh = Grating_Configurator.ComboBox_Mesh.Text
loadBarSpacing = CInt(gratingMesh.Split("x")(0))
crossBarSpacing = CInt(gratingMesh.Split("x")(1).Split(" ")(0))
gratingName = gratingMesh.Split("(")(1).Split(")")(0)
' Add heights
Dim meshesDT As DataTable = Database.database.Tables("Meshes")
Dim nameInDT As String = meshesDT.Rows(0)("NAME")
Dim materialInDT As String = meshesDT.Rows(0)("MATERIAL")
Dim serratedInDT As Boolean = CBool(meshesDT.Rows(0)("SERRATED"))
Dim LBSpacingInDT As Integer = CInt(meshesDT.Rows(0)("LB-SPACING"))
Dim CBSpacingInDT As Integer = CInt(meshesDT.Rows(0)("CB-SPACING"))
Dim tempList As New List(Of Integer)
For i = 0 To meshesDT.Rows.Count - 1
If gratingName = nameInDT AndAlso loadBarSpacing = LBSpacingInDT AndAlso crossBarSpacing = CBSpacingInDT _
AndAlso gratingSerrated = serratedInDT AndAlso gratingMaterial = materialInDT Then
Dim addItem As Boolean = True
For j = 0 To tempList.Count - 1
If meshesDT.Rows(i)("LB-HEIGHT") = tempList(j) Then
addItem = False
Exit For
End If
Next
If addItem = True Then
tempList.Add(CInt(meshesDT.Rows(i)("LB-HEIGHT")))
End If
End If
Try
nameInDT = meshesDT.Rows(i + 1)("NAME")
materialInDT = meshesDT.Rows(i + 1)("MATERIAL")
serratedInDT = CBool(meshesDT.Rows(i + 1)("SERRATED"))
LBSpacingInDT = CInt(meshesDT.Rows(i + 1)("LB-SPACING"))
CBSpacingInDT = CInt(meshesDT.Rows(i + 1)("CB-SPACING"))
Catch ex As Exception
End Try
Next
tempList.Sort()
For i = 0 To tempList.Count - 1
Grating_Configurator.ComboBox_Height.Items.Add(tempList(i))
Next
End Sub
Public Shared Sub HeightChanged(sender As Object, e As EventArgs)
Grating_Configurator.ComboBox_Thickness.Enabled = True
Grating_Configurator.ComboBox_Thickness.Items.Clear()
gratingHeight = CInt(Grating_Configurator.ComboBox_Height.Text)
Dim meshesDT As DataTable = Database.database.Tables("Meshes")
Dim nameInDT As String = meshesDT.Rows(0)("NAME")
Dim materialInDT As String = meshesDT.Rows(0)("MATERIAL")
Dim serratedInDT As Boolean = CBool(meshesDT.Rows(0)("SERRATED"))
Dim LBSpacingInDT As Integer = CInt(meshesDT.Rows(0)("LB-SPACING"))
Dim CBSpacingInDT As Integer = CInt(meshesDT.Rows(0)("CB-SPACING"))
Dim HeightInDT As Integer = CInt(meshesDT.Rows(0)("LB-HEIGHT"))
Dim tempList As New List(Of Integer)
For i = 0 To meshesDT.Rows.Count - 1
If gratingName = nameInDT AndAlso loadBarSpacing = LBSpacingInDT AndAlso crossBarSpacing = CBSpacingInDT _
AndAlso gratingSerrated = serratedInDT AndAlso gratingMaterial = materialInDT _
AndAlso gratingHeight = HeightInDT Then
Dim addItem As Boolean = True
For j = 0 To tempList.Count - 1
If meshesDT.Rows(i)("LB-THICKNESS") = tempList(j) Then
addItem = False
Exit For
End If
Next
If addItem = True Then
tempList.Add(CInt(meshesDT.Rows(i)("LB-THICKNESS")))
End If
End If
Try
nameInDT = meshesDT.Rows(i + 1)("NAME")
materialInDT = meshesDT.Rows(i + 1)("MATERIAL")
serratedInDT = CBool(meshesDT.Rows(i + 1)("SERRATED"))
LBSpacingInDT = CInt(meshesDT.Rows(i + 1)("LB-SPACING"))
CBSpacingInDT = CInt(meshesDT.Rows(i + 1)("CB-SPACING"))
HeightInDT = CInt(meshesDT.Rows(i + 1)("LB-HEIGHT"))
Catch ex As Exception
End Try
Next
tempList.Sort()
For i = 0 To tempList.Count - 1
Grating_Configurator.ComboBox_Thickness.Items.Add(tempList(i))
Next
For i = 0 To Grating_Configurator.ComboBox_Frame.Items.Count - 1
Dim item As String = Grating_Configurator.ComboBox_Frame.Items(i)
If CInt(item.Split(" ")(0)) = gratingHeight + 5 Then
Grating_Configurator.ComboBox_Frame.Text = Grating_Configurator.ComboBox_Frame.Items(i)
Exit For
End If
Next
End Sub
Public Shared Sub ThicknessChanged(sender As Object, e As EventArgs)
Grating_Configurator.ComboBox_Width.Enabled = True
Grating_Configurator.ComboBox_Width.Items.Clear()
Grating_Configurator.TextBox_Width.Enabled = True
Grating_Configurator.TextBox_Length.Text = 1000
Grating_Configurator.TextBox_Length.Enabled = True
If AppForm.fillMode = False Then
Grating_Configurator.Panel_Data.Controls("CheckBox_Whole_Mesh").Enabled = True
End If
loadBarThickness = CInt(Grating_Configurator.ComboBox_Thickness.Text)
Dim meshesDT As DataTable = Database.database.Tables("Meshes")
Dim nameInDT As String = meshesDT.Rows(0)("NAME")
Dim materialInDT As String = meshesDT.Rows(0)("MATERIAL")
Dim serratedInDT As Boolean = CBool(meshesDT.Rows(0)("SERRATED"))
Dim LBSpacingInDT As Integer = CInt(meshesDT.Rows(0)("LB-SPACING"))
Dim CBSpacingInDT As Integer = CInt(meshesDT.Rows(0)("CB-SPACING"))
Dim HeightInDT As Integer = CInt(meshesDT.Rows(0)("LB-HEIGHT"))
Dim ThicknessInDT As Integer = CInt(meshesDT.Rows(0)("LB-THICKNESS"))
For i = 0 To meshesDT.Rows.Count - 1
If gratingName = nameInDT AndAlso loadBarSpacing = LBSpacingInDT AndAlso crossBarSpacing = CBSpacingInDT _
AndAlso gratingSerrated = serratedInDT AndAlso gratingMaterial = materialInDT _
AndAlso gratingHeight = HeightInDT AndAlso loadBarThickness = ThicknessInDT Then
wholeMeshesColumn = meshesDT.Rows(i)("WHOLE MESHES")
If gratingType = "Pressure Welded" Then
CBDiameter = meshesDT.Rows(i)("CB-DIAMETER")
CBHeight = 0
CBThickness = 0
Else
CBDiameter = 0
CBHeight = meshesDT.Rows(i)("CB-HEIGHT")
CBThickness = meshesDT.Rows(i)("CB-THICKNESS")
End If
Exit For
End If
Try
nameInDT = meshesDT.Rows(i + 1)("NAME")
materialInDT = meshesDT.Rows(i + 1)("MATERIAL")
serratedInDT = CBool(meshesDT.Rows(i + 1)("SERRATED"))
LBSpacingInDT = CInt(meshesDT.Rows(i + 1)("LB-SPACING"))
CBSpacingInDT = CInt(meshesDT.Rows(i + 1)("CB-SPACING"))
HeightInDT = CInt(meshesDT.Rows(i + 1)("LB-HEIGHT"))
ThicknessInDT = CInt(meshesDT.Rows(i + 1)("LB-THICKNESS"))
Catch ex As Exception
End Try
Next
Dim wholeMeshesDT As DataTable = Database.database.Tables("Whole Meshes")
For i = 0 To wholeMeshesDT.Rows.Count - 1
If Not IsDBNull(wholeMeshesDT.Rows(i)(wholeMeshesColumn)) Then
Grating_Configurator.ComboBox_Width.Items.Add(wholeMeshesDT.Rows(i)(wholeMeshesColumn))
End If
Next
Grating_Configurator.ComboBox_Width.Text = Grating_Configurator.ComboBox_Width.Items(0)
Grating_Configurator.TextBox_Width.Text = 1000
End Sub
Public Shared Sub WholeMeshWidthsChanged(sender As Object, e As EventArgs)
If sender.Checked Then
Grating_Configurator.ComboBox_Width.DropDownStyle = ComboBoxStyle.DropDownList
Grating_Configurator.Panel_Data.Controls.RemoveByKey("CheckBox_Edge_Bar")
Else
Grating_Configurator.ComboBox_Width.DropDownStyle = ComboBoxStyle.DropDown
Dim CheckTemp As New CheckBox With {
.Name = "CheckBox_Edge_Bar",
.Text = "Extra Edge Bar",
.Left = 110,
.Top = 495,
.Font = New Font("Microsoft Sans Serif", 7.8),
.Checked = True,
.Enabled = True,
.AutoSize = True,
.BackColor = Color.Transparent,
.ForeColor = Color.White
}
AddHandler CheckTemp.CheckedChanged, AddressOf CheckBox_Edge_Bar_CheckedChanged
Grating_Configurator.Panel_Data.Controls.Add(CheckTemp)
End If
End Sub
Public Shared Sub CheckBox_Edge_Bar_CheckedChanged(sender As Object, e As EventArgs)
End Sub
Public Shared Sub WidthChanged(sender As Object, e As EventArgs)
If AppForm.fillMode Then
If Grating_Configurator.TextBox_Width.Text <> "" Then
If CInt(Grating_Configurator.TextBox_Width.Text) >= Grating_Configurator.ComboBox_Width.Items(Grating_Configurator.ComboBox_Width.Items.Count - 1) Then
Data.gratingW = CInt(Grating_Configurator.TextBox_Width.Text)
Draw_Grating.Update_GratingPoints()
End If
Enable_Buttons()
End If
Else
If Grating_Configurator.ComboBox_Width.Text <> "" Then
If CInt(Grating_Configurator.ComboBox_Width.Text) >= Grating_Configurator.ComboBox_Width.Items(Grating_Configurator.ComboBox_Width.Items.Count - 1) AndAlso
CInt(Grating_Configurator.ComboBox_Width.Text) <= Grating_Configurator.ComboBox_Width.Items(0) Then
Data.gratingW = CInt(Grating_Configurator.ComboBox_Width.Text)
Draw_Grating.Update_GratingPoints()
End If
Enable_Buttons()
End If
End If
End Sub
Public Shared Sub LengthChanged(sender As Object, e As EventArgs)
If Grating_Configurator.TextBox_Length.Text <> "" Then
If AppForm.fillMode Then
If CInt(Grating_Configurator.TextBox_Length.Text) >= 300 Then
Data.gratingL = CInt(Grating_Configurator.TextBox_Length.Text)
Draw_Grating.Update_GratingPoints()
Enable_Buttons()
End If
Else
If CInt(Grating_Configurator.TextBox_Length.Text) >= 300 AndAlso CInt(Grating_Configurator.TextBox_Length.Text) <= 6000 Then
Data.gratingL = CInt(Grating_Configurator.TextBox_Length.Text)
Draw_Grating.Update_GratingPoints()
Enable_Buttons()
End If
End If
End If
End Sub
Public Shared Sub FrameChanged(Sender As Object, e As EventArgs)
If Grating_Configurator.ComboBox_Frame.Text <> "" Then
frameSize = CInt(Grating_Configurator.ComboBox_Frame.Text.Split(" ")(0))
End If
End Sub
Private Shared Sub Enable_Buttons()
If AppForm.fillMode Then
If Grating_Configurator.TextBox_Width.Text <> "" AndAlso Grating_Configurator.TextBox_Length.Text <> "" Then
Grating_Configurator.PictureBox_ExportMenu.Enabled = True
Grating_Configurator.PictureBox_ExportMenu.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_ExportMenu1_01
Grating_Configurator.PictureBox_CalculateGrid.Enabled = True
Grating_Configurator.PictureBox_CalculateGrid.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_UpdateGrid1_01
Grating_Configurator.Button_Angle_Corner.Enabled = True
Grating_Configurator.Button_Angle_Side.Enabled = True
Grating_Configurator.Button_Square_Corner.Enabled = True
Grating_Configurator.Button_Square_Side.Enabled = True
Grating_Configurator.Button_Square_Middle.Enabled = True
Grating_Configurator.Panel_Data.Controls("TextBox_Max_Load").Enabled = True
Grating_Configurator.Panel_Data.Controls("TextBox_Max_Weight").Enabled = True
End If
Else
If Grating_Configurator.ComboBox_Width.Text <> "" AndAlso Grating_Configurator.TextBox_Length.Text <> "" Then
Grating_Configurator.PictureBox_ExportMenu.Enabled = True
Grating_Configurator.PictureBox_ExportMenu.BackgroundImage = Global.Wardrobe.My.Resources.Resources.Icon_ExportMenu1_01
Grating_Configurator.Button_Angle_Corner.Enabled = True
Grating_Configurator.Button_Angle_Side.Enabled = True
Grating_Configurator.Button_Square_Corner.Enabled = True
Grating_Configurator.Button_Square_Side.Enabled = True
Grating_Configurator.Button_Square_Middle.Enabled = True
End If
End If
End Sub
' --- Creates the table with points data used in SW ---
Public Shared Function Create_ExportTable() As DataTable
Dim lSpacing As String = Grating_Configurator.ComboBox_Mesh.Text.Split("x")(0)
Dim cSpacing As String = Grating_Configurator.ComboBox_Mesh.Text.Split("x")(1).Split(" ")(0)
Dim gratingTable As New DataTable
gratingTable.Columns.Add("TYPE", GetType(String))
gratingTable.Columns.Add("MATERIAL", GetType(String))
gratingTable.Columns.Add("NAME", GetType(String))
gratingTable.Columns.Add("SERRATED", GetType(Boolean))
gratingTable.Columns.Add("LACQUERED", GetType(Boolean))
gratingTable.Columns.Add("WIDTH", GetType(Integer))
gratingTable.Columns.Add("LENGTH", GetType(Integer))
gratingTable.Columns.Add("LOADBAR_THICKNESS", GetType(Integer))
gratingTable.Columns.Add("LOADBAR_HEIGHT", GetType(Integer))
gratingTable.Columns.Add("LOADBAR_SPACING", GetType(Integer))
gratingTable.Columns.Add("CROSSBAR_SPACING", GetType(Integer))
gratingTable.Columns.Add("CROSSBAR_DIAMETER", GetType(Integer))
gratingTable.Columns.Add("CROSSBAR_THICKNESS", GetType(Integer))
gratingTable.Columns.Add("CROSSBAR_HEIGHT", GetType(Integer))
gratingTable.Columns.Add("FRAME_SIZE", GetType(Integer))
gratingTable.Rows.Add()
gratingTable.Rows(0)("MATERIAL") = gratingMaterial
gratingTable.Rows(0)("NAME") = gratingName
gratingTable.Rows(0)("SERRATED") = gratingSerrated
gratingTable.Rows(0)("LACQUERED") = gratingLacquered
gratingTable.Rows(0)("WIDTH") = CInt(Grating_Configurator.ComboBox_Width.Text)
gratingTable.Rows(0)("LENGTH") = CInt(Grating_Configurator.TextBox_Length.Text)
gratingTable.Rows(0)("LOADBAR_THICKNESS") = CInt(Grating_Configurator.ComboBox_Thickness.Text)
gratingTable.Rows(0)("LOADBAR_HEIGHT") = CInt(Grating_Configurator.ComboBox_Height.Text)
gratingTable.Rows(0)("LOADBAR_SPACING") = CInt(lSpacing)
gratingTable.Rows(0)("CROSSBAR_SPACING") = CInt(cSpacing)
gratingTable.Rows(0)("FRAME_SIZE") = frameSize
If Grating_Configurator.ComboBox_Type.Text = "Pressure Welded" Then
If gratingSerrated = True Then
gratingTable.Rows(0)("TYPE") = "pressure_welded_serrated"
Else
gratingTable.Rows(0)("TYPE") = "pressure_welded"
End If
gratingTable.Rows(0)("CROSSBAR_DIAMETER") = CBDiameter
gratingTable.Rows(0)("CROSSBAR_THICKNESS") = 0
gratingTable.Rows(0)("CROSSBAR_HEIGHT") = 0
Else
If gratingSerrated = True Then
gratingTable.Rows(0)("TYPE") = "type_a_serrated"
Else
gratingTable.Rows(0)("TYPE") = "type_a"
End If
gratingTable.Rows(0)("CROSSBAR_DIAMETER") = 0
gratingTable.Rows(0)("CROSSBAR_THICKNESS") = CBThickness
gratingTable.Rows(0)("CROSSBAR_HEIGHT") = CBHeight
End If
Return gratingTable
End Function
' --- Check if the key pressed is a number ---
Public Shared Sub Check_IfNumber(e As KeyPressEventArgs)
If Asc(e.KeyChar) <> 8 Then
If Asc(e.KeyChar) < 48 Or Asc(e.KeyChar) > 57 Then
e.Handled = True
End If
End If
End Sub
End Class

View File

@ -32,7 +32,7 @@ Namespace My
<Global.System.Diagnostics.DebuggerStepThroughAttribute()> _
Protected Overrides Sub OnCreateMainForm()
Me.MainForm = Global.Wardrobe.GUI
Me.MainForm = Global.Wardrobe.AppForm
End Sub
End Class
End Namespace

View File

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<MyApplicationData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<MySubMain>true</MySubMain>
<MainForm>GUI</MainForm>
<MainForm>AppForm</MainForm>
<SingleInstance>false</SingleInstance>
<ShutdownMode>0</ShutdownMode>
<EnableVisualStyles>true</EnableVisualStyles>

View File

@ -63,9 +63,9 @@ Namespace My.Resources
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property add_b() As System.Drawing.Bitmap
Friend ReadOnly Property AngleCorner() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("add-b", resourceCulture)
Dim obj As Object = ResourceManager.GetObject("AngleCorner", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
@ -73,9 +73,329 @@ Namespace My.Resources
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property remove_b() As System.Drawing.Bitmap
Friend ReadOnly Property Fill_Icon() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("remove-b", resourceCulture)
Dim obj As Object = ResourceManager.GetObject("Fill_Icon", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property Icon_CreateOrder1_01() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("Icon_CreateOrder1_01", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property Icon_CreateOrder2_01() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("Icon_CreateOrder2_01", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property Icon_CreateOrder3_01() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("Icon_CreateOrder3_01", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property Icon_Export1_01() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("Icon_Export1_01", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property Icon_Export2_01() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("Icon_Export2_01", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property Icon_ExportMenu1_01() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("Icon_ExportMenu1_01", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property Icon_ExportMenu2_01() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("Icon_ExportMenu2_01", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property Icon_ExportMenu3_01() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("Icon_ExportMenu3_01", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property Icon_FilePath1_01() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("Icon_FilePath1_01", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property Icon_FilePath2_01() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("Icon_FilePath2_01", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property Icon_Individual1_01() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("Icon_Individual1_01", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property Icon_Individual2_01() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("Icon_Individual2_01", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property Icon_Individual3_01() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("Icon_Individual3_01", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property Icon_Multiple1_01() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("Icon_Multiple1_01", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property Icon_Multiple2_01() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("Icon_Multiple2_01", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property Icon_Multiple3_01() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("Icon_Multiple3_01", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property Icon_SaveSettings1_01() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("Icon_SaveSettings1_01", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property Icon_SaveSettings2_01() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("Icon_SaveSettings2_01", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property Icon_Settings1() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("Icon_Settings1", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property Icon_Settings2() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("Icon_Settings2", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property Icon_UpdateGrid1_01() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("Icon_UpdateGrid1_01", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property Icon_UpdateGrid2_01() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("Icon_UpdateGrid2_01", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property Icon_UpdateGrid3_01() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("Icon_UpdateGrid3_01", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property Icon_UpdateKB1_01() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("Icon_UpdateKB1_01", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property Icon_UpdateKB2_01() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("Icon_UpdateKB2_01", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property Icon_UpdateKB3_01() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("Icon_UpdateKB3_01", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property Individual_Icon() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("Individual_Icon", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property Radius() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("Radius", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property RadiusMiddle() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("RadiusMiddle", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property SquareCorner() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("SquareCorner", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property SquareMiddle() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("SquareMiddle", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property
'''<summary>
''' Looks up a localized resource of type System.Drawing.Bitmap.
'''</summary>
Friend ReadOnly Property SquareSide() As System.Drawing.Bitmap
Get
Dim obj As Object = ResourceManager.GetObject("SquareSide", resourceCulture)
Return CType(obj,System.Drawing.Bitmap)
End Get
End Property

View File

@ -118,10 +118,106 @@
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="add-b" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\add-b.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="SquareSide" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\SquareSide.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="remove-b" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\remove-b.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
<data name="SquareMiddle" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\SquareMiddle.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="RadiusMiddle" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\RadiusMiddle.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Radius" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Radius.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="AngleCorner" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\AngleCorner.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="SquareCorner" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\SquareCorner.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Fill_Icon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Fill_Icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Icon_CreateOrder1_01" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Icon_CreateOrder1-01.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Icon_CreateOrder2_01" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Icon_CreateOrder2-01.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Icon_Export1_01" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Icon_Export1-01.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Icon_Export2_01" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Icon_Export2-01.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Icon_ExportMenu1_01" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Icon_ExportMenu1-01.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Icon_ExportMenu2_01" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Icon_ExportMenu2-01.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Icon_FilePath1_01" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Icon_FilePath1-01.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Icon_FilePath2_01" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Icon_FilePath2-01.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Icon_Individual1_01" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Icon_Individual1-01.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Icon_Individual2_01" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Icon_Individual2-01.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Icon_Multiple1_01" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Icon_Multiple1-01.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Icon_Multiple2_01" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Icon_Multiple2-01.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Icon_SaveSettings1_01" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Icon_SaveSettings1-01.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Icon_SaveSettings2_01" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Icon_SaveSettings2-01.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Icon_Settings1" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Icon_Settings1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Icon_Settings2" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Icon_Settings2.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Icon_UpdateGrid1_01" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Icon_UpdateGrid1-01.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Icon_UpdateGrid2_01" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Icon_UpdateGrid2-01.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Icon_UpdateKB1_01" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Icon_UpdateKB1-01.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Icon_UpdateKB2_01" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Icon_UpdateKB2-01.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Individual_Icon" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Individual_Icon.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Icon_CreateOrder3_01" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Icon_CreateOrder3-01.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Icon_ExportMenu3_01" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Icon_ExportMenu3-01.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Icon_Individual3_01" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Icon_Individual3-01.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Icon_Multiple3_01" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Icon_Multiple3-01.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Icon_UpdateGrid3_01" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Icon_UpdateGrid3-01.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
<data name="Icon_UpdateKB3_01" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>..\Resources\Icon_UpdateKB3-01.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
</data>
</root>

View File

@ -1,86 +0,0 @@
Imports XCCLibrary
Public Class Program
Public Shared Function Add_Parts(Input As DataSet)
Dim inst_ As Integer = 0
Dim ParentID As Integer = 0
Dim Last_section_height As Integer = 0
For Each DT As DataTable In Input.Tables
Dim Section_Width = DT.Rows(0)("Section_width")
Dim Section_Height = DT.Rows(0)("Section_height")
inst_ = ExternalClass.instantiate_parts(ParentID, "RAIL", "")
ExternalClass.modify_parameter_value("DP_WIDTH", inst_, Section_Width)
If Last_section_height > Section_Height Then
ExternalClass.modify_parameter_value("DP_HEIGHT", inst_, Last_section_height)
Else
ExternalClass.modify_parameter_value("DP_HEIGHT", inst_, Section_Height)
End If
Last_section_height = Section_Height
ParentID = inst_
For Each DR As DataRow In DT.Rows
Dim Type = DR("Type")
If Type = "Basket" Then
inst_ = ExternalClass.instantiate_parts(ParentID, "BASKET", "")
ExternalClass.modify_parameter_value("DP_POS", inst_, DR("Position"))
ExternalClass.modify_parameter_value("DP_WIDTH", inst_, Section_Width)
ExternalClass.modify_parameter_value("DP_CONFIGURATION", inst_, DR("Item_Height"))
ElseIf Type = "Hanger" Then
inst_ = ExternalClass.instantiate_parts(ParentID, "HANGER", "")
ExternalClass.modify_parameter_value("DP_POS", inst_, DR("Position"))
ElseIf Type = "Hooks" Then
inst_ = ExternalClass.instantiate_parts(ParentID, "HOOKS", "")
ExternalClass.modify_parameter_value("DP_POS", inst_, DR("Position"))
ExternalClass.modify_parameter_value("DP_NUMBER", inst_, DR("Quantity"))
ExternalClass.modify_parameter_value("DP_WIDTH", inst_, Section_Width)
ElseIf Type = "Drying" Then
inst_ = ExternalClass.instantiate_parts(ParentID, "DRYING_RACK", "")
ExternalClass.modify_parameter_value("DP_POS", inst_, DR("Position"))
ExternalClass.modify_parameter_value("DP_WIDTH", inst_, Section_Width)
If DR("Left") Then
ExternalClass.instantiate_parts(inst_, "ROD", "1")
End If
If DR("Mid") Then
ExternalClass.instantiate_parts(inst_, "ROD", "2")
End If
If DR("Right") Then
ExternalClass.instantiate_parts(inst_, "ROD", "3")
End If
ElseIf Type = "Shelf" Then
If DR("Type_of_shelf") = "Flat" Then
inst_ = ExternalClass.instantiate_parts(ParentID, "FLAT_SHELF", "")
ElseIf DR("Type_of_shelf") = "Wire" Then
inst_ = ExternalClass.instantiate_parts(ParentID, "WIRE_SHELF", "")
End If
ExternalClass.modify_parameter_value("DP_DEPTH", inst_, DR("Depth"))
ExternalClass.modify_parameter_value("DP_POS", inst_, DR("Position"))
ExternalClass.modify_parameter_value("DP_WIDTH", inst_, Section_Width)
End If
Next
Next
inst_ = ExternalClass.instantiate_parts(ParentID, "RAIL", "")
ExternalClass.modify_parameter_value("DP_HEIGHT", inst_, Last_section_height)
Return groupClass.NewGroupID
End Function
Public Shared Sub UpdateKB()
adminClass.loadSettings("C:\Users\Asus_station3\Desktop", "D:\OneDrive - XperDi AB\XperDi\DLL_Test\Wardrobe", "SolidWorks")
adminClass.updateDatabase()
End Sub
End Class

View File

@ -0,0 +1,415 @@
Imports Word = Microsoft.Office.Interop.Word
Public Class GUI_Export
Private Shared gratingTable As New DataTable
Public Shared Sub Generate_Quote()
gratingTable = User_Input.Create_ExportTable()
Dim doc As Word.Document = New Word.Document()
'Page 1
Create_HeaderFooter(doc)
Create_QuoteInfo(doc)
Create_ProductsInfo(doc)
'Page 2-X
doc.Words.Last.InsertBreak(Word.WdBreakType.wdPageBreak)
Generate_Screenshot()
Create_GratingPicture(doc)
Create_GratingData(doc)
doc.ExportAsFixedFormat(Settings.folderPaths("quote") & "\Quote.pdf", Word.WdExportFormat.wdExportFormatPDF)
doc.Close(False)
End Sub
Private Shared Sub Generate_Screenshot()
Dim gratingImg As New Bitmap(Grating_Configurator.Panel_Grating.Width - 1, Grating_Configurator.Panel_Grating.Height - 1)
Dim graphicImg As Graphics = Graphics.FromImage(gratingImg)
Draw_Grating.Draw_ForExport(graphicImg, 12)
gratingImg.Save(Settings.folderPaths("quote") & "\GUI_Drawing.png", Imaging.ImageFormat.Png)
End Sub
Private Shared Sub Create_HeaderFooter(doc As Word.Document)
doc.Sections(1).PageSetup.DifferentFirstPageHeaderFooter = False
'Header
Dim headerTable As Word.Table
headerTable = doc.Sections(1).Headers(Word.WdHeaderFooterIndex.wdHeaderFooterPrimary).Range.
Tables.Add(doc.Sections(1).Headers(Word.WdHeaderFooterIndex.wdHeaderFooterPrimary).Range, 1, 2)
headerTable.Cell(1, 1).Range.InlineShapes.AddPicture(Settings.HLCtFolder & "\Files Needed\Weland_Logo.png")
headerTable.Cell(1, 1).Range.InlineShapes(1).ScaleHeight = 50
headerTable.Cell(1, 1).Range.InlineShapes(1).ScaleWidth = 50
headerTable.Cell(1, 2).Range.Text = "QUOTE"
headerTable.Cell(1, 2).Range.Font.Size = 18
headerTable.Cell(1, 2).Range.Font.Bold = True
headerTable.Cell(1, 2).Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphRight
headerTable.Cell(1, 2).VerticalAlignment = Word.WdVerticalAlignment.wdAlignVerticalBottom
'Footer
Dim footerTable As Word.Table
footerTable = doc.Sections(1).Footers(Word.WdHeaderFooterIndex.wdHeaderFooterPrimary).Range.
Tables.Add(doc.Sections(1).Footers(Word.WdHeaderFooterIndex.wdHeaderFooterPrimary).Range, 3, 2)
footerTable.Columns(1).SetWidth(360, 2)
footerTable.Cell(1, 1).Range.Text = "Phone Number: "
footerTable.Cell(2, 1).Range.Text = "Email: "
footerTable.Cell(3, 1).Range.Text = "Webpage: "
footerTable.Cell(1, 2).Range.Text = "0731-344 00"
footerTable.Cell(2, 2).Range.Text = "info@weland.se"
footerTable.Cell(3, 2).Range.Text = "www.weland.com"
For i = 1 To footerTable.Rows.Count
footerTable.Cell(i, 1).Range.Font.Bold = True
For j = 1 To footerTable.Columns.Count
footerTable.Cell(i, j).Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphRight
footerTable.Cell(i, j).Range.Font.Size = 10
Next
Next
End Sub
Private Shared Sub Create_QuoteInfo(doc)
Dim lineBreak As Word.Paragraph
lineBreak = doc.Content.Paragraphs.Add
lineBreak.Range.InsertParagraphBefore()
lineBreak.Range.Text = ""
lineBreak.Format.SpaceAfter = 20
lineBreak.Range.InsertParagraphAfter()
Dim infoTable As Word.Table
Dim tableRange As Word.Range = doc.Bookmarks.Item("\endofdoc").Range
infoTable = doc.Tables.Add(tableRange, 6, 2)
infoTable.Columns(1).SetWidth(120, 2)
infoTable.Rows.SetHeight(18, 2)
Dim date2 As Date = Date.Today
infoTable.Cell(1, 1).Range.Text = "Quote Date:"
infoTable.Cell(1, 2).Range.Text = date2.ToString("dd-MM-yyyy")
infoTable.Cell(2, 1).Range.Text = "Order number:"
infoTable.Cell(2, 2).Range.Text = date2.ToString("ddMMyyyy") & Get_RandomNumber(10000, 99999)
infoTable.Cell(3, 1).Range.Text = "Customer number:"
infoTable.Cell(3, 2).Range.Text = Get_RandomNumber(10000, 99999)
infoTable.Cell(4, 1).Range.Text = "Sales Representative:"
infoTable.Cell(4, 2).Range.Text = Settings.SRName
infoTable.Cell(5, 1).Range.Text = "Phone Number:"
infoTable.Cell(5, 2).Range.Text = Settings.SRPhone
infoTable.Cell(6, 1).Range.Text = "Mail:"
infoTable.Cell(6, 2).Range.Text = Settings.SRMail
End Sub
Private Shared Sub Create_ProductsInfo(doc)
Dim lineBreak As Word.Paragraph
Dim lineRange As Word.Range = doc.Bookmarks.Item("\endofdoc").Range
lineBreak = doc.Content.Paragraphs.Add(lineRange)
lineBreak.Range.InsertParagraphBefore()
lineBreak.Range.Text = ""
lineBreak.Format.SpaceAfter = 10
lineBreak.Range.InsertParagraphAfter()
Dim productsTable As Word.Table
Dim tableRange As Word.Range = doc.Bookmarks.Item("\endofdoc").Range
productsTable = doc.Tables.Add(tableRange, 16, 5)
productsTable.Rows.SetHeight(18, 2)
productsTable.Columns(1).SetWidth(240, 2)
productsTable.Columns(2).SetWidth(78, 2)
productsTable.Columns(3).SetWidth(40, 2)
productsTable.Columns(4).SetWidth(60, 2)
productsTable.Columns(5).SetWidth(52, 2)
Dim productInfoDT As New DataTable
productInfoDT = Generate_ProductInfo()
For c = 1 To productsTable.Columns.Count
productsTable.Cell(1, c).Range.Font.Color = Word.WdColor.wdColorWhite
productsTable.Cell(1, c).Shading.BackgroundPatternColor = Word.WdColor.wdColorBlack
productsTable.Cell(1, c).VerticalAlignment = Word.WdVerticalAlignment.wdAlignVerticalBottom
If c > 2 Then
For r = 1 To productsTable.Rows.Count
productsTable.Cell(r, c).Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphRight
Next
End If
If c = 5 Then
For r = 2 To productsTable.Rows.Count
productsTable.Cell(r, c).Range.Font.Bold = True
Next
End If
Next
productsTable.Cell(1, 1).Range.Text = "Description"
productsTable.Cell(1, 2).Range.Text = "Art. Nr."
productsTable.Cell(1, 3).Range.Text = "QTY"
productsTable.Cell(1, 4).Range.Text = "Unit Price"
productsTable.Cell(1, 5).Range.Text = "Price"
For i = 2 To productInfoDT.Rows.Count + 1
productsTable.Cell(i, 1).Range.Text = productInfoDT.Rows(i - 2)("Description")
productsTable.Cell(i, 2).Range.Text = productInfoDT.Rows(i - 2)("Art. Nr.")
productsTable.Cell(i, 3).Range.Text = CInt(productInfoDT.Rows(i - 2)("QTY")).ToString("### ###")
productsTable.Cell(i, 4).Range.Text = CInt(productInfoDT.Rows(i - 2)("Unit Price")).ToString("### ###")
productsTable.Cell(i, 5).Range.Text = CInt(productInfoDT.Rows(i - 2)("Price")).ToString("### ###")
For j = 1 To productsTable.Columns.Count
productsTable.Cell(i, j).Range.Font.Size = 10
Next
Next
Dim lineBreak2 As Word.Paragraph
lineRange = doc.Bookmarks.Item("\endofdoc").Range
lineBreak2 = doc.Content.Paragraphs.Add(lineRange)
lineBreak2.Range.InsertParagraphBefore()
lineBreak2.Range.Text = ""
lineBreak2.Format.SpaceAfter = 20
lineBreak2.Range.InsertParagraphAfter()
Dim priceTable As Word.Table
tableRange = doc.Bookmarks.Item("\endofdoc").Range
priceTable = doc.Tables.Add(tableRange, 1, 2)
priceTable.Columns(1).SetWidth(370, 2)
priceTable.Cell(1, 1).Range.Text = "Total Price:"
priceTable.Cell(1, 1).Range.Font.Bold = True
priceTable.Cell(1, 1).Range.Font.Size = 20
Dim totPrice As Integer = 0
For i = 2 To productsTable.Rows.Count
totPrice += CInt(Val(productsTable.Cell(i, 5).Range.Text))
Next
priceTable.Cell(1, 2).Range.Text = totPrice.ToString("### ###")
priceTable.Cell(1, 2).Range.Font.Bold = True
priceTable.Cell(1, 2).Range.Font.Size = 20
priceTable.Cell(1, 1).Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphRight
priceTable.Cell(1, 2).Range.ParagraphFormat.Alignment = Word.WdParagraphAlignment.wdAlignParagraphRight
End Sub
Private Shared Sub Create_GratingPicture(doc As Word.Document)
Dim drawingPara As Word.Paragraph
Dim lineRange As Word.Range = doc.Bookmarks.Item("\endofdoc").Range
drawingPara = doc.Content.Paragraphs.Add(lineRange)
drawingPara.Range.InsertParagraphBefore()
drawingPara.Format.SpaceBefore = 10
drawingPara.Range.InlineShapes.AddPicture(Settings.folderPaths("quote") & "\GUI_Drawing.png")
drawingPara.Range.InlineShapes(1).ScaleHeight = 55
drawingPara.Range.InlineShapes(1).ScaleWidth = 55
drawingPara.Format.SpaceAfter = 1
drawingPara.Range.InsertParagraphAfter()
End Sub
Private Shared Sub Create_GratingData(doc As Word.Document)
Dim gratingInfoTable As Word.Table
Dim tableRange As Word.Range = doc.Bookmarks.Item("\endofdoc").Range
gratingInfoTable = doc.Tables.Add(tableRange, 10, 2)
gratingInfoTable.Columns(1).SetWidth(80, 2)
gratingInfoTable.Rows.SetHeight(18, 2)
gratingInfoTable.Cell(1, 1).Range.Text = "Description: "
gratingInfoTable.Cell(2, 1).Range.Text = "Type: "
gratingInfoTable.Cell(3, 1).Range.Text = "Material: "
gratingInfoTable.Cell(4, 1).Range.Text = "Mesh Size: "
gratingInfoTable.Cell(5, 1).Range.Text = "Height: "
gratingInfoTable.Cell(6, 1).Range.Text = "Thickness: "
gratingInfoTable.Cell(7, 1).Range.Text = "Length: "
gratingInfoTable.Cell(8, 1).Range.Text = "Width: "
gratingInfoTable.Cell(9, 1).Range.Text = "Other: "
For i = 1 To gratingInfoTable.Rows.Count
gratingInfoTable.Cell(i, 1).Range.Font.Bold = True
Next
gratingInfoTable.Cell(1, 2).Range.Text = "Floor Grating " & gratingTable.Rows(0)("NAME") & " " &
gratingTable.Rows(0)("LOADBAR_HEIGHT") & "/" & gratingTable.Rows(0)("LOADBAR_THICKNESS")
If gratingTable.Rows(0)("TYPE") = "pressure_welded" Then
gratingInfoTable.Cell(2, 2).Range.Text = "Pressure Welded"
Else
gratingInfoTable.Cell(2, 2).Range.Text = "Type A"
End If
gratingInfoTable.Cell(3, 2).Range.Text = gratingTable.Rows(0)("MATERIAL")
gratingInfoTable.Cell(4, 2).Range.Text = gratingTable.Rows(0)("LOADBAR_SPACING") & "x" &
gratingTable.Rows(0)("CROSSBAR_SPACING") & " (" & gratingTable.Rows(0)("NAME") & ")"
gratingInfoTable.Cell(5, 2).Range.Text = gratingTable.Rows(0)("LOADBAR_HEIGHT") & " [mm]"
gratingInfoTable.Cell(6, 2).Range.Text = gratingTable.Rows(0)("LOADBAR_THICKNESS") & " [mm]"
gratingInfoTable.Cell(7, 2).Range.Text = gratingTable.Rows(0)("LENGTH") & " [mm]"
gratingInfoTable.Cell(8, 2).Range.Text = gratingTable.Rows(0)("WIDTH") & " [mm]"
If gratingTable.Rows(0)("SERRATED") AndAlso gratingTable.Rows(0)("LACQUERED") Then
gratingInfoTable.Cell(9, 2).Range.Text = "Serrated, Lacquered"
ElseIf gratingTable.Rows(0)("SERRATED") Then
gratingInfoTable.Cell(9, 2).Range.Text = "Serrated"
ElseIf gratingTable.Rows(0)("LACQUERED") Then
gratingInfoTable.Cell(9, 2).Range.Text = "Lacquered"
Else
gratingInfoTable.Cell(9, 2).Range.Text = "-"
End If
End Sub
Public Shared Function Get_RandomNumber(Min As Integer, Max As Integer) As Integer
Static Generator As System.Random = New System.Random()
Return Generator.Next(Min, Max)
End Function
Private Shared Function Generate_ProductInfo()
Dim productIDT As New DataTable
productIDT.Columns.Add("Description", GetType(String))
productIDT.Columns.Add("Art. Nr.", GetType(String))
productIDT.Columns.Add("QTY", GetType(Integer))
productIDT.Columns.Add("Unit Price", GetType(Integer))
productIDT.Columns.Add("Price", GetType(Integer))
If AppForm.fillMode = True Then
For i = 0 To Calculate_Fill_Grid.gratingDimensionsDT.Rows.Count - 1
Dim DR As DataRow = Calculate_Fill_Grid.gratingDimensionsDT.Rows(i)
Dim newDR As DataRow = productIDT.NewRow
Dim descStr As String = "Floor Grating " & gratingTable.Rows(0)("NAME") & " " &
gratingTable.Rows(0)("LOADBAR_HEIGHT") & "/" & gratingTable.Rows(0)("LOADBAR_THICKNESS") &
" " & DR("LENGTH") & "x" & DR("WIDTH")
Dim withRecess As Boolean = False
'For j = 0 To Data.recessData.Rows.Count - 1 'FIXA recessdata "GRATINGS" finns inte
' Dim recessGratings As List(Of Integer) = Data.recessData.Rows(j)("GRATINGS")
' For k = 0 To recessGratings.Count - 1
' If recessGratings(k) = DR("INDEX") Then
' withRecess = True
' End If
' Next
'Next
If withRecess = True Then
descStr += " (With Recess)"
End If
Dim newRow As Boolean = True
For j = 0 To productIDT.Rows.Count - 1
If productIDT.Rows(j)("Description") = descStr Then
productIDT.Rows(j)("QTY") += 1
newRow = False
Exit For
End If
Next
If newRow = True Then
newDR("Description") = descStr
If gratingTable.Rows(0)("SERRATED") = True Then
newDR("Art. Nr.") = gratingTable.Rows(0)("NAME").substring(0, 1) & "S" &
gratingTable.Rows(0)("LOADBAR_HEIGHT") & Get_RandomNumber(10000000, 99999999)
Else
newDR("Art. Nr.") = gratingTable.Rows(0)("NAME") & gratingTable.Rows(0)("LOADBAR_HEIGHT") &
Get_RandomNumber(10000000, 99999999)
End If
newDR("QTY") = 1
Dim gratingArea As Double = (DR("LENGTH") / 1000) * (DR("WIDTH") / 1000)
Dim unitprice As Double = gratingArea * 1000
If withRecess = True Then
unitprice += 300
End If
newDR("Unit Price") = unitprice
productIDT.Rows.Add(newDR)
End If
Next
Else
'Individual
Dim newDR As DataRow = productIDT.NewRow
Dim descStr As String = "Floor Grating " & gratingTable.Rows(0)("NAME") & " " &
gratingTable.Rows(0)("LOADBAR_HEIGHT") & "/" & gratingTable.Rows(0)("LOADBAR_THICKNESS") &
" " & Data.gratingL & "x" & Data.gratingW
Dim withRecess As Boolean = False
'For j = 0 To Data.recessData.Rows.Count - 1 'FIXA recessdata "GRATINGS" finns inte
' Dim recessGratings As List(Of Integer) = Data.recessData.Rows(j)("GRATINGS")
' For k = 0 To recessGratings.Count - 1
' If recessGratings(k) = DR("INDEX") Then
' withRecess = True
' End If
' Next
'Next
If withRecess = True Then
descStr += " (With Recess)"
End If
newDR("Description") = descStr
If gratingTable.Rows(0)("SERRATED") = True Then
newDR("Art. Nr.") = gratingTable.Rows(0)("NAME").substring(0, 1) & "S" &
gratingTable.Rows(0)("LOADBAR_HEIGHT") & Get_RandomNumber(10000000, 99999999)
Else
newDR("Art. Nr.") = gratingTable.Rows(0)("NAME") & gratingTable.Rows(0)("LOADBAR_HEIGHT") &
Get_RandomNumber(10000000, 99999999)
End If
newDR("QTY") = 1
Dim gratingArea As Double = (Data.gratingL / 1000) * (Data.gratingW / 1000)
Dim unitprice As Double = gratingArea * 2500
If withRecess = True Then
unitprice += 300
End If
newDR("Unit Price") = unitprice
productIDT.Rows.Add(newDR)
End If
If User_Input.addFrame = True Then
Frame_3D.Generate_FrameVariables()
If User_Input.preCutFrame = True Then
'Precut
For Each sideFrame As KeyValuePair(Of String, Integer) In Frame_3D.sideFrameLengths
Dim newDR As DataRow = productIDT.NewRow
newDR("Description") = "Frame L-Profile Side " & sideFrame.Value & "mm " & User_Input.frameSize & "x" & User_Input.frameSize
Dim newRow As Boolean = True
For j = 0 To productIDT.Rows.Count - 1
If productIDT.Rows(j)("Description") = newDR("Description") Then
productIDT.Rows(j)("QTY") += 1
newRow = False
Exit For
End If
Next
If newRow = True Then
newDR("Art. Nr.") = 161 & Get_RandomNumber(100000, 999999)
newDR("QTY") = 1
newDR("Unit Price") = ((26 * User_Input.frameSize) / 2000) * sideFrame.Value + 50
productIDT.Rows.Add(newDR)
End If
Next
Else
'Whole frames
Dim newDR As DataRow = productIDT.NewRow
newDR("Description") = "Frame L-Profile Side 2000mm " & User_Input.frameSize & "x" & User_Input.frameSize
newDR("Art. Nr.") = 161 & Get_RandomNumber(100000, 999999)
newDR("QTY") = Frame_3D.cuttingList.Count
newDR("Unit Price") = 26 * User_Input.frameSize
productIDT.Rows.Add(newDR)
End If
'Corners
If Frame_3D.frameDT.Rows.Count - Frame_3D.sideFrameLengths.Count > 0 Then
Dim newDR2 As DataRow = productIDT.NewRow
newDR2("Description") = "Frame L-Profile Corner " & User_Input.frameSize & "x" & User_Input.frameSize
newDR2("Art. Nr.") = 161 & Get_RandomNumber(100000, 999999)
newDR2("QTY") = Frame_3D.frameDT.Rows.Count - Frame_3D.sideFrameLengths.Count
newDR2("Unit Price") = 12 * User_Input.frameSize
productIDT.Rows.Add(newDR2)
End If
End If
For i = 0 To productIDT.Rows.Count - 1
productIDT.Rows(i)("Price") = productIDT.Rows(i)("Unit Price") * productIDT.Rows(i)("QTY")
Next
Return productIDT
End Function
End Class

View File

@ -0,0 +1,428 @@
Public Class Corner_Angle
Private Shared buttonOffset As Integer
Private Shared cornerAngleCounter As Integer = 0
' --- Create textboxes when user clicks the angle corner recess button ---
Public Shared Sub AngleButton(sender As Object, e As EventArgs)
Grating_Configurator.Panel_Recesses.Controls("Button_Angle_Corner").Enabled = False
Grating_Configurator.Panel_Recesses.Controls("Button_Angle_Side").Enabled = False
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Corner").Enabled = False
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Side").Enabled = False
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Middle").Enabled = False
Dim buttonX As Integer = Grating_Configurator.Panel_Recesses.Controls("Button_Angle_Corner").Location.X + Grating_Configurator.Panel_Recesses.Controls("Button_Angle_Corner").Width
Dim buttonY As Integer = Grating_Configurator.Panel_Recesses.Controls("Button_Angle_Corner").Location.Y
Grating_Configurator.Create_TextBox_Recesses("Y_TextBox", "", buttonX + 60, buttonY + 10, 60)
AddHandler Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").TextChanged, AddressOf FunctionTextCorner_Changed
AddHandler Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").KeyPress, AddressOf FunctionText_KeyPress
Grating_Configurator.Create_Label_Recesses("Y_Label", "Width", buttonX + 18, buttonY + 13)
Grating_Configurator.Create_TextBox_Recesses("X_TextBox", "", buttonX + 60, buttonY + 40, 60)
AddHandler Grating_Configurator.Panel_Recesses.Controls("X_TextBox").TextChanged, AddressOf FunctionTextCorner_Changed
AddHandler Grating_Configurator.Panel_Recesses.Controls("X_TextBox").KeyPress, AddressOf FunctionText_KeyPress
Grating_Configurator.Create_Label_Recesses("X_Label", "Length", buttonX + 10, buttonY + 43)
buttonOffset = 130
Grating_Configurator.Panel_Recesses.Controls("Button_Angle_Side").Left = Grating_Configurator.Panel_Recesses.Controls("Button_Angle_Side").Left + buttonOffset
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Corner").Left = Grating_Configurator.Panel_Recesses.Controls("Button_Square_Corner").Left + buttonOffset
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Side").Left = Grating_Configurator.Panel_Recesses.Controls("Button_Square_Side").Left + buttonOffset
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Middle").Left = Grating_Configurator.Panel_Recesses.Controls("Button_Square_Middle").Left + buttonOffset
Grating_Configurator.Panel_Recesses.Controls("Button_Radius").Left = Grating_Configurator.Panel_Recesses.Controls("Button_Radius").Left + buttonOffset
Grating_Configurator.Button_Angle_Corner.FlatStyle = FlatStyle.Flat
Grating_Configurator.Button_Angle_Corner.FlatAppearance.BorderColor = Color.Red
End Sub
' --- Check the key pressed by the user ---
Private Shared Sub FunctionText_KeyPress(sender As Object, e As KeyPressEventArgs)
User_Input.Check_IfNumber(e)
End Sub
' --- Adds clickable buttons for all corners if conditions are met ---
Private Shared Sub FunctionTextCorner_Changed(sender As TextBox, e As EventArgs)
Dim value1, value2 As Integer
Try
value1 = CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text)
value2 = CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text)
Catch ex As Exception
value1 = 0
value2 = 0
End Try
If value1 > 0 AndAlso value2 > 0 Then
If Grating_Configurator.Panel_Grating.Controls.Count = 6 Then
For i = 0 To Data.gratingPoints.Rows.Count - 1
If Data.gratingPoints.Rows(i)("RECESS OK") Then
Dim pointButton As New Button With {
.Width = 30,
.Height = 30,
.Left = Data.gratingPoints.Rows(i)("GUI X") - 30 / 2,
.Top = Data.gratingPoints.Rows(i)("GUI Y") - 30 / 2,
.Name = Data.gratingPoints.Rows(i)("NAME") & "_Button",
.Text = ""
}
pointButton.BackColor = Color.FromArgb(50, Color.Red)
pointButton.FlatStyle = FlatStyle.Flat
pointButton.FlatAppearance.BorderSize = 0
pointButton.FlatAppearance.MouseOverBackColor = Color.Red
pointButton.FlatAppearance.MouseDownBackColor = Color.DarkRed
Dim gp As New Drawing2D.GraphicsPath
gp.AddEllipse(New Rectangle(New Point(0, 0), New Size(30, 30)))
pointButton.Region = New Region(gp)
Grating_Configurator.Panel_Grating.Controls.Add(pointButton)
AddHandler pointButton.Click, AddressOf PointButton_Click
End If
Next
End If
ElseIf Grating_Configurator.Panel_Grating.Controls.Count > 6 Then
For i = 0 To Data.gratingPoints.Rows.Count - 1
If Data.gratingPoints.Rows(i)("RECESS OK") Then
Dim buttonName As String = Data.gratingPoints.Rows(i)("NAME") & "_Button"
RemoveHandler Grating_Configurator.Panel_Grating.Controls(buttonName).Click, AddressOf PointButton_Click
Grating_Configurator.Panel_Grating.Controls.RemoveByKey(Data.gratingPoints.Rows(i)("NAME") & "_Button")
End If
Next
End If
End Sub
' --- When a corner function button is pressed ---
Private Shared Sub PointButton_Click(sender As Button, e As EventArgs)
'Determine which point is being pressed
Dim pointPressed As String = sender.Name.Replace("_Button", "").Trim()
Dim index As Integer
For Each DR As DataRow In Data.gratingPoints.Rows
If DR("NAME") = pointPressed Then
index = Data.gratingPoints.Rows.IndexOf(DR)
Exit For
End If
Next
' Remove point buttons
For i = 0 To Data.gratingPoints.Rows.Count - 1
If Data.gratingPoints.Rows(i)("RECESS OK") Then
Dim buttonName As String = Data.gratingPoints.Rows(i)("NAME") & "_Button"
RemoveHandler Grating_Configurator.Panel_Grating.Controls(buttonName).Click, AddressOf PointButton_Click
Grating_Configurator.Panel_Grating.Controls.RemoveByKey(Data.gratingPoints.Rows(i)("NAME") & "_Button")
End If
Next
cornerAngleCounter += 1
'Retrive that points coords
Dim pXGUI As Integer = Data.gratingPoints.Rows(index)("GUI X")
Dim pYGUI As Integer = Data.gratingPoints.Rows(index)("GUI Y")
Dim pX As Decimal = Data.gratingPoints.Rows(index)("X")
Dim pY As Decimal = Data.gratingPoints.Rows(index)("Y")
Dim dXGUI As Integer = CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text / Data.scaleDiff)
Dim dYGUI As Integer = CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text / Data.scaleDiff)
Dim dX As Decimal = Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text / 1000
Dim dY As Decimal = Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text / 1000
Data.recessData.Rows.Add()
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("NAME") = "CA" & cornerAngleCounter
For i = 2 To Data.pointsMeasurements.Count - 1
Dim mesName As String = Data.pointsMeasurements.Keys(i)
If mesName.Split("_")(0) <> "SS1" AndAlso mesName.Split("_")(0) <> "SS" AndAlso mesName.Split("_")(0) <> "MS" AndAlso mesName.Split("_")(0) <> "MS1" Then
If index + 1 = Data.pointsMeasurements(mesName)(0) Then
If Draw_Grating.measureLabels(mesName)(3) = 1 Then
Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text
Draw_Grating.measureLabels(mesName)(1) = Draw_Grating.measureLabels(mesName)(1) + dXGUI / 2
ElseIf Draw_Grating.measureLabels(mesName)(3) = 2 Then
Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text
Draw_Grating.measureLabels(mesName)(2) = Draw_Grating.measureLabels(mesName)(2) + dYGUI / 2
ElseIf Draw_Grating.measureLabels(mesName)(3) = 3 Then
Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text
Draw_Grating.measureLabels(mesName)(1) = Draw_Grating.measureLabels(mesName)(1) - dXGUI / 2
Else
Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text
Draw_Grating.measureLabels(mesName)(2) = Draw_Grating.measureLabels(mesName)(2) - dYGUI / 2
End If
ElseIf index + 1 = Data.pointsMeasurements(mesName)(1) Then
If Draw_Grating.measureLabels(mesName)(3) = 1 Then
Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text
Draw_Grating.measureLabels(mesName)(2) = Draw_Grating.measureLabels(mesName)(2) + dYGUI / 2
ElseIf Draw_Grating.measureLabels(mesName)(3) = 2 Then
Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text
Draw_Grating.measureLabels(mesName)(1) = Draw_Grating.measureLabels(mesName)(1) - dXGUI / 2
ElseIf Draw_Grating.measureLabels(mesName)(3) = 3 Then
Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text
Draw_Grating.measureLabels(mesName)(2) = Draw_Grating.measureLabels(mesName)(2) - dYGUI / 2
Else
Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text
Draw_Grating.measureLabels(mesName)(1) = Draw_Grating.measureLabels(mesName)(1) + dXGUI / 2
End If
End If
ElseIf mesName.Split("_")(0) = "SS1" AndAlso index + 2 = Data.pointsMeasurements(mesName)(1) Then
If Draw_Grating.measureLabels(mesName)(3) = 1 Then
Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text
Draw_Grating.measureLabels(mesName)(1) = Draw_Grating.measureLabels(mesName)(1) + dXGUI / 2
Draw_Grating.sideSquareMesLine(mesName)(0) = Draw_Grating.sideSquareMesLine(mesName)(0) + dXGUI
ElseIf Draw_Grating.measureLabels(mesName)(3) = 2 Then
Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text
Draw_Grating.measureLabels(mesName)(2) = Draw_Grating.measureLabels(mesName)(2) + dYGUI / 2
Draw_Grating.sideSquareMesLine(mesName)(1) = Draw_Grating.sideSquareMesLine(mesName)(1) + dYGUI
ElseIf Draw_Grating.measureLabels(mesName)(3) = 3 Then
Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text
Draw_Grating.measureLabels(mesName)(1) = Draw_Grating.measureLabels(mesName)(1) - dXGUI / 2
Draw_Grating.sideSquareMesLine(mesName)(0) = Draw_Grating.sideSquareMesLine(mesName)(0) - dXGUI
Else
Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text
Draw_Grating.measureLabels(mesName)(2) = Draw_Grating.measureLabels(mesName)(2) - dYGUI / 2
Draw_Grating.sideSquareMesLine(mesName)(1) = Draw_Grating.sideSquareMesLine(mesName)(1) - dYGUI
End If
End If
Next
Dim mesNum As Integer = Data.pointsMeasurements.Count - 1
For i = 2 To Data.pointsMeasurements.Count - 1
Dim mesName As String = Data.pointsMeasurements.Keys(i)
If index + 1 < Data.pointsMeasurements(mesName)(0) Then
If mesName.Split("_")(0) <> "MS" AndAlso mesName.Split("_")(0) <> "MS1" Then
Data.pointsMeasurements(mesName)(0) = Data.pointsMeasurements(mesName)(0) + 1
Data.pointsMeasurements(mesName)(1) = Data.pointsMeasurements(mesName)(1) + 1
ElseIf mesName.Split("_")(0) = "MS1" Then
Data.pointsMeasurements(mesName)(0) = Data.pointsMeasurements(mesName)(0) + 1
End If
ElseIf index + 1 = Data.pointsMeasurements(mesName)(0) OrElse index + 1 = Data.pointsMeasurements(mesName)(1) Then
If mesName.Split("_")(0) <> "MS" AndAlso mesName.Split("_")(0) <> "MS1" Then
Data.pointsMeasurements(mesName)(1) = Data.pointsMeasurements(mesName)(1) + 1
ElseIf mesName.Split("_")(0) = "MS1" AndAlso index + 1 = Data.pointsMeasurements(mesName)(0) AndAlso Data.pointsMeasurements(mesName)(2) = 3 Then
Data.pointsMeasurements(mesName)(0) = Data.pointsMeasurements(mesName)(0) + 1
End If
End If
Next
Dim pointQuadrant As Integer = Get_PointQuadrant(pXGUI, pYGUI)
Dim pointRow1 As DataRow = Data.gratingPoints.NewRow
Dim pointRow2 As DataRow = Data.gratingPoints.NewRow
pointRow1("NAME") = "CA" & cornerAngleCounter & "_" & 1
pointRow1("QUADRANT") = pointQuadrant
pointRow1("RECESS OK") = False
pointRow2("NAME") = "CA" & cornerAngleCounter & "_" & 2
pointRow2("QUADRANT") = pointQuadrant
pointRow2("RECESS OK") = False
If pointQuadrant = 1 Then
' Add the new points
pointRow1("X") = pX
pointRow1("Y") = pY - dY
pointRow1("GUI X") = pXGUI
pointRow1("GUI Y") = pYGUI + dYGUI
pointRow2("X") = pX + dX
pointRow2("Y") = pY
pointRow2("GUI X") = pXGUI + dXGUI
pointRow2("GUI Y") = pYGUI
' Update outer measuements (SW)
Data.pointsMeasurements("Lmes")(1) = Data.pointsMeasurements("Lmes")(1) + 1
Data.pointsMeasurements("Wmes")(0) = Data.pointsMeasurements("Wmes")(0) + 1
Data.pointsMeasurements("Wmes")(1) = Data.pointsMeasurements("Wmes")(1) + 1
' Add recess measuements (SW)
Data.pointsMeasurements.Add("A_" & mesNum, {index + 1, index + 2, 1})
Data.pointsMeasurements.Add("A_" & mesNum + 1, {index + 1, index + 2, 4})
' Add angle recess help point (GUI)
Dim pointRow = Data.angleRecessPoints.NewRow
pointRow("NAME") = "CA" & cornerAngleCounter
pointRow("QUADRANT") = pointQuadrant
pointRow("GUI X") = pXGUI + dXGUI
pointRow("GUI Y") = pYGUI + dYGUI
Data.angleRecessPoints.Rows.Add(pointRow)
' Add recess measurments (GUI)
Draw_Grating.measureLabels.Add("A_" & mesNum, {CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text), pXGUI + dXGUI / 2 - 8,
pYGUI + dYGUI + 3, 1})
Draw_Grating.measureLabels.Add("A_" & mesNum + 1, {CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text), pXGUI + dXGUI + 3,
pYGUI + dYGUI / 2 - 4, 1})
' Recess Data
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("RECESS TYPE") = "ANGLE"
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("CORNER") = 1
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("WIDTH") = CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text)
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("LENGTH") = CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text)
ElseIf pointQuadrant = 2 Then
' Add the new points
pointRow1("X") = pX - dX
pointRow1("Y") = pY
pointRow1("GUI X") = pXGUI - dXGUI
pointRow1("GUI Y") = pYGUI
pointRow2("X") = pX
pointRow2("Y") = pY - dY
pointRow2("GUI X") = pXGUI
pointRow2("GUI Y") = pYGUI + dYGUI
' Update outer measuements (SW)
Data.pointsMeasurements("Lmes")(1) = Data.pointsMeasurements("Lmes")(1) + 1
Data.pointsMeasurements("Wmes")(1) = Data.pointsMeasurements("Wmes")(1) + 1
' Add recess measuements (SW)
Data.pointsMeasurements.Add("A_" & mesNum, {index + 1, index + 2, 1})
Data.pointsMeasurements.Add("A_" & mesNum + 1, {index + 1, index + 2, 2})
' Add angle recess help point (GUI)
Dim pointRow = Data.angleRecessPoints.NewRow
pointRow("NAME") = "CA" & cornerAngleCounter
pointRow("QUADRANT") = pointQuadrant
pointRow("GUI X") = pXGUI - dXGUI
pointRow("GUI Y") = pYGUI + dYGUI
Data.angleRecessPoints.Rows.Add(pointRow)
' Add recess measurments (GUI)
Draw_Grating.measureLabels.Add("A_" & mesNum, {CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text), pXGUI - dXGUI - 18 - 3,
pYGUI + dYGUI / 2 - 4, 2})
Draw_Grating.measureLabels.Add("A_" & mesNum + 1, {CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text), pXGUI - dXGUI / 2 - 8,
pYGUI + dYGUI + 3, 2})
' Recess Data
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("RECESS TYPE") = "ANGLE"
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("CORNER") = 2
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("WIDTH") = CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text)
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("LENGTH") = CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text)
ElseIf pointQuadrant = 3 Then
' Add the new points
pointRow1("X") = pX
pointRow1("Y") = pY + dY
pointRow1("GUI X") = pXGUI
pointRow1("GUI Y") = pYGUI - dYGUI
pointRow2("X") = pX - dX
pointRow2("Y") = pY
pointRow2("GUI X") = pXGUI - dXGUI
pointRow2("GUI Y") = pYGUI
' Update outer measuements (SW)
Data.pointsMeasurements("Wmes")(1) = Data.pointsMeasurements("Wmes")(1) + 1
' Add recess measuements (SW)
Data.pointsMeasurements.Add("A_" & mesNum, {index + 1, index + 2, 2})
Data.pointsMeasurements.Add("A_" & mesNum + 1, {index + 1, index + 2, 3})
' Add angle recess help point (GUI)
Dim pointRow = Data.angleRecessPoints.NewRow
pointRow("NAME") = "CA" & cornerAngleCounter
pointRow("QUADRANT") = pointQuadrant
pointRow("GUI X") = pXGUI - dXGUI
pointRow("GUI Y") = pYGUI - dYGUI
Data.angleRecessPoints.Rows.Add(pointRow)
' Add recess measurments (GUI)
Draw_Grating.measureLabels.Add("A_" & mesNum, {CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text), pXGUI - dXGUI / 2 - 8,
pYGUI - dYGUI - 12 - 3, 3})
Draw_Grating.measureLabels.Add("A_" & mesNum + 1, {CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text), pXGUI - dXGUI - 18 - 3,
pYGUI - dYGUI / 2 - 4, 3})
' Recess Data
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("RECESS TYPE") = "ANGLE"
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("CORNER") = 3
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("WIDTH") = CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text)
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("LENGTH") = CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text)
Else
' Add the new points
pointRow1("X") = pX + dX
pointRow1("Y") = pY
pointRow1("GUI X") = pXGUI + dXGUI
pointRow1("GUI Y") = pYGUI
pointRow2("X") = pX
pointRow2("Y") = pY + dY
pointRow2("GUI X") = pXGUI
pointRow2("GUI Y") = pYGUI - dYGUI
' Add recess measuements (SW)
Data.pointsMeasurements.Add("A_" & mesNum, {index + 1, index + 2, 3})
Data.pointsMeasurements.Add("A_" & mesNum + 1, {index + 1, index + 2, 4})
' Add angle recess help point (GUI)
Dim pointRow = Data.angleRecessPoints.NewRow
pointRow("NAME") = "CA" & cornerAngleCounter
pointRow("QUADRANT") = pointQuadrant
pointRow("GUI X") = pXGUI + dXGUI
pointRow("GUI Y") = pYGUI - dYGUI
Data.angleRecessPoints.Rows.Add(pointRow)
' Add recess measurments (GUI)
Draw_Grating.measureLabels.Add("A_" & mesNum, {CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text), pXGUI + dXGUI + 3,
pYGUI - dYGUI / 2 - 4, 4})
Draw_Grating.measureLabels.Add("A_" & mesNum + 1, {CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text), pXGUI + dXGUI / 2 - 8,
pYGUI - dYGUI - 12 - 3, 4})
' Recess Data
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("RECESS TYPE") = "ANGLE"
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("CORNER") = 4
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("WIDTH") = CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text)
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("LENGTH") = CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text)
End If
Data.gratingPoints.Rows.InsertAt(pointRow1, index + 1)
Data.gratingPoints.Rows.InsertAt(pointRow2, index + 2)
Data.gratingPoints.Rows.RemoveAt(index)
'Redraw grating
Grating_Configurator.Panel_Grating.Refresh()
RemoveHandler Grating_Configurator.Panel_Recesses.Controls("X_TextBox").TextChanged, AddressOf FunctionTextCorner_Changed
RemoveHandler Grating_Configurator.Panel_Recesses.Controls("X_TextBox").KeyPress, AddressOf FunctionText_KeyPress
Grating_Configurator.Panel_Recesses.Controls.RemoveByKey("X_TextBox")
RemoveHandler Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").TextChanged, AddressOf FunctionTextCorner_Changed
RemoveHandler Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").KeyPress, AddressOf FunctionText_KeyPress
Grating_Configurator.Panel_Recesses.Controls.RemoveByKey("Y_TextBox")
Grating_Configurator.Panel_Recesses.Controls.RemoveByKey("X_Label")
Grating_Configurator.Panel_Recesses.Controls.RemoveByKey("Y_Label")
Grating_Configurator.Panel_Recesses.Controls("Button_Angle_Corner").Enabled = True
Grating_Configurator.Panel_Recesses.Controls("Button_Angle_Side").Enabled = True
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Corner").Enabled = True
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Side").Enabled = True
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Middle").Enabled = True
Grating_Configurator.Panel_Recesses.Controls("Button_Angle_Side").Left = Grating_Configurator.Panel_Recesses.Controls("Button_Angle_Side").Left - buttonOffset
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Corner").Left = Grating_Configurator.Panel_Recesses.Controls("Button_Square_Corner").Left - buttonOffset
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Side").Left = Grating_Configurator.Panel_Recesses.Controls("Button_Square_Side").Left - buttonOffset
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Middle").Left = Grating_Configurator.Panel_Recesses.Controls("Button_Square_Middle").Left - buttonOffset
Grating_Configurator.Panel_Recesses.Controls("Button_Radius").Left = Grating_Configurator.Panel_Recesses.Controls("Button_Radius").Left - buttonOffset
Grating_Configurator.Button_Angle_Corner.FlatAppearance.BorderColor = Color.Black
End Sub
' --- Determines the clicked points quadrant ---
Private Shared Function Get_PointQuadrant(pXGUI As Integer, pYGUI As Integer)
Dim quadrant As Integer
If pXGUI < Data.guiPanelMidX Then
If pYGUI > Data.guiPanelMidY Then
quadrant = 4
Else
quadrant = 1
End If
Else
If pYGUI > Data.guiPanelMidY Then
quadrant = 3
Else
quadrant = 2
End If
End If
Return quadrant
End Function
End Class

View File

@ -0,0 +1,421 @@
Public Class Corner_Rectangle
Private Shared buttonOffset As Integer
Private Shared cornerRectangleCounter As Integer = 0
' --- Create textboxes when user clicks the rectangle corner recess button ---
Public Shared Sub SquareButtton(sender As Object, e As EventArgs)
Grating_Configurator.Panel_Recesses.Controls("Button_Angle_Corner").Enabled = False
Grating_Configurator.Panel_Recesses.Controls("Button_Angle_Side").Enabled = False
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Corner").Enabled = False
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Side").Enabled = False
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Middle").Enabled = False
Dim buttonX As Integer = Grating_Configurator.Panel_Recesses.Controls("Button_Square_Corner").Location.X + Grating_Configurator.Panel_Recesses.Controls("Button_Square_Corner").Width
Dim buttonY As Integer = Grating_Configurator.Panel_Recesses.Controls("Button_Square_Corner").Location.Y
Grating_Configurator.Create_TextBox_Recesses("Y_TextBox", "", buttonX + 60, buttonY + 10, 60)
AddHandler Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").TextChanged, AddressOf FunctionTextCorner_Changed
AddHandler Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").KeyPress, AddressOf FunctionText_KeyPress
Grating_Configurator.Create_Label_Recesses("Y_Label", "Width", buttonX + 18, buttonY + 13)
Grating_Configurator.Create_TextBox_Recesses("X_TextBox", "", buttonX + 60, buttonY + 40, 60)
AddHandler Grating_Configurator.Panel_Recesses.Controls("X_TextBox").TextChanged, AddressOf FunctionTextCorner_Changed
AddHandler Grating_Configurator.Panel_Recesses.Controls("X_TextBox").KeyPress, AddressOf FunctionText_KeyPress
Grating_Configurator.Create_Label_Recesses("X_Label", "Length", buttonX + 10, buttonY + 43)
buttonOffset = 130
Grating_Configurator.Panel_Recesses.Controls("Button_Angle_Side").Left = Grating_Configurator.Panel_Recesses.Controls("Button_Angle_Side").Left + buttonOffset
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Side").Left = Grating_Configurator.Panel_Recesses.Controls("Button_Square_Side").Left + buttonOffset
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Middle").Left = Grating_Configurator.Panel_Recesses.Controls("Button_Square_Middle").Left + buttonOffset
Grating_Configurator.Panel_Recesses.Controls("Button_Radius").Left = Grating_Configurator.Panel_Recesses.Controls("Button_Radius").Left + buttonOffset
Grating_Configurator.Button_Square_Corner.FlatStyle = FlatStyle.Flat
Grating_Configurator.Button_Square_Corner.FlatAppearance.BorderColor = Color.Red
End Sub
' --- Check the key pressed by the user ---
Private Shared Sub FunctionText_KeyPress(sender As Object, e As KeyPressEventArgs)
User_Input.Check_IfNumber(e)
End Sub
' --- Adds clickable buttons for all corners if conditions are met ---
Private Shared Sub FunctionTextCorner_Changed(sender As TextBox, e As EventArgs)
Dim value1, value2 As Integer
Try
value1 = CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text)
value2 = CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text)
Catch ex As Exception
value1 = 0
value2 = 0
End Try
If value1 > 0 AndAlso value2 > 0 Then
If Grating_Configurator.Panel_Grating.Controls.Count = 6 Then
For i = 0 To Data.gratingPoints.Rows.Count - 1
If Data.gratingPoints.Rows(i)("RECESS OK") Then
Dim pointButton As New Button With {
.Width = 30,
.Height = 30,
.Left = Data.gratingPoints.Rows(i)("GUI X") - 30 / 2,
.Top = Data.gratingPoints.Rows(i)("GUI Y") - 30 / 2,
.Name = Data.gratingPoints.Rows(i)("NAME") & "_Button",
.Text = ""
}
pointButton.BackColor = Color.FromArgb(50, Color.Red)
pointButton.FlatStyle = FlatStyle.Flat
pointButton.FlatAppearance.BorderSize = 0
pointButton.FlatAppearance.MouseOverBackColor = Color.Red
pointButton.FlatAppearance.MouseDownBackColor = Color.DarkRed
Dim gp As New Drawing2D.GraphicsPath
gp.AddEllipse(New Rectangle(New Point(0, 0), New Size(30, 30)))
pointButton.Region = New Region(gp)
Grating_Configurator.Panel_Grating.Controls.Add(pointButton)
AddHandler pointButton.Click, AddressOf PointButton_Click
End If
Next
End If
ElseIf Grating_Configurator.Panel_Grating.Controls.Count > 6 Then
For i = 0 To Data.gratingPoints.Rows.Count - 1
If Data.gratingPoints.Rows(i)("RECESS OK") Then
Dim buttonName As String = Data.gratingPoints.Rows(i)("NAME") & "_Button"
RemoveHandler Grating_Configurator.Panel_Grating.Controls(buttonName).Click, AddressOf PointButton_Click
Grating_Configurator.Panel_Grating.Controls.RemoveByKey(Data.gratingPoints.Rows(i)("NAME") & "_Button")
End If
Next
End If
End Sub
' --- When a corner function button is pressed ---
Private Shared Sub PointButton_Click(sender As Button, e As EventArgs)
'Determine which point is being pressed
Dim pointPressed As String = sender.Name.Replace("_Button", "").Trim()
Dim index As Integer
For Each DR As DataRow In Data.gratingPoints.Rows
If DR("NAME") = pointPressed Then
index = Data.gratingPoints.Rows.IndexOf(DR)
Exit For
End If
Next
' Remove point buttons
For i = 0 To Data.gratingPoints.Rows.Count - 1
If Data.gratingPoints.Rows(i)("RECESS OK") Then
Dim buttonName As String = Data.gratingPoints.Rows(i)("NAME") & "_Button"
RemoveHandler Grating_Configurator.Panel_Grating.Controls(buttonName).Click, AddressOf PointButton_Click
Grating_Configurator.Panel_Grating.Controls.RemoveByKey(Data.gratingPoints.Rows(i)("NAME") & "_Button")
End If
Next
cornerRectangleCounter += 1
'Retrive the points coords
Dim pXGUI As Integer = Data.gratingPoints.Rows(index)("GUI X")
Dim pYGUI As Integer = Data.gratingPoints.Rows(index)("GUI Y")
Dim pX As Decimal = Data.gratingPoints.Rows(index)("X")
Dim pY As Decimal = Data.gratingPoints.Rows(index)("Y")
Dim dXGUI As Integer = CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text / Data.scaleDiff)
Dim dYGUI As Integer = CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text / Data.scaleDiff)
Dim dX As Decimal = Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text / 1000
Dim dY As Decimal = Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text / 1000
Data.recessData.Rows.Add()
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("NAME") = "CR" & cornerRectangleCounter
For i = 2 To Data.pointsMeasurements.Count - 1
Dim mesName As String = Data.pointsMeasurements.Keys(i)
If mesName.Split("_")(0) <> "SS1" AndAlso mesName.Split("_")(0) <> "SS" AndAlso mesName.Split("_")(0) <> "MS" AndAlso mesName.Split("_")(0) <> "MS1" Then
If index + 1 = Data.pointsMeasurements(mesName)(0) Then
If Draw_Grating.measureLabels(mesName)(3) = 1 Then
Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text
Draw_Grating.measureLabels(mesName)(1) = Draw_Grating.measureLabels(mesName)(1) + dXGUI / 2
ElseIf Draw_Grating.measureLabels(mesName)(3) = 2 Then
Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text
Draw_Grating.measureLabels(mesName)(2) = Draw_Grating.measureLabels(mesName)(2) + dYGUI / 2
ElseIf Draw_Grating.measureLabels(mesName)(3) = 3 Then
Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text
Draw_Grating.measureLabels(mesName)(1) = Draw_Grating.measureLabels(mesName)(1) - dXGUI / 2
Else
Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text
Draw_Grating.measureLabels(mesName)(2) = Draw_Grating.measureLabels(mesName)(2) - dYGUI / 2
End If
ElseIf index + 1 = Data.pointsMeasurements(mesName)(1) Then
If Draw_Grating.measureLabels(mesName)(3) = 1 Then
Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text
Draw_Grating.measureLabels(mesName)(2) = Draw_Grating.measureLabels(mesName)(2) + dYGUI / 2
ElseIf Draw_Grating.measureLabels(mesName)(3) = 2 Then
Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text
Draw_Grating.measureLabels(mesName)(1) = Draw_Grating.measureLabels(mesName)(1) - dXGUI / 2
ElseIf Draw_Grating.measureLabels(mesName)(3) = 3 Then
Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text
Draw_Grating.measureLabels(mesName)(2) = Draw_Grating.measureLabels(mesName)(2) - dYGUI / 2
Else
Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text
Draw_Grating.measureLabels(mesName)(1) = Draw_Grating.measureLabels(mesName)(1) + dXGUI / 2
End If
End If
ElseIf mesName.Split("_")(0) = "SS1" AndAlso index + 2 = Data.pointsMeasurements(mesName)(1) Then
If Draw_Grating.measureLabels(mesName)(3) = 1 Then
Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text
Draw_Grating.measureLabels(mesName)(1) = Draw_Grating.measureLabels(mesName)(1) + dXGUI / 2
Draw_Grating.sideSquareMesLine(mesName)(0) = Draw_Grating.sideSquareMesLine(mesName)(0) + dXGUI
ElseIf Draw_Grating.measureLabels(mesName)(3) = 2 Then
Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text
Draw_Grating.measureLabels(mesName)(2) = Draw_Grating.measureLabels(mesName)(2) + dYGUI / 2
Draw_Grating.sideSquareMesLine(mesName)(1) = Draw_Grating.sideSquareMesLine(mesName)(1) + dYGUI
ElseIf Draw_Grating.measureLabels(mesName)(3) = 3 Then
Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text
Draw_Grating.measureLabels(mesName)(1) = Draw_Grating.measureLabels(mesName)(1) - dXGUI / 2
Draw_Grating.sideSquareMesLine(mesName)(0) = Draw_Grating.sideSquareMesLine(mesName)(0) - dXGUI
Else
Draw_Grating.measureLabels(mesName)(0) = Draw_Grating.measureLabels(mesName)(0) - Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text
Draw_Grating.measureLabels(mesName)(2) = Draw_Grating.measureLabels(mesName)(2) - dYGUI / 2
Draw_Grating.sideSquareMesLine(mesName)(1) = Draw_Grating.sideSquareMesLine(mesName)(1) - dYGUI
End If
End If
Next
Dim mesNum As Integer = Data.pointsMeasurements.Count - 1
For i = 2 To Data.pointsMeasurements.Count - 1
Dim mesName As String = Data.pointsMeasurements.Keys(i)
If index + 1 < Data.pointsMeasurements(mesName)(0) Then
If mesName.Split("_")(0) <> "MS" AndAlso mesName.Split("_")(0) <> "MS1" Then
Data.pointsMeasurements(mesName)(0) = Data.pointsMeasurements(mesName)(0) + 2
Data.pointsMeasurements(mesName)(1) = Data.pointsMeasurements(mesName)(1) + 2
ElseIf mesName.Split("_")(0) = "MS1" Then
Data.pointsMeasurements(mesName)(0) = Data.pointsMeasurements(mesName)(0) + 2
End If
ElseIf index + 1 = Data.pointsMeasurements(mesName)(0) OrElse index + 1 = Data.pointsMeasurements(mesName)(1) Then
If mesName.Split("_")(0) <> "MS" AndAlso mesName.Split("_")(0) <> "MS1" Then
Data.pointsMeasurements(mesName)(1) = Data.pointsMeasurements(mesName)(1) + 2
ElseIf mesName.Split("_")(0) = "MS1" AndAlso index + 1 = Data.pointsMeasurements(mesName)(0) AndAlso Data.pointsMeasurements(mesName)(2) = 3 Then
Data.pointsMeasurements(mesName)(0) = Data.pointsMeasurements(mesName)(0) + 2
End If
End If
Next
Dim pointQuadrant As Integer = Get_PointQuadrant(pXGUI, pYGUI)
Dim pointRow1 As DataRow = Data.gratingPoints.NewRow
Dim pointRow2 As DataRow = Data.gratingPoints.NewRow
Dim pointRow3 As DataRow = Data.gratingPoints.NewRow
pointRow1("NAME") = "CR" & cornerRectangleCounter & "_" & 1
pointRow1("QUADRANT") = pointQuadrant
pointRow1("RECESS OK") = False ' Can be True (implemented in GUI but not for SW)
pointRow2("NAME") = "CR" & cornerRectangleCounter & "_" & 2
pointRow2("QUADRANT") = pointQuadrant
pointRow2("RECESS OK") = False
pointRow3("NAME") = "CR" & cornerRectangleCounter & "_" & 3
pointRow3("QUADRANT") = pointQuadrant
pointRow3("RECESS OK") = False ' Can be True (implemented in GUI but not for SW)
If pointQuadrant = 1 Then
' Add the new points
pointRow1("X") = pX
pointRow1("Y") = pY - dY
pointRow1("GUI X") = pXGUI
pointRow1("GUI Y") = pYGUI + dYGUI
pointRow2("X") = pX + dX
pointRow2("Y") = pY - dY
pointRow2("GUI X") = pXGUI + dXGUI
pointRow2("GUI Y") = pYGUI + dYGUI
pointRow3("X") = pX + dX
pointRow3("Y") = pY
pointRow3("GUI X") = pXGUI + dXGUI
pointRow3("GUI Y") = pYGUI
' Update outer measuements (SW)
Data.pointsMeasurements("Lmes")(1) = Data.pointsMeasurements("Lmes")(1) + 2
Data.pointsMeasurements("Wmes")(0) = Data.pointsMeasurements("Wmes")(0) + 2
Data.pointsMeasurements("Wmes")(1) = Data.pointsMeasurements("Wmes")(1) + 2
' Add recess measuements (SW)
Data.pointsMeasurements.Add("S_" & mesNum, {index + 1, index + 2, 1})
Data.pointsMeasurements.Add("S_" & mesNum + 1, {index + 2, index + 3, 4})
' Add recess measurments (GUI)
Draw_Grating.measureLabels.Add("S_" & mesNum, {CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text), pXGUI + dXGUI / 2 - 8,
pYGUI + dYGUI + 3, 1})
Draw_Grating.measureLabels.Add("S_" & mesNum + 1, {CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text), pXGUI + dXGUI + 3,
pYGUI + dYGUI / 2 - 4, 1})
' Recess Data
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("RECESS TYPE") = "SQUARE"
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("CORNER") = 1
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("WIDTH") = CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text)
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("LENGTH") = CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text)
ElseIf pointQuadrant = 2 Then
' Add the new points
pointRow1("X") = pX - dX
pointRow1("Y") = pY
pointRow1("GUI X") = pXGUI - dXGUI
pointRow1("GUI Y") = pYGUI
pointRow2("X") = pX - dX
pointRow2("Y") = pY - dY
pointRow2("GUI X") = pXGUI - dXGUI
pointRow2("GUI Y") = pYGUI + dYGUI
pointRow3("X") = pX
pointRow3("Y") = pY - dY
pointRow3("GUI X") = pXGUI
pointRow3("GUI Y") = pYGUI + dYGUI
' Update outer measuements (SW)
Data.pointsMeasurements("Lmes")(1) = Data.pointsMeasurements("Lmes")(1) + 2
Data.pointsMeasurements("Wmes")(1) = Data.pointsMeasurements("Wmes")(1) + 2
' Add recess measuements (SW)
Data.pointsMeasurements.Add("S_" & mesNum, {index + 1, index + 2, 2})
Data.pointsMeasurements.Add("S_" & mesNum + 1, {index + 2, index + 3, 1})
' Add recess measurments (GUI)
Draw_Grating.measureLabels.Add("S_" & mesNum, {CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text), pXGUI - dXGUI - 18 - 3,
pYGUI + dYGUI / 2 - 4, 2})
Draw_Grating.measureLabels.Add("S_" & mesNum + 1, {CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text), pXGUI - dXGUI / 2 - 8,
pYGUI + dYGUI + 3, 2})
' Recess Data
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("RECESS TYPE") = "SQUARE"
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("CORNER") = 2
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("WIDTH") = CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text)
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("LENGTH") = CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text)
ElseIf pointQuadrant = 3 Then
' Add the new points
pointRow1("X") = pX
pointRow1("Y") = pY + dY
pointRow1("GUI X") = pXGUI
pointRow1("GUI Y") = pYGUI - dYGUI
pointRow2("X") = pX - dX
pointRow2("Y") = pY + dY
pointRow2("GUI X") = pXGUI - dXGUI
pointRow2("GUI Y") = pYGUI - dYGUI
pointRow3("X") = pX - dX
pointRow3("Y") = pY
pointRow3("GUI X") = pXGUI - dXGUI
pointRow3("GUI Y") = pYGUI
' Update outer measuements (SW)
Data.pointsMeasurements("Wmes")(1) = Data.pointsMeasurements("Wmes")(1) + 2
' Add recess measuements (SW)
Data.pointsMeasurements.Add("S_" & mesNum, {index + 1, index + 2, 3})
Data.pointsMeasurements.Add("S_" & mesNum + 1, {index + 2, index + 3, 2})
' Add recess measurments (GUI)
Draw_Grating.measureLabels.Add("S_" & mesNum, {CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text), pXGUI - dXGUI / 2 - 8,
pYGUI - dYGUI - 12 - 3, 3})
Draw_Grating.measureLabels.Add("S_" & mesNum + 1, {CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text), pXGUI - dXGUI - 18 - 3,
pYGUI - dYGUI / 2 - 4, 3})
' Recess Data
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("RECESS TYPE") = "SQUARE"
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("CORNER") = 3
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("WIDTH") = CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text)
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("LENGTH") = CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text)
Else
' Add the new points
pointRow1("X") = pX + dX
pointRow1("Y") = pY
pointRow1("GUI X") = pXGUI + dXGUI
pointRow1("GUI Y") = pYGUI
pointRow2("X") = pX + dX
pointRow2("Y") = pY + dY
pointRow2("GUI X") = pXGUI + dXGUI
pointRow2("GUI Y") = pYGUI - dYGUI
pointRow3("X") = pX
pointRow3("Y") = pY + dY
pointRow3("GUI X") = pXGUI
pointRow3("GUI Y") = pYGUI - dYGUI
' Add recess measuements (SW)
Data.pointsMeasurements.Add("S_" & mesNum, {index + 1, index + 2, 4})
Data.pointsMeasurements.Add("S_" & mesNum + 1, {index + 2, index + 3, 3})
' Add recess measurments (GUI)
Draw_Grating.measureLabels.Add("S_" & mesNum, {CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text), pXGUI + dXGUI + 3,
pYGUI - dYGUI / 2 - 4, 4})
Draw_Grating.measureLabels.Add("S_" & mesNum + 1, {CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text), pXGUI + dXGUI / 2 - 8,
pYGUI - dYGUI - 12 - 3, 4})
' Recess Data
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("RECESS TYPE") = "SQUARE"
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("CORNER") = 4
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("WIDTH") = CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text)
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("LENGTH") = CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text)
End If
Data.gratingPoints.Rows.InsertAt(pointRow1, index + 1)
Data.gratingPoints.Rows.InsertAt(pointRow2, index + 2)
Data.gratingPoints.Rows.InsertAt(pointRow3, index + 3)
Data.gratingPoints.Rows.RemoveAt(index)
'Redraw grating
Grating_Configurator.Panel_Grating.Refresh()
RemoveHandler Grating_Configurator.Panel_Recesses.Controls("X_TextBox").TextChanged, AddressOf FunctionTextCorner_Changed
RemoveHandler Grating_Configurator.Panel_Recesses.Controls("X_TextBox").KeyPress, AddressOf FunctionText_KeyPress
Grating_Configurator.Panel_Recesses.Controls.RemoveByKey("X_TextBox")
RemoveHandler Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").TextChanged, AddressOf FunctionTextCorner_Changed
RemoveHandler Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").KeyPress, AddressOf FunctionText_KeyPress
Grating_Configurator.Panel_Recesses.Controls.RemoveByKey("Y_TextBox")
Grating_Configurator.Panel_Recesses.Controls.RemoveByKey("X_Label")
Grating_Configurator.Panel_Recesses.Controls.RemoveByKey("Y_Label")
Grating_Configurator.Panel_Recesses.Controls("Button_Angle_Side").Left = Grating_Configurator.Panel_Recesses.Controls("Button_Angle_Side").Left - buttonOffset
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Side").Left = Grating_Configurator.Panel_Recesses.Controls("Button_Square_Side").Left - buttonOffset
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Middle").Left = Grating_Configurator.Panel_Recesses.Controls("Button_Square_Middle").Left - buttonOffset
Grating_Configurator.Panel_Recesses.Controls("Button_Radius").Left = Grating_Configurator.Panel_Recesses.Controls("Button_Radius").Left - buttonOffset
Grating_Configurator.Panel_Recesses.Controls("Button_Angle_Corner").Enabled = True
Grating_Configurator.Panel_Recesses.Controls("Button_Angle_Side").Enabled = True
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Corner").Enabled = True
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Side").Enabled = True
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Middle").Enabled = True
Grating_Configurator.Button_Square_Corner.FlatAppearance.BorderColor = Color.Black
End Sub
' --- Determines the clicked points quadrant ---
Private Shared Function Get_PointQuadrant(pXGUI As Integer, pYGUI As Integer)
Dim quadrant As Integer
If pXGUI < Data.guiPanelMidX Then
If pYGUI > Data.guiPanelMidY Then
quadrant = 4
Else
quadrant = 1
End If
Else
If pYGUI > Data.guiPanelMidY Then
quadrant = 3
Else
quadrant = 2
End If
End If
Return quadrant
End Function
End Class

View File

@ -0,0 +1,245 @@
Public Class Middle_Rectangle
Private Shared buttonOffset As Integer
Private Shared middleSquareValues(3) As Integer
Private Shared numOfMiddleRectangles As Integer = 0
' --- Create textboxes when user clicks the rectangle side recess button ---
Public Shared Sub SquareMiddleButtton(sender As Object, e As EventArgs)
Grating_Configurator.Panel_Recesses.Controls("Button_Angle_Corner").Enabled = False
Grating_Configurator.Panel_Recesses.Controls("Button_Angle_Side").Enabled = False
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Corner").Enabled = False
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Side").Enabled = False
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Middle").Enabled = False
Dim buttonX As Integer = Grating_Configurator.Panel_Recesses.Controls("Button_Square_Middle").Location.X + Grating_Configurator.Panel_Recesses.Controls("Button_Square_Middle").Width
Dim buttonY As Integer = Grating_Configurator.Panel_Recesses.Controls("Button_Square_Middle").Location.Y
Grating_Configurator.Create_TextBox_Recesses("Y_TextBox", "", buttonX + 60, buttonY + 10, 60)
AddHandler Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").TextChanged, AddressOf FunctionTextMiddle_Changed
AddHandler Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").KeyPress, AddressOf FunctionText_KeyPress
Grating_Configurator.Create_Label_Recesses("Y_Label", "Width", buttonX + 18, buttonY + 13)
Grating_Configurator.Create_TextBox_Recesses("X_TextBox", "", buttonX + 60, buttonY + 40, 60)
AddHandler Grating_Configurator.Panel_Recesses.Controls("X_TextBox").TextChanged, AddressOf FunctionTextMiddle_Changed
AddHandler Grating_Configurator.Panel_Recesses.Controls("X_TextBox").KeyPress, AddressOf FunctionText_KeyPress
Grating_Configurator.Create_Label_Recesses("X_Label", "Length", buttonX + 10, buttonY + 43)
Grating_Configurator.Create_TextBox_Recesses("OffX_TextBox", "", buttonX + 185, buttonY + 10, 60)
AddHandler Grating_Configurator.Panel_Recesses.Controls("OffX_TextBox").TextChanged, AddressOf FunctionTextMiddle_Changed
AddHandler Grating_Configurator.Panel_Recesses.Controls("OffX_TextBox").KeyPress, AddressOf FunctionText_KeyPress
Grating_Configurator.Create_Label_Recesses("OffX_Label", "Offset X", buttonX + 126, buttonY + 13)
Grating_Configurator.Create_TextBox_Recesses("OffY_TextBox", "", buttonX + 185, buttonY + 40, 60)
AddHandler Grating_Configurator.Panel_Recesses.Controls("OffY_TextBox").TextChanged, AddressOf FunctionTextMiddle_Changed
AddHandler Grating_Configurator.Panel_Recesses.Controls("OffY_TextBox").KeyPress, AddressOf FunctionText_KeyPress
Grating_Configurator.Create_Label_Recesses("OffY_Label", "Offset Y", buttonX + 126, buttonY + 43)
buttonOffset = 260
Grating_Configurator.Panel_Recesses.Controls("Button_Angle_Side").Left = Grating_Configurator.Panel_Recesses.Controls("Button_Angle_Side").Left + buttonOffset
Grating_Configurator.Button_Square_Middle.FlatStyle = FlatStyle.Flat
Grating_Configurator.Button_Square_Middle.FlatAppearance.BorderColor = Color.Red
End Sub
' --- Check the key pressed by the user ---
Private Shared Sub FunctionText_KeyPress(sender As Object, e As KeyPressEventArgs)
User_Input.Check_IfNumber(e)
End Sub
' --- Adds clickable buttons for all sides if conditions are met ---
Private Shared Sub FunctionTextMiddle_Changed(sender As TextBox, e As EventArgs)
Try
middleSquareValues(0) = CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text)
middleSquareValues(1) = CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text)
middleSquareValues(2) = CInt(Grating_Configurator.Panel_Recesses.Controls("OffX_TextBox").Text)
middleSquareValues(3) = CInt(Grating_Configurator.Panel_Recesses.Controls("OffY_TextBox").Text)
Catch ex As Exception
middleSquareValues(0) = 0
middleSquareValues(1) = 0
middleSquareValues(2) = 0
middleSquareValues(3) = 0
End Try
If middleSquareValues(0) > 0 AndAlso middleSquareValues(1) > 0 AndAlso middleSquareValues(2) > 0 AndAlso middleSquareValues(3) > 0 Then
If Grating_Configurator.Panel_Grating.Controls.Count = 6 Then
Dim middleButton As New Button With {
.Width = middleSquareValues(0) / Data.scaleDiff,
.Height = middleSquareValues(1) / Data.scaleDiff,
.Left = Data.grossAreaPoints.Rows(3)("GUI X") + middleSquareValues(2) / Data.scaleDiff,
.Top = Data.grossAreaPoints.Rows(3)("GUI Y") - (middleSquareValues(3) + middleSquareValues(1)) / Data.scaleDiff,
.Name = "Button_Middle",
.Text = ""
}
middleButton.BackColor = Color.FromArgb(50, Color.Red)
middleButton.FlatStyle = FlatStyle.Flat
middleButton.FlatAppearance.BorderSize = 0
middleButton.FlatAppearance.MouseOverBackColor = Color.Red
middleButton.FlatAppearance.MouseDownBackColor = Color.DarkRed
Grating_Configurator.Panel_Grating.Controls.Add(middleButton)
AddHandler middleButton.Click, AddressOf MiddleButton_Click
Else
' Update button size and position
Grating_Configurator.Panel_Grating.Controls("Button_Middle").Width = middleSquareValues(0) / Data.scaleDiff
Grating_Configurator.Panel_Grating.Controls("Button_Middle").Height = middleSquareValues(1) / Data.scaleDiff
Grating_Configurator.Panel_Grating.Controls("Button_Middle").Left = Data.grossAreaPoints.Rows(3)("GUI X") + middleSquareValues(2) / Data.scaleDiff
Grating_Configurator.Panel_Grating.Controls("Button_Middle").Top = Data.grossAreaPoints.Rows(3)("GUI Y") - (middleSquareValues(3) + middleSquareValues(1)) / Data.scaleDiff
End If
ElseIf Grating_Configurator.Panel_Grating.Controls.Count > 6 Then
RemoveHandler Grating_Configurator.Panel_Grating.Controls("Button_Middle").Click, AddressOf MiddleButton_Click
Grating_Configurator.Panel_Grating.Controls.RemoveByKey("Button_Middle")
End If
End Sub
' --- When a side function button is pressed ---
Private Shared Sub MiddleButton_Click(sender As Button, e As EventArgs)
' Remove point buttons
RemoveHandler Grating_Configurator.Panel_Grating.Controls("Button_Middle").Click, AddressOf MiddleButton_Click
Grating_Configurator.Panel_Grating.Controls.RemoveByKey("Button_Middle")
Dim mesNum As Integer = Data.pointsMeasurements.Count - 1
Data.recessData.Rows.Add()
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("NAME") = "MS" & numOfMiddleRectangles
Dim pointRow1 As DataRow = Data.gratingMiddlePoints.NewRow
Dim pointRow2 As DataRow = Data.gratingMiddlePoints.NewRow
Dim pointRow3 As DataRow = Data.gratingMiddlePoints.NewRow
Dim pointRow4 As DataRow = Data.gratingMiddlePoints.NewRow
pointRow1("NAME") = "MS" & numOfMiddleRectangles & "_" & 1
pointRow1("X") = Data.grossAreaPoints.Rows(3)("X") + middleSquareValues(2) / 1000
pointRow1("Y") = Data.grossAreaPoints.Rows(3)("Y") + (middleSquareValues(3) + middleSquareValues(1)) / 1000
pointRow1("GUI X") = Data.grossAreaPoints.Rows(3)("GUI X") + middleSquareValues(2) / Data.scaleDiff
pointRow1("GUI Y") = Data.grossAreaPoints.Rows(3)("GUI Y") - (middleSquareValues(3) + middleSquareValues(1)) / Data.scaleDiff
pointRow2("NAME") = "MS" & numOfMiddleRectangles & "_" & 2
pointRow2("X") = Data.grossAreaPoints.Rows(3)("X") + (middleSquareValues(2) + middleSquareValues(0)) / 1000
pointRow2("Y") = Data.grossAreaPoints.Rows(3)("Y") + (middleSquareValues(3) + middleSquareValues(1)) / 1000
pointRow2("GUI X") = Data.grossAreaPoints.Rows(3)("GUI X") + (middleSquareValues(2) + middleSquareValues(0)) / Data.scaleDiff
pointRow2("GUI Y") = Data.grossAreaPoints.Rows(3)("GUI Y") - (middleSquareValues(3) + middleSquareValues(1)) / Data.scaleDiff
pointRow3("NAME") = "MS" & numOfMiddleRectangles & "_" & 3
pointRow3("X") = Data.grossAreaPoints.Rows(3)("X") + (middleSquareValues(2) + middleSquareValues(0)) / 1000
pointRow3("Y") = Data.grossAreaPoints.Rows(3)("Y") + middleSquareValues(3) / 1000
pointRow3("GUI X") = Data.grossAreaPoints.Rows(3)("GUI X") + (middleSquareValues(2) + middleSquareValues(0)) / Data.scaleDiff
pointRow3("GUI Y") = Data.grossAreaPoints.Rows(3)("GUI Y") - middleSquareValues(3) / Data.scaleDiff
pointRow4("NAME") = "MS" & numOfMiddleRectangles & "_" & 4
pointRow4("X") = Data.grossAreaPoints.Rows(3)("X") + middleSquareValues(2) / 1000
pointRow4("Y") = Data.grossAreaPoints.Rows(3)("Y") + middleSquareValues(3) / 1000
pointRow4("GUI X") = Data.grossAreaPoints.Rows(3)("GUI X") + middleSquareValues(2) / Data.scaleDiff
pointRow4("GUI Y") = Data.grossAreaPoints.Rows(3)("GUI Y") - middleSquareValues(3) / Data.scaleDiff
numOfMiddleRectangles += 1
Dim sidePoints3 As New List(Of Integer)
For j = 2 To Data.gratingPoints.Rows.Count - 1
If Data.gratingPoints.Rows(j)("GUI Y") = Data.grossAreaPoints.Rows(2)("GUI Y") Then
sidePoints3.Add(j)
End If
Next
Dim sidePoints4 As New List(Of Integer)
For j = 3 To Data.gratingPoints.Rows.Count - 1
If Data.gratingPoints.Rows(j)("GUI X") = Data.grossAreaPoints.Rows(3)("GUI X") Then
sidePoints4.Add(j)
End If
Next
sidePoints4.Add(0)
' Add recess measuements (SW)
Data.pointsMeasurements.Add("MS1_" & numOfMiddleRectangles & "_" & mesNum, {sidePoints4(0) + 1, numOfMiddleRectangles * 4, 3})
Data.pointsMeasurements.Add("MS1_" & numOfMiddleRectangles & "_" & mesNum + 1, {sidePoints3(sidePoints3.Count - 1) + 1, numOfMiddleRectangles * 4, 4})
Data.pointsMeasurements.Add("MS_" & numOfMiddleRectangles & "_" & mesNum + 2, {numOfMiddleRectangles * 4, numOfMiddleRectangles * 4 - 1, 3})
Data.pointsMeasurements.Add("MS_" & numOfMiddleRectangles & "_" & mesNum + 3, {numOfMiddleRectangles * 4 - 3, numOfMiddleRectangles * 4, 4})
' Add support line data for sidesquare measurement
Dim lineOffset As Integer = 5
Draw_Grating.sideSquareMesLine.Add("MS1_" & numOfMiddleRectangles & "_" & mesNum,
{Data.grossAreaPoints.Rows(3)("GUI X") + lineOffset,
Data.grossAreaPoints.Rows(3)("GUI Y") - middleSquareValues(3) / Data.scaleDiff,
Data.grossAreaPoints.Rows(3)("GUI X") + middleSquareValues(2) / Data.scaleDiff - lineOffset,
Data.grossAreaPoints.Rows(3)("GUI Y") - middleSquareValues(3) / Data.scaleDiff})
Draw_Grating.sideSquareMesLine.Add("MS1_" & numOfMiddleRectangles & "_" & mesNum + 1,
{Data.grossAreaPoints.Rows(3)("GUI X") + middleSquareValues(2) / Data.scaleDiff,
Data.grossAreaPoints.Rows(3)("GUI Y") - lineOffset,
Data.grossAreaPoints.Rows(3)("GUI X") + middleSquareValues(2) / Data.scaleDiff,
Data.grossAreaPoints.Rows(3)("GUI Y") - middleSquareValues(3) / Data.scaleDiff + lineOffset})
' Add recess measurments (GUI)
Draw_Grating.measureLabels.Add("MS1_" & numOfMiddleRectangles & "_" & mesNum,
{CInt(Grating_Configurator.Panel_Recesses.Controls("OffX_TextBox").Text),
Data.grossAreaPoints.Rows(3)("GUI X") + (middleSquareValues(2) / Data.scaleDiff) / 2 - 8,
Data.grossAreaPoints.Rows(3)("GUI Y") - middleSquareValues(3) / Data.scaleDiff - 12 - 3,
1})
Draw_Grating.measureLabels.Add("MS1_" & numOfMiddleRectangles & "_" & mesNum + 1,
{CInt(Grating_Configurator.Panel_Recesses.Controls("OffY_TextBox").Text),
Data.grossAreaPoints.Rows(3)("GUI X") + middleSquareValues(2) / Data.scaleDiff + 3,
Data.grossAreaPoints.Rows(3)("GUI Y") - middleSquareValues(3) / Data.scaleDiff + (middleSquareValues(3) / Data.scaleDiff) / 2 - 6,
1})
Draw_Grating.measureLabels.Add("MS_" & numOfMiddleRectangles & "_" & mesNum + 2,
{CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text),
Data.grossAreaPoints.Rows(3)("GUI X") + middleSquareValues(2) / Data.scaleDiff + (CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text) / Data.scaleDiff) / 2 - 8,
Data.grossAreaPoints.Rows(3)("GUI Y") - middleSquareValues(3) / Data.scaleDiff - CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text) / Data.scaleDiff - 12 - 3,
1})
Draw_Grating.measureLabels.Add("MS_" & numOfMiddleRectangles & "_" & mesNum + 3,
{CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text),
Data.grossAreaPoints.Rows(3)("GUI X") + middleSquareValues(2) / Data.scaleDiff + CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text) / Data.scaleDiff + 3,
Data.grossAreaPoints.Rows(3)("GUI Y") - middleSquareValues(3) / Data.scaleDiff - (CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text) / Data.scaleDiff) / 2 - 6,
1})
' Recess Data
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("RECESS TYPE") = "MIDDLE SQUARE"
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("WIDTH") = CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text)
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("LENGTH") = CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text)
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("OFFSET X") = CInt(Grating_Configurator.Panel_Recesses.Controls("OffX_TextBox").Text)
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("OFFSET Y") = CInt(Grating_Configurator.Panel_Recesses.Controls("OffY_TextBox").Text)
Data.gratingMiddlePoints.Rows.InsertAt(pointRow1, numOfMiddleRectangles * 4 - 4)
Data.gratingMiddlePoints.Rows.InsertAt(pointRow2, numOfMiddleRectangles * 4 - 3)
Data.gratingMiddlePoints.Rows.InsertAt(pointRow3, numOfMiddleRectangles * 4 - 2)
Data.gratingMiddlePoints.Rows.InsertAt(pointRow4, numOfMiddleRectangles * 4 - 1)
'Redraw grating
Grating_Configurator.Panel_Grating.Refresh()
RemoveHandler Grating_Configurator.Panel_Recesses.Controls("X_TextBox").TextChanged, AddressOf FunctionTextMiddle_Changed
RemoveHandler Grating_Configurator.Panel_Recesses.Controls("X_TextBox").KeyPress, AddressOf FunctionText_KeyPress
Grating_Configurator.Panel_Recesses.Controls.RemoveByKey("X_TextBox")
RemoveHandler Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").TextChanged, AddressOf FunctionTextMiddle_Changed
RemoveHandler Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").KeyPress, AddressOf FunctionText_KeyPress
Grating_Configurator.Panel_Recesses.Controls.RemoveByKey("Y_TextBox")
RemoveHandler Grating_Configurator.Panel_Recesses.Controls("OffX_TextBox").TextChanged, AddressOf FunctionTextMiddle_Changed
RemoveHandler Grating_Configurator.Panel_Recesses.Controls("OffX_TextBox").KeyPress, AddressOf FunctionText_KeyPress
Grating_Configurator.Panel_Recesses.Controls.RemoveByKey("OffX_TextBox")
RemoveHandler Grating_Configurator.Panel_Recesses.Controls("OffY_TextBox").TextChanged, AddressOf FunctionTextMiddle_Changed
RemoveHandler Grating_Configurator.Panel_Recesses.Controls("OffY_TextBox").KeyPress, AddressOf FunctionText_KeyPress
Grating_Configurator.Panel_Recesses.Controls.RemoveByKey("OffY_TextBox")
Grating_Configurator.Panel_Recesses.Controls.RemoveByKey("X_Label")
Grating_Configurator.Panel_Recesses.Controls.RemoveByKey("Y_Label")
Grating_Configurator.Panel_Recesses.Controls.RemoveByKey("OffX_Label")
Grating_Configurator.Panel_Recesses.Controls.RemoveByKey("OffY_Label")
Grating_Configurator.Panel_Recesses.Controls("Button_Angle_Corner").Enabled = True
Grating_Configurator.Panel_Recesses.Controls("Button_Angle_Side").Enabled = True
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Corner").Enabled = True
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Side").Enabled = True
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Middle").Enabled = True
Grating_Configurator.Panel_Recesses.Controls("Button_Angle_Side").Left = Grating_Configurator.Panel_Recesses.Controls("Button_Angle_Side").Left - buttonOffset
Grating_Configurator.Button_Square_Middle.FlatAppearance.BorderColor = Color.Black
End Sub
End Class

View File

@ -0,0 +1,578 @@
Public Class Side_Rectangle
Private Shared buttonOffset As Integer
Private Shared sideSquareValues(3) As Integer
Private Shared numOfSideRectangles As Integer = 0
' --- Create textboxes when user clicks the rectangle side recess button ---
Public Shared Sub SquareSideButtton(sender As Object, e As EventArgs)
Grating_Configurator.Panel_Recesses.Controls("Button_Angle_Corner").Enabled = False
Grating_Configurator.Panel_Recesses.Controls("Button_Angle_Side").Enabled = False
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Corner").Enabled = False
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Side").Enabled = False
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Middle").Enabled = False
Dim buttonX As Integer = Grating_Configurator.Panel_Recesses.Controls("Button_Square_Side").Location.X + Grating_Configurator.Panel_Recesses.Controls("Button_Square_Side").Width
Dim buttonY As Integer = Grating_Configurator.Panel_Recesses.Controls("Button_Square_Side").Location.Y
Grating_Configurator.Create_TextBox_Recesses("Y_TextBox", "", buttonX + 60, buttonY - 7, 60)
AddHandler Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").TextChanged, AddressOf FunctionTextSide_Changed
AddHandler Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").KeyPress, AddressOf FunctionText_KeyPress
Grating_Configurator.Create_Label_Recesses("Y_Label", "Width", buttonX + 18, buttonY - 4)
Grating_Configurator.Create_TextBox_Recesses("X_TextBox", "", buttonX + 60, buttonY + 23, 60)
AddHandler Grating_Configurator.Panel_Recesses.Controls("X_TextBox").TextChanged, AddressOf FunctionTextSide_Changed
AddHandler Grating_Configurator.Panel_Recesses.Controls("X_TextBox").KeyPress, AddressOf FunctionText_KeyPress
Grating_Configurator.Create_Label_Recesses("X_Label", "Length", buttonX + 10, buttonY + 26)
Grating_Configurator.Create_TextBox_Recesses("Off_TextBox", "", buttonX + 60, buttonY + 53, 60)
AddHandler Grating_Configurator.Panel_Recesses.Controls("Off_TextBox").TextChanged, AddressOf FunctionTextSide_Changed
AddHandler Grating_Configurator.Panel_Recesses.Controls("Off_TextBox").KeyPress, AddressOf FunctionText_KeyPress
Grating_Configurator.Create_Label_Recesses("Off_Label", "Offset", buttonX + 16, buttonY + 56)
buttonOffset = 130
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Middle").Left = Grating_Configurator.Panel_Recesses.Controls("Button_Square_Middle").Left + buttonOffset
Grating_Configurator.Panel_Recesses.Controls("Button_Angle_Side").Left = Grating_Configurator.Panel_Recesses.Controls("Button_Angle_Side").Left + buttonOffset
Grating_Configurator.Button_Square_Side.FlatStyle = FlatStyle.Flat
Grating_Configurator.Button_Square_Side.FlatAppearance.BorderColor = Color.Red
End Sub
' --- Check the key pressed by the user ---
Private Shared Sub FunctionText_KeyPress(sender As Object, e As KeyPressEventArgs)
User_Input.Check_IfNumber(e)
End Sub
' --- Adds clickable buttons for all sides if conditions are met ---
Private Shared Sub FunctionTextSide_Changed(sender As TextBox, e As EventArgs)
Try
sideSquareValues(0) = CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text)
sideSquareValues(1) = CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text)
sideSquareValues(2) = CInt(Grating_Configurator.Panel_Recesses.Controls("Off_TextBox").Text)
Catch ex As Exception
sideSquareValues(0) = 0
sideSquareValues(1) = 0
sideSquareValues(2) = 0
End Try
If sideSquareValues(0) > 0 AndAlso sideSquareValues(1) > 0 AndAlso sideSquareValues(2) > 0 Then
If Grating_Configurator.Panel_Grating.Controls.Count = 6 Then
For i = 1 To 4
Dim sidePoints As New List(Of String)
If i = 1 Then
Create_SideButton(sideSquareValues(0) / (Data.scaleDiff), 30,
Data.grossAreaPoints.Rows(0)("GUI X") + sideSquareValues(2) / (Data.scaleDiff),
Data.grossAreaPoints.Rows(0)("GUI Y") - 30 / 2,
"Button_" & i)
ElseIf i = 2 Then
Create_SideButton(30, sideSquareValues(1) / (Data.scaleDiff),
Data.grossAreaPoints.Rows(1)("GUI X") - 30 / 2,
Data.grossAreaPoints.Rows(1)("GUI Y") + sideSquareValues(2) / (Data.scaleDiff), "Button_" & i)
ElseIf i = 3 Then
Create_SideButton(sideSquareValues(0) / (Data.scaleDiff), 30,
Data.grossAreaPoints.Rows(2)("GUI X") - sideSquareValues(2) / (Data.scaleDiff) - sideSquareValues(0) / (Data.scaleDiff),
Data.grossAreaPoints.Rows(2)("GUI Y") - 30 / 2,
"Button_" & i)
Else
Create_SideButton(30, sideSquareValues(1) / (Data.scaleDiff),
Data.grossAreaPoints.Rows(3)("GUI X") - 30 / 2,
Data.grossAreaPoints.Rows(3)("GUI Y") - sideSquareValues(2) / (Data.scaleDiff) - sideSquareValues(1) / (Data.scaleDiff),
"Button_" & i)
End If
Next
Else
' Update button size and position
For i = 6 To Grating_Configurator.Panel_Grating.Controls.Count - 1
Dim buttonSide As Integer = CInt(Grating_Configurator.Panel_Grating.Controls(i).Name.Split("_")(1))
If buttonSide = 1 Then
Grating_Configurator.Panel_Grating.Controls(i).Width = sideSquareValues(0) / (Data.scaleDiff)
Grating_Configurator.Panel_Grating.Controls(i).Left = Data.grossAreaPoints.Rows(0)("GUI X") + sideSquareValues(2) / (Data.scaleDiff)
ElseIf buttonSide = 2 Then
Grating_Configurator.Panel_Grating.Controls(i).Height = sideSquareValues(1) / (Data.scaleDiff)
Grating_Configurator.Panel_Grating.Controls(i).Top = Data.grossAreaPoints.Rows(1)("GUI Y") + sideSquareValues(2) / (Data.scaleDiff)
ElseIf buttonSide = 3 Then
Grating_Configurator.Panel_Grating.Controls(i).Width = sideSquareValues(0) / (Data.scaleDiff)
Grating_Configurator.Panel_Grating.Controls(i).Left = Data.grossAreaPoints.Rows(2)("GUI X") - sideSquareValues(2) / (Data.scaleDiff) - Grating_Configurator.Panel_Grating.Controls(i).Width
Else
Grating_Configurator.Panel_Grating.Controls(i).Height = sideSquareValues(1) / (Data.scaleDiff)
Grating_Configurator.Panel_Grating.Controls(i).Top = Data.grossAreaPoints.Rows(3)("GUI Y") - sideSquareValues(2) / (Data.scaleDiff) - Grating_Configurator.Panel_Grating.Controls(i).Height
End If
Next
End If
ElseIf Grating_Configurator.Panel_Grating.Controls.Count > 6 Then
For i = 6 To Grating_Configurator.Panel_Grating.Controls.Count - 1
RemoveHandler Grating_Configurator.Panel_Grating.Controls(6).Click, AddressOf SideButton_Click
Grating_Configurator.Panel_Grating.Controls.RemoveAt(6)
Next
End If
End Sub
' --- Template to create corner buttons ---
Private Shared Sub Create_SideButton(bWidth As Integer, bHeight As Integer, bLeft As Integer, bTop As Integer, bName As String)
Dim sideButton As New Button With {
.Width = bWidth,
.Height = bHeight,
.Left = bLeft,
.Top = bTop,
.Name = bName,
.Text = ""
}
sideButton.BackColor = Color.FromArgb(50, Color.Red)
sideButton.FlatStyle = FlatStyle.Flat
sideButton.FlatAppearance.BorderSize = 0
sideButton.FlatAppearance.MouseOverBackColor = Color.Red
sideButton.FlatAppearance.MouseDownBackColor = Color.DarkRed
Grating_Configurator.Panel_Grating.Controls.Add(sideButton)
AddHandler sideButton.Click, AddressOf SideButton_Click
End Sub
' --- When a side function button is pressed ---
Private Shared Sub SideButton_Click(sender As Button, e As EventArgs)
'Determine which side is being pressed
Dim sidePressed As Integer = CInt(sender.Name.Split("_")(1))
' Remove point buttons
For i = 6 To Grating_Configurator.Panel_Grating.Controls.Count - 1
RemoveHandler Grating_Configurator.Panel_Grating.Controls(6).Click, AddressOf SideButton_Click
Grating_Configurator.Panel_Grating.Controls.RemoveAt(6)
Next
Dim sidePoints As New List(Of Integer)
Dim index As Integer
If sidePressed = 1 Then
For j = 0 To Data.gratingPoints.Rows.Count - 1
If Data.gratingPoints.Rows(j)("GUI Y") = Data.grossAreaPoints.Rows(0)("GUI Y") Then
sidePoints.Add(j)
End If
Next
index = sidePoints(0)
If sidePoints.Count > 2 Then
For i = sidePoints.Count / 2 To 2 Step -1
If Data.gratingPoints.Rows(sidePoints(i * 2 - 2))("GUI X") <
Data.grossAreaPoints.Rows(0)("GUI X") + sideSquareValues(2) / Data.scaleDiff Then
index = sidePoints(i * 2 - 2)
Exit For
End If
Next
End If
ElseIf sidePressed = 2 Then
For j = 1 To Data.gratingPoints.Rows.Count - 1
If Data.gratingPoints.Rows(j)("GUI X") = Data.grossAreaPoints.Rows(1)("GUI X") Then
sidePoints.Add(j)
End If
Next
index = sidePoints(0)
If sidePoints.Count > 2 Then
For i = sidePoints.Count / 2 To 2 Step -1
If Data.gratingPoints.Rows(sidePoints(i * 2 - 2))("GUI Y") <
Data.grossAreaPoints.Rows(1)("GUI Y") + sideSquareValues(2) / Data.scaleDiff Then
index = sidePoints(i * 2 - 2)
Exit For
End If
Next
End If
ElseIf sidePressed = 3 Then
For j = 2 To Data.gratingPoints.Rows.Count - 1
If Data.gratingPoints.Rows(j)("GUI Y") = Data.grossAreaPoints.Rows(2)("GUI Y") Then
sidePoints.Add(j)
End If
Next
index = sidePoints(0)
If sidePoints.Count > 2 Then
For i = sidePoints.Count / 2 To 2 Step -1
If Data.gratingPoints.Rows(sidePoints(i * 2 - 2))("GUI X") >
Data.grossAreaPoints.Rows(2)("GUI X") - sideSquareValues(2) / Data.scaleDiff Then
index = sidePoints(i * 2 - 2)
Exit For
End If
Next
End If
Else
For j = 3 To Data.gratingPoints.Rows.Count - 1
If Data.gratingPoints.Rows(j)("GUI X") = Data.grossAreaPoints.Rows(3)("GUI X") Then
sidePoints.Add(j)
End If
Next
sidePoints.Add(0)
index = sidePoints(0)
If sidePoints.Count > 2 Then
For i = sidePoints.Count / 2 To 2 Step -1
If Data.gratingPoints.Rows(sidePoints(i * 2 - 2))("GUI Y") >
Data.grossAreaPoints.Rows(3)("GUI Y") - sideSquareValues(2) / Data.scaleDiff Then
index = sidePoints(i * 2 - 2)
Exit For
End If
Next
End If
End If
For i = 2 To Data.pointsMeasurements.Count - 1
Dim mesName As String = Data.pointsMeasurements.Keys(i)
If mesName.Split("_")(0) = "SS1" AndAlso mesName.Split("_")(0) <> "MS" AndAlso mesName.Split("_")(0) <> "MS1" Then
If index + 2 = Data.pointsMeasurements(mesName)(1) Then
If Draw_Grating.measureLabels(mesName)(3) = 1 Then
Draw_Grating.measureLabels(mesName)(0) = Data.gratingPoints.Rows(index + 1)("X") * 1000 -
Data.grossAreaPoints.Rows(0)("X") * 1000 - (sideSquareValues(2) + sideSquareValues(0))
Draw_Grating.sideSquareMesLine(mesName)(0) = Data.grossAreaPoints.Rows(0)("GUI X") + (sideSquareValues(2) + sideSquareValues(0)) / Data.scaleDiff
Draw_Grating.measureLabels(mesName)(1) = (Draw_Grating.sideSquareMesLine(mesName)(0) + Draw_Grating.sideSquareMesLine(mesName)(2)) / 2 - 8
ElseIf Draw_Grating.measureLabels(mesName)(3) = 2 Then
Draw_Grating.measureLabels(mesName)(0) = Data.grossAreaPoints.Rows(1)("Y") * 1000 - Data.gratingPoints.Rows(index + 1)("Y") * 1000 -
(sideSquareValues(2) + sideSquareValues(1))
Draw_Grating.sideSquareMesLine(mesName)(1) = Data.grossAreaPoints.Rows(1)("GUI Y") + (sideSquareValues(2) + sideSquareValues(1)) / Data.scaleDiff
Draw_Grating.measureLabels(mesName)(2) = (Draw_Grating.sideSquareMesLine(mesName)(1) + Draw_Grating.sideSquareMesLine(mesName)(3)) / 2 - 6
ElseIf Draw_Grating.measureLabels(mesName)(3) = 3 Then
Draw_Grating.measureLabels(mesName)(0) = Data.grossAreaPoints.Rows(2)("X") * 1000 - Data.gratingPoints.Rows(index + 1)("X") * 1000 -
(sideSquareValues(2) + sideSquareValues(0))
Draw_Grating.sideSquareMesLine(mesName)(0) = Data.grossAreaPoints.Rows(2)("GUI X") - (sideSquareValues(2) + sideSquareValues(0)) / Data.scaleDiff
Draw_Grating.measureLabels(mesName)(1) = (Draw_Grating.sideSquareMesLine(mesName)(0) + Draw_Grating.sideSquareMesLine(mesName)(2)) / 2 - 8
Else
Draw_Grating.measureLabels(mesName)(0) = Data.gratingPoints.Rows(index + 1)("Y") * 1000 -
Data.grossAreaPoints.Rows(3)("Y") * 1000 - (sideSquareValues(2) + sideSquareValues(1))
Draw_Grating.sideSquareMesLine(mesName)(1) = Data.grossAreaPoints.Rows(3)("GUI Y") - (sideSquareValues(2) + sideSquareValues(1)) / Data.scaleDiff
Draw_Grating.measureLabels(mesName)(2) = (Draw_Grating.sideSquareMesLine(mesName)(1) + Draw_Grating.sideSquareMesLine(mesName)(3)) / 2 - 6
End If
End If
End If
Next
For i = 2 To Data.pointsMeasurements.Count - 1
Dim mesName As String = Data.pointsMeasurements.Keys(i)
If mesName.Split("_")(0) <> "SS1" AndAlso index + 1 < Data.pointsMeasurements(mesName)(0) Then
If mesName.Split("_")(0) <> "MS" AndAlso mesName.Split("_")(0) <> "MS1" Then
Data.pointsMeasurements(mesName)(0) = Data.pointsMeasurements(mesName)(0) + 4
Data.pointsMeasurements(mesName)(1) = Data.pointsMeasurements(mesName)(1) + 4
ElseIf mesName.Split("_")(0) = "MS1" Then
Data.pointsMeasurements(mesName)(0) = Data.pointsMeasurements(mesName)(0) + 4
End If
ElseIf mesName.Split("_")(0) = "SS1" Then
If index + 2 <= Data.pointsMeasurements(mesName)(0) Then
If mesName.Split("_")(0) <> "MS" AndAlso mesName.Split("_")(0) <> "MS1" Then
Data.pointsMeasurements(mesName)(0) = Data.pointsMeasurements(mesName)(0) + 4
Data.pointsMeasurements(mesName)(1) = Data.pointsMeasurements(mesName)(1) + 4
ElseIf mesName.Split("_")(0) = "MS1" Then
Data.pointsMeasurements(mesName)(0) = Data.pointsMeasurements(mesName)(0) + 4
End If
ElseIf index + 2 <= Data.pointsMeasurements(mesName)(1) Then
If mesName.Split("_")(0) <> "MS" AndAlso mesName.Split("_")(0) <> "MS1" Then
Data.pointsMeasurements(mesName)(1) = Data.pointsMeasurements(mesName)(1) + 4
End If
End If
End If
Next
Dim mesNum As Integer = Data.pointsMeasurements.Count - 1
Data.recessData.Rows.Add()
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("NAME") = "CS" & numOfSideRectangles
Dim pointRow1 As DataRow = Data.gratingPoints.NewRow
Dim pointRow2 As DataRow = Data.gratingPoints.NewRow
Dim pointRow3 As DataRow = Data.gratingPoints.NewRow
Dim pointRow4 As DataRow = Data.gratingPoints.NewRow
pointRow1("NAME") = "CS" & numOfSideRectangles & "_" & 1
pointRow1("QUADRANT") = 1
pointRow1("RECESS OK") = False
pointRow2("NAME") = "CS" & numOfSideRectangles & "_" & 2
pointRow2("QUADRANT") = 1
pointRow2("RECESS OK") = False
pointRow3("NAME") = "CS" & numOfSideRectangles & "_" & 3
pointRow3("QUADRANT") = 1
pointRow3("RECESS OK") = False
pointRow4("NAME") = "CS" & numOfSideRectangles & "_" & 4
pointRow4("QUADRANT") = 1
pointRow4("RECESS OK") = False
If sidePressed = 1 Then
' Add the new points
pointRow1("X") = Data.grossAreaPoints.Rows(0)("X") + sideSquareValues(2) / 1000
pointRow1("Y") = Data.grossAreaPoints.Rows(0)("Y")
pointRow1("GUI X") = Data.grossAreaPoints.Rows(0)("GUI X") + sideSquareValues(2) / Data.scaleDiff
pointRow1("GUI Y") = Data.grossAreaPoints.Rows(0)("GUI Y")
pointRow2("X") = Data.grossAreaPoints.Rows(0)("X") + sideSquareValues(2) / 1000
pointRow2("Y") = Data.grossAreaPoints.Rows(0)("Y") - sideSquareValues(1) / 1000
pointRow2("GUI X") = Data.grossAreaPoints.Rows(0)("GUI X") + sideSquareValues(2) / Data.scaleDiff
pointRow2("GUI Y") = Data.grossAreaPoints.Rows(0)("GUI Y") + sideSquareValues(1) / Data.scaleDiff
pointRow3("X") = Data.grossAreaPoints.Rows(0)("X") + (sideSquareValues(2) + sideSquareValues(0)) / 1000
pointRow3("Y") = Data.grossAreaPoints.Rows(0)("Y") - sideSquareValues(1) / 1000
pointRow3("GUI X") = Data.grossAreaPoints.Rows(0)("GUI X") + (sideSquareValues(2) + sideSquareValues(0)) / Data.scaleDiff
pointRow3("GUI Y") = Data.grossAreaPoints.Rows(0)("GUI Y") + sideSquareValues(1) / Data.scaleDiff
pointRow4("X") = Data.grossAreaPoints.Rows(0)("X") + (sideSquareValues(2) + sideSquareValues(0)) / 1000
pointRow4("Y") = Data.grossAreaPoints.Rows(0)("Y")
pointRow4("GUI X") = Data.grossAreaPoints.Rows(0)("GUI X") + (sideSquareValues(2) + sideSquareValues(0)) / Data.scaleDiff
pointRow4("GUI Y") = Data.grossAreaPoints.Rows(0)("GUI Y")
' Update outer measuements (SW)
Data.pointsMeasurements("Lmes")(1) = Data.pointsMeasurements("Lmes")(1) + 4
Data.pointsMeasurements("Wmes")(0) = Data.pointsMeasurements("Wmes")(0) + 4
Data.pointsMeasurements("Wmes")(1) = Data.pointsMeasurements("Wmes")(1) + 4
' Add recess measuements (SW)
Data.pointsMeasurements.Add("SS1_" & mesNum, {sidePoints(0) + 1, index + 2, 1})
Data.pointsMeasurements.Add("SS_" & mesNum + 1, {index + 2, index + 5, 1})
Data.pointsMeasurements.Add("SS_" & mesNum + 2, {index + 2, index + 3, 4})
' Add support line data for sidesquare measurement
Draw_Grating.sideSquareMesLine.Add("SS1_" & mesNum, {Data.gratingPoints.Rows(index)("GUI X"),
Data.grossAreaPoints.Rows(0)("GUI Y") - 15,
Data.grossAreaPoints.Rows(0)("GUI X") + sideSquareValues(2) / Data.scaleDiff,
Data.grossAreaPoints.Rows(0)("GUI Y") - 15})
' Add recess measurments (GUI)
Draw_Grating.measureLabels.Add("SS1_" & mesNum, {CInt(Grating_Configurator.Panel_Recesses.Controls("Off_TextBox").Text) - (Data.gratingPoints.Rows(index)("X") * 1000 + Data.gratingL / 2),
(Data.gratingPoints.Rows(index)("GUI X") + Data.grossAreaPoints.Rows(0)("GUI X") + sideSquareValues(2) / Data.scaleDiff) / 2 - 8,
Data.grossAreaPoints.Rows(0)("GUI Y") - 15 - 12 - 3,
1}) '15 är linjen, 12 är textens höjd, 3 är lite extra
Draw_Grating.measureLabels.Add("SS_" & mesNum + 1, {CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text),
Data.grossAreaPoints.Rows(0)("GUI X") + sideSquareValues(2) / (Data.scaleDiff) + CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text) / (2 * Data.scaleDiff) - 8,
Data.grossAreaPoints.Rows(0)("GUI Y") + sideSquareValues(1) / (Data.scaleDiff) + 3,
1})
Draw_Grating.measureLabels.Add("SS_" & mesNum + 2, {CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text),
Data.grossAreaPoints.Rows(0)("GUI X") + sideSquareValues(2) / Data.scaleDiff - 18 - 3,
Data.grossAreaPoints.Rows(0)("GUI Y") + CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text) / (2 * Data.scaleDiff) - 4,
1})
' Recess Data
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("RECESS TYPE") = "SIDE SQUARE"
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("SIDE") = 1
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("WIDTH") = CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text)
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("LENGTH") = CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text)
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("OFFSET") = CInt(Grating_Configurator.Panel_Recesses.Controls("Off_TextBox").Text)
ElseIf sidePressed = 2 Then
' Add the new points
pointRow1("X") = Data.grossAreaPoints.Rows(1)("X")
pointRow1("Y") = Data.grossAreaPoints.Rows(1)("Y") - sideSquareValues(2) / 1000
pointRow1("GUI X") = Data.grossAreaPoints.Rows(1)("GUI X")
pointRow1("GUI Y") = Data.grossAreaPoints.Rows(1)("GUI Y") + sideSquareValues(2) / Data.scaleDiff
pointRow2("X") = Data.grossAreaPoints.Rows(1)("X") - sideSquareValues(0) / 1000
pointRow2("Y") = Data.grossAreaPoints.Rows(1)("Y") - sideSquareValues(2) / 1000
pointRow2("GUI X") = Data.grossAreaPoints.Rows(1)("GUI X") - sideSquareValues(0) / Data.scaleDiff
pointRow2("GUI Y") = Data.grossAreaPoints.Rows(1)("GUI Y") + sideSquareValues(2) / Data.scaleDiff
pointRow3("X") = Data.grossAreaPoints.Rows(1)("X") - sideSquareValues(0) / 1000
pointRow3("Y") = Data.grossAreaPoints.Rows(1)("Y") - (sideSquareValues(2) + sideSquareValues(1)) / 1000
pointRow3("GUI X") = Data.grossAreaPoints.Rows(1)("GUI X") - sideSquareValues(0) / Data.scaleDiff
pointRow3("GUI Y") = Data.grossAreaPoints.Rows(1)("GUI Y") + (sideSquareValues(2) + sideSquareValues(1)) / Data.scaleDiff
pointRow4("X") = Data.grossAreaPoints.Rows(1)("X")
pointRow4("Y") = Data.grossAreaPoints.Rows(1)("Y") - (sideSquareValues(2) + sideSquareValues(1)) / 1000
pointRow4("GUI X") = Data.grossAreaPoints.Rows(1)("GUI X")
pointRow4("GUI Y") = Data.grossAreaPoints.Rows(1)("GUI Y") + (sideSquareValues(2) + sideSquareValues(1)) / Data.scaleDiff
' Update outer measuements (SW)
Data.pointsMeasurements("Wmes")(1) = Data.pointsMeasurements("Wmes")(1) + 4
' Add recess measuements (SW)
Data.pointsMeasurements.Add("SS1_" & mesNum, {sidePoints(0) + 1, index + 2, 2})
Data.pointsMeasurements.Add("SS_" & mesNum + 1, {index + 2, index + 5, 2})
Data.pointsMeasurements.Add("SS_" & mesNum + 2, {index + 2, index + 3, 3})
' Add support line data for sidesquare measurement
Draw_Grating.sideSquareMesLine.Add("SS1_" & mesNum, {Data.grossAreaPoints.Rows(1)("GUI X") + 15,
Data.gratingPoints.Rows(index)("GUI Y"),
Data.grossAreaPoints.Rows(1)("GUI X") + 15,
Data.grossAreaPoints.Rows(1)("GUI Y") + sideSquareValues(2) / Data.scaleDiff})
' Add recess measurments (GUI)
Draw_Grating.measureLabels.Add("SS1_" & mesNum, {CInt(Grating_Configurator.Panel_Recesses.Controls("Off_TextBox").Text) - (Data.gratingW / 2 - Data.gratingPoints.Rows(index)("Y") * 1000),
Data.grossAreaPoints.Rows(1)("GUI X") + 15 + 3,
(Data.gratingPoints.Rows(index)("GUI Y") + Data.grossAreaPoints.Rows(1)("GUI Y") + sideSquareValues(2) / Data.scaleDiff) / 2 - 4,
2})
Draw_Grating.measureLabels.Add("SS_" & mesNum + 1, {CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text),
Data.grossAreaPoints.Rows(1)("GUI X") - sideSquareValues(0) / Data.scaleDiff - 18 - 3,
Data.grossAreaPoints.Rows(1)("GUI Y") + (sideSquareValues(2) + sideSquareValues(1) / 2) / Data.scaleDiff - 4,
2})
Draw_Grating.measureLabels.Add("SS_" & mesNum + 2, {CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text),
Data.grossAreaPoints.Rows(1)("GUI X") - sideSquareValues(0) / (2 * Data.scaleDiff) - 8,
Data.grossAreaPoints.Rows(1)("GUI Y") + sideSquareValues(2) / Data.scaleDiff - 15 - 3,
2})
' Recess Data
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("RECESS TYPE") = "SIDE SQUARE"
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("SIDE") = 2
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("WIDTH") = CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text)
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("LENGTH") = CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text)
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("OFFSET") = CInt(Grating_Configurator.Panel_Recesses.Controls("Off_TextBox").Text)
ElseIf sidePressed = 3 Then
' Add the new points
pointRow1("X") = Data.grossAreaPoints.Rows(2)("X") - sideSquareValues(2) / 1000
pointRow1("Y") = Data.grossAreaPoints.Rows(2)("Y")
pointRow1("GUI X") = Data.grossAreaPoints.Rows(2)("GUI X") - sideSquareValues(2) / Data.scaleDiff
pointRow1("GUI Y") = Data.grossAreaPoints.Rows(2)("GUI Y")
pointRow2("X") = Data.grossAreaPoints.Rows(2)("X") - sideSquareValues(2) / 1000
pointRow2("Y") = Data.grossAreaPoints.Rows(2)("Y") + sideSquareValues(1) / 1000
pointRow2("GUI X") = Data.grossAreaPoints.Rows(2)("GUI X") - sideSquareValues(2) / Data.scaleDiff
pointRow2("GUI Y") = Data.grossAreaPoints.Rows(2)("GUI Y") - sideSquareValues(1) / Data.scaleDiff
pointRow3("X") = Data.grossAreaPoints.Rows(2)("X") - (sideSquareValues(2) + sideSquareValues(0)) / 1000
pointRow3("Y") = Data.grossAreaPoints.Rows(2)("Y") + sideSquareValues(1) / 1000
pointRow3("GUI X") = Data.grossAreaPoints.Rows(2)("GUI X") - (sideSquareValues(2) + sideSquareValues(0)) / Data.scaleDiff
pointRow3("GUI Y") = Data.grossAreaPoints.Rows(2)("GUI Y") - sideSquareValues(1) / Data.scaleDiff
pointRow4("X") = Data.grossAreaPoints.Rows(2)("X") - (sideSquareValues(2) + sideSquareValues(0)) / 1000
pointRow4("Y") = Data.grossAreaPoints.Rows(2)("Y")
pointRow4("GUI X") = Data.grossAreaPoints.Rows(2)("GUI X") - (sideSquareValues(2) + sideSquareValues(0)) / Data.scaleDiff
pointRow4("GUI Y") = Data.grossAreaPoints.Rows(2)("GUI Y")
' Add recess measuements (SW)
Data.pointsMeasurements.Add("SS1_" & mesNum, {sidePoints(0) + 1, index + 2, 3})
Data.pointsMeasurements.Add("SS_" & mesNum + 1, {index + 2, index + 5, 3})
Data.pointsMeasurements.Add("SS_" & mesNum + 2, {index + 2, index + 3, 4})
' Add support line data for sidesquare measurement
Draw_Grating.sideSquareMesLine.Add("SS1_" & mesNum, {Data.gratingPoints.Rows(index)("GUI X"),
Data.grossAreaPoints.Rows(2)("GUI Y") + 15,
Data.grossAreaPoints.Rows(2)("GUI X") - sideSquareValues(2) / Data.scaleDiff,
Data.grossAreaPoints.Rows(2)("GUI Y") + 15})
' Add recess measurments (GUI)
Draw_Grating.measureLabels.Add("SS1_" & mesNum, {CInt(Grating_Configurator.Panel_Recesses.Controls("Off_TextBox").Text) - (Data.gratingL / 2 - Data.gratingPoints.Rows(index)("X") * 1000),
(Data.gratingPoints.Rows(index)("GUI X") + Data.grossAreaPoints.Rows(2)("GUI X") - sideSquareValues(2) / Data.scaleDiff) / 2 - 8,
Data.grossAreaPoints.Rows(2)("GUI Y") + 15 + 3,
3}) '15 är linjen, 12 är textens höjd, 3 är lite extra
Draw_Grating.measureLabels.Add("SS_" & mesNum + 1, {CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text),
Data.grossAreaPoints.Rows(2)("GUI X") - sideSquareValues(2) / (Data.scaleDiff) - CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text) / (2 * Data.scaleDiff) - 8,
Data.grossAreaPoints.Rows(2)("GUI Y") - sideSquareValues(1) / (Data.scaleDiff) - 12 - 3,
3})
Draw_Grating.measureLabels.Add("SS_" & mesNum + 2, {CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text),
Data.grossAreaPoints.Rows(2)("GUI X") - sideSquareValues(2) / Data.scaleDiff + 3,
Data.grossAreaPoints.Rows(2)("GUI Y") - CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text) / (2 * Data.scaleDiff) - 4,
3})
' Recess Data
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("RECESS TYPE") = "SIDE SQUARE"
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("SIDE") = 3
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("WIDTH") = CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text)
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("LENGTH") = CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text)
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("OFFSET") = CInt(Grating_Configurator.Panel_Recesses.Controls("Off_TextBox").Text)
Else
' Add the new points
pointRow1("X") = Data.grossAreaPoints.Rows(3)("X")
pointRow1("Y") = Data.grossAreaPoints.Rows(3)("Y") + sideSquareValues(2) / 1000
pointRow1("GUI X") = Data.grossAreaPoints.Rows(3)("GUI X")
pointRow1("GUI Y") = Data.grossAreaPoints.Rows(3)("GUI Y") - sideSquareValues(2) / Data.scaleDiff
pointRow2("X") = Data.grossAreaPoints.Rows(3)("X") + sideSquareValues(0) / 1000
pointRow2("Y") = Data.grossAreaPoints.Rows(3)("Y") + sideSquareValues(2) / 1000
pointRow2("GUI X") = Data.grossAreaPoints.Rows(3)("GUI X") + sideSquareValues(0) / Data.scaleDiff
pointRow2("GUI Y") = Data.grossAreaPoints.Rows(3)("GUI Y") - sideSquareValues(2) / Data.scaleDiff
pointRow3("X") = Data.grossAreaPoints.Rows(3)("X") + sideSquareValues(0) / 1000
pointRow3("Y") = Data.grossAreaPoints.Rows(3)("Y") + (sideSquareValues(2) + sideSquareValues(1)) / 1000
pointRow3("GUI X") = Data.grossAreaPoints.Rows(3)("GUI X") + sideSquareValues(0) / Data.scaleDiff
pointRow3("GUI Y") = Data.grossAreaPoints.Rows(3)("GUI Y") - (sideSquareValues(2) + sideSquareValues(1)) / Data.scaleDiff
pointRow4("X") = Data.grossAreaPoints.Rows(3)("X")
pointRow4("Y") = Data.grossAreaPoints.Rows(3)("Y") + (sideSquareValues(2) + sideSquareValues(1)) / 1000
pointRow4("GUI X") = Data.grossAreaPoints.Rows(3)("GUI X")
pointRow4("GUI Y") = Data.grossAreaPoints.Rows(3)("GUI Y") - (sideSquareValues(2) + sideSquareValues(1)) / Data.scaleDiff
' Add recess measuements (SW)
Data.pointsMeasurements.Add("SS1_" & mesNum, {sidePoints(0) + 1, index + 2, 4})
Data.pointsMeasurements.Add("SS_" & mesNum + 1, {index + 2, index + 5, 4})
Data.pointsMeasurements.Add("SS_" & mesNum + 2, {index + 2, index + 3, 3})
' Add support line data for sidesquare measurement
Draw_Grating.sideSquareMesLine.Add("SS1_" & mesNum, {Data.grossAreaPoints.Rows(3)("GUI X") - 15,
Data.gratingPoints.Rows(index)("GUI Y"),
Data.grossAreaPoints.Rows(3)("GUI X") - 15,
Data.grossAreaPoints.Rows(3)("GUI Y") - sideSquareValues(2) / Data.scaleDiff})
' Add recess measurments (GUI)
Draw_Grating.measureLabels.Add("SS1_" & mesNum, {CInt(Grating_Configurator.Panel_Recesses.Controls("Off_TextBox").Text) - (Data.gratingW / 2 + Data.gratingPoints.Rows(index)("Y") * 1000),
Data.grossAreaPoints.Rows(3)("GUI X") - 15 - 18 - 3,
(Data.gratingPoints.Rows(index)("GUI Y") + Data.grossAreaPoints.Rows(3)("GUI Y") - sideSquareValues(2) / Data.scaleDiff) / 2 - 4,
4})
Draw_Grating.measureLabels.Add("SS_" & mesNum + 1, {CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text),
Data.grossAreaPoints.Rows(3)("GUI X") + sideSquareValues(0) / Data.scaleDiff + 3,
Data.grossAreaPoints.Rows(3)("GUI Y") - (sideSquareValues(2) + sideSquareValues(1) / 2) / Data.scaleDiff - 4,
4})
Draw_Grating.measureLabels.Add("SS_" & mesNum + 2, {CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text),
Data.grossAreaPoints.Rows(3)("GUI X") + sideSquareValues(0) / (2 * Data.scaleDiff) - 8,
Data.grossAreaPoints.Rows(3)("GUI Y") - sideSquareValues(2) / Data.scaleDiff + 3,
4})
' Recess Data
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("RECESS TYPE") = "SIDE SQUARE"
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("SIDE") = 4
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("WIDTH") = CInt(Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").Text)
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("LENGTH") = CInt(Grating_Configurator.Panel_Recesses.Controls("X_TextBox").Text)
Data.recessData.Rows(Data.recessData.Rows.Count - 1)("OFFSET") = CInt(Grating_Configurator.Panel_Recesses.Controls("Off_TextBox").Text)
End If
Data.gratingPoints.Rows.InsertAt(pointRow1, index + 1)
Data.gratingPoints.Rows.InsertAt(pointRow2, index + 2)
Data.gratingPoints.Rows.InsertAt(pointRow3, index + 3)
Data.gratingPoints.Rows.InsertAt(pointRow4, index + 4)
numOfSideRectangles += 1
'Redraw grating
Grating_Configurator.Panel_Grating.Refresh()
RemoveHandler Grating_Configurator.Panel_Recesses.Controls("X_TextBox").TextChanged, AddressOf FunctionTextSide_Changed
RemoveHandler Grating_Configurator.Panel_Recesses.Controls("X_TextBox").KeyPress, AddressOf FunctionText_KeyPress
Grating_Configurator.Panel_Recesses.Controls.RemoveByKey("X_TextBox")
RemoveHandler Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").TextChanged, AddressOf FunctionTextSide_Changed
RemoveHandler Grating_Configurator.Panel_Recesses.Controls("Y_TextBox").KeyPress, AddressOf FunctionText_KeyPress
Grating_Configurator.Panel_Recesses.Controls.RemoveByKey("Y_TextBox")
RemoveHandler Grating_Configurator.Panel_Recesses.Controls("Off_TextBox").TextChanged, AddressOf FunctionTextSide_Changed
RemoveHandler Grating_Configurator.Panel_Recesses.Controls("Off_TextBox").KeyPress, AddressOf FunctionText_KeyPress
Grating_Configurator.Panel_Recesses.Controls.RemoveByKey("Off_TextBox")
Grating_Configurator.Panel_Recesses.Controls.RemoveByKey("X_Label")
Grating_Configurator.Panel_Recesses.Controls.RemoveByKey("Y_Label")
Grating_Configurator.Panel_Recesses.Controls.RemoveByKey("Off_Label")
Grating_Configurator.Panel_Recesses.Controls("Button_Angle_Corner").Enabled = True
Grating_Configurator.Panel_Recesses.Controls("Button_Angle_Side").Enabled = True
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Corner").Enabled = True
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Side").Enabled = True
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Middle").Enabled = True
Grating_Configurator.Panel_Recesses.Controls("Button_Square_Middle").Left = Grating_Configurator.Panel_Recesses.Controls("Button_Square_Middle").Left - buttonOffset
Grating_Configurator.Panel_Recesses.Controls("Button_Angle_Side").Left = Grating_Configurator.Panel_Recesses.Controls("Button_Angle_Side").Left - buttonOffset
Grating_Configurator.Button_Square_Side.FlatAppearance.BorderColor = Color.Black
End Sub
End Class

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Some files were not shown because too many files have changed in this diff Show More