From 638f059c26e59ed3709c3cb8db29784fcd7e9d08 Mon Sep 17 00:00:00 2001 From: IgorA Date: Thu, 23 May 2019 19:31:53 +0000 Subject: [PATCH] add button for optimize figure git-svn-id: svn://kolibrios.org@7663 a494cfbc-eb01-0410-851d-a64ba20cac60 --- programs/other/cnc_editor/cnc_editor.asm | 65 ++++-- programs/other/cnc_editor/cnc_editor.inc | 75 ++++++- programs/other/cnc_editor/doc/but_17.png | Bin 0 -> 268 bytes programs/other/cnc_editor/doc/readme_ru.htm | 3 +- programs/other/cnc_editor/kolibri.NC | 237 -------------------- programs/other/cnc_editor/toolbar.png | Bin 3318 -> 3482 bytes programs/other/cnc_editor/wnd_new_file.inc | 2 + 7 files changed, 118 insertions(+), 264 deletions(-) create mode 100644 programs/other/cnc_editor/doc/but_17.png diff --git a/programs/other/cnc_editor/cnc_editor.asm b/programs/other/cnc_editor/cnc_editor.asm index d737e17a4f..a1c9183eeb 100644 --- a/programs/other/cnc_editor/cnc_editor.asm +++ b/programs/other/cnc_editor/cnc_editor.asm @@ -14,7 +14,7 @@ include 'cnc_editor.inc' include '../../develop/info3ds/info_fun_float.inc' @use_library_mem mem.Alloc,mem.Free,mem.ReAlloc,dll.Load -caption db 'CNC editor 22.05.19',0 ;Ї®¤ЇЁбм ®Є­  +caption db 'CNC editor 23.05.19',0 ;Ї®¤ЇЁбм ®Є­  run_file_70 FileInfoBlock @@ -410,23 +410,25 @@ pushad mcall ,,,14 ;align sel points top add ebx,25 shl 16 mcall ,,,15 ;align sel points bottom - add ebx,25 shl 16 - mcall ,,,16 ;copy to clipboard - add ebx,25 shl 16 - mcall ,,,17 ;paste from clipboard - - add ebx,25 shl 16 - mcall ,,,18 ;sel points del + mcall ,,,16 ;optimize figure add ebx,30 shl 16 - mcall ,,,19 ;restore zoom - - add ebx,30 shl 16 - mcall ,,,20 ;.png + mcall ,,,17 ;copy to clipboard + add ebx,25 shl 16 + mcall ,,,18 ;paste from clipboard add ebx,25 shl 16 - mcall ,,,21 ;options scale + mcall ,,,19 ;sel points del + + add ebx,30 shl 16 + mcall ,,,20 ;restore zoom + + add ebx,30 shl 16 + mcall ,,,21 ;.png + + add ebx,25 shl 16 + mcall ,,,22 ;options scale ; *** аЁб®ў ­ЁҐ ЁЄ®­®Є ­  Є­®ЇЄ е *** mcall SF_PUT_IMAGE,[image_data_toolbar],(16 shl 16)+16,(7 shl 16)+7 ;icon new @@ -469,7 +471,10 @@ pushad add edx,(25 shl 16) ;aling sel points bottom int 0x40 add ebx,IMAGE_TOOLBAR_ICON_SIZE - add edx,(25 shl 16) ;copy to clipboard + add edx,(25 shl 16) ;optimize figure + int 0x40 + add ebx,IMAGE_TOOLBAR_ICON_SIZE + add edx,(30 shl 16) ;copy to clipboard int 0x40 add ebx,IMAGE_TOOLBAR_ICON_SIZE add edx,(25 shl 16) ;paste from clipboard @@ -627,36 +632,41 @@ button: @@: cmp ah,16 jne @f - call but_clipboard_copy_points + call but_points_optimize jmp still @@: cmp ah,17 jne @f - call but_clipboard_paste_points + call but_clipboard_copy_points jmp still @@: cmp ah,18 jne @f - call but_sel_points_del + call but_clipboard_paste_points jmp still @@: cmp ah,19 jne @f - call but_restore_zoom + call but_sel_points_del jmp still @@: cmp ah,20 jne @f - call but_save_png + call but_restore_zoom jmp still @@: cmp ah,21 + jne @f + call but_save_png + jmp still + @@: + cmp ah,22 jne @f call but_dlg_opt_scale jmp still @@: - ;cmp ah,22 + ;cmp ah,23 ;jne @f ;call but_... ;jmp still @@ -1817,6 +1827,21 @@ popad ret endp +;description: +; ®ЇвЁ¬Ё§ жЁп дЁЈгал +align 4 +proc but_points_optimize uses eax + stdcall [tl_node_get_data],tree1 + or eax,eax + jz .no_point + cmp [eax+Figure.OType],'Fig' + jne .no_point + stdcall points_optimize,eax + mov dword[offs_last_timer],0 ;¤«п ®Ў­®ў«Ґ­Ёп Ї® в ©¬Ґаг + .no_point: + ret +endp + align 4 proc but_restore_zoom uses eax stdcall [tl_node_get_data],tree1 diff --git a/programs/other/cnc_editor/cnc_editor.inc b/programs/other/cnc_editor/cnc_editor.inc index 36bf67b23a..a3d7908575 100644 --- a/programs/other/cnc_editor/cnc_editor.inc +++ b/programs/other/cnc_editor/cnc_editor.inc @@ -118,6 +118,7 @@ PROP_BIT_SELECT equ 30 ; align 4 zoom_plus dq 1.25992105 +opt_koef dq 0.02 ;Є®Ґд. ¤«п ®ЇвЁ¬Ё§ жЁЁ (祬 Ў«Ё¦Ґ Є 0, ⥬ ЇаﬥҐ «Ё­Ёп) mouse_prop_x dd 0 ;Єгаб®а ¬лиЁ ®в­®бЁвҐ«м­® 業ва  ®Є­  buf_0 (¤«п Ё§¬Ґ­. ¬ бив Ў ) mouse_prop_y dd 0 mouse_down_x dd 0 ;Єгаб®а ¬лиЁ ®в­®бЁвҐ«м­® «Ґў®Ј® ўҐае­ҐЈ® гЈ«  ®Є­  buf_0 (¤«п б¤ўЁЈ  дЁЈгал) @@ -1525,6 +1526,72 @@ proc sel_points_invert_bit uses eax ebx ecx, pFig:dword, iBit:dword ret endp +;description: +; ®ЇвЁ¬Ё§ жЁп дЁЈгал, ўл¤Ґ«пҐв «Ёи­ЁҐ в®зЄЁ (1-п Ё Ї®б«Ґ¤­пп в®зЄЁ ­Ґ гзЁвлў овбп) +align 4 +proc points_optimize uses eax ebx ecx, pFig:dword + mov ebx,[pFig] + mov ecx,[ebx+Figure.PoiCount] + cmp ecx,3 + jl .no_point + sub ecx,2 ;®в­Ё¬ Ґ¬ в®зЄЁ Є®в®алҐ ­Ґ гзЁвлў овбп + stdcall sel_points_clear,ebx + mov ebx,[ebx+Figure.PoiData] + finit + .cycle0: + ;calc (x0-x1)/(x0-x2) + fld qword[ebx+Point.CoordX] + add ebx,sizeof.Point + fcom qword[ebx+Point.CoordX] + fstsw ax + sahf + jne @f + fcomp qword[ebx+sizeof.Point+Point.CoordX] + fstsw ax + sahf + jne .no_sel ;if( (x0==x1) && (x0!=x2) ) + jmp .sel ;if( x0==x1==x2 ) + @@: + fld st0 + fsub qword[ebx+Point.CoordX] + fxch st1 + fsub qword[ebx+sizeof.Point+Point.CoordX] + fdivp + + ;calc (y0-y1)/(y0-y2) + fld qword[ebx-sizeof.Point+Point.CoordY] + fcom qword[ebx+Point.CoordY] + fstsw ax + sahf + jne @f + fcomp qword[ebx+sizeof.Point+Point.CoordY] + fstsw ax + ffree st0 ;free (x0-x1)/(x0-x2) + fincstp + sahf + jne .no_sel ;if( (y0==y1) && (y0!=y2) ) + jmp .sel ;if( y0==y1==y2 ) + @@: + fld st0 + fsub qword[ebx+Point.CoordY] + fxch st1 + fsub qword[ebx+sizeof.Point+Point.CoordY] + fdivp + + fsubp + fabs + fcomp qword[opt_koef] ;if( abs((x0-x1)/(x0-x2)-(y0-y1)/(y0-y2)) > 0.02) + fstsw ax + sahf + jae .no_sel + .sel: + bts dword[ebx+Point.Prop],PROP_BIT_SELECT + .no_sel: + loop .cycle0 + .no_point: + ret +endp + ;input: ; pPoi - гЄ § вҐ«м ­  ¤ ­­лҐ в®зЄЁ align 4 @@ -1565,9 +1632,7 @@ proc mouse_left_d uses eax ebx cmp [eax+Figure.OType],'Fig' je @f cmp [eax+Figure.OType],'Obj' - je .end0 - jmp .end_f - .end0: + jne .end_f mov eax,ObjData @@: call buf_get_mouse_coord @@ -1588,9 +1653,7 @@ proc mouse_left_u uses eax ebx ecx cmp [eax+Figure.OType],'Fig' je @f cmp [eax+Figure.OType],'Obj' - je .end0 - jmp .end_f - .end0: + jne .end_f mov eax,ObjData @@: mov ecx,eax diff --git a/programs/other/cnc_editor/doc/but_17.png b/programs/other/cnc_editor/doc/but_17.png new file mode 100644 index 0000000000000000000000000000000000000000..2e69780d3544524992f2a908e067f7f8f7bfe2d2 GIT binary patch literal 268 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61SBU+%rFB|Ea{HEjtmSN`?>!lvI6;>1s;*b z3=Di*K$vl(S(Oe@P_o1|q9iy!t)x7$D3zfgF*C13FE6!3!9>qM&(QM9wM{8NMV+25 zjv*HQ$veE25*k+UXIZkj=tj>MzQT8jA-v0-Kc8fZfa==qLtHS3j3^ HP6 -

CNC_editor версия 24.09.18

+

CNC_editor версия 23.05.19

Оглавление

    @@ -89,6 +89,7 @@ ol, ul, dl{

    , перемещение выделенных точек вверх или вниз в пределах выбранной траэктории

    выравнивание выделенных точек по левому, правому, верхнему и нижнему краю

    +

    выделение точек фигуры для оптимизации. Выделяются точки которые расположены на относительно прямых линиях, но при этом сами несут избыточную информацию. Такие точки можно удалять без особой потери качества фигуры.

    копирование координат выделенных точек в буфера обмена

    вставка точек из буфера обмена. Формат текста для вставки в буфере обмена: 'X_ Y_\n...\0'.

    удаление выделенных точек

    diff --git a/programs/other/cnc_editor/kolibri.NC b/programs/other/cnc_editor/kolibri.NC index 0404a40ab2..8f1822ad3b 100644 --- a/programs/other/cnc_editor/kolibri.NC +++ b/programs/other/cnc_editor/kolibri.NC @@ -4,19 +4,11 @@ G0 M3 X0 Y0 Z5 G0 X40.28 Y38.95 Z5 G1 F100 Z0 X40.28 Y38.95 -X39.46 Y38.44 -X37.03 Y36.89 X35.56 Y35.99 -X34.9 Y35.63 -X34.41 Y35.35 -X33.74 Y34.97 -X32.97 Y34.52 X32.69 Y34.35 X32.38 Y34.35 -X32.1 Y34.43 X31.82 Y34.51 X31.18 Y34.6 -X30.54 Y34.7 X30.03 Y34.78 X29.52 Y34.85 X29.1 Y34.88 @@ -25,60 +17,39 @@ X28.6 Y34.96 X28.37 Y34.96 X28.22 Y34.9 X28.27 Y34.81 -X28.62 Y34.65 X28.96 Y34.49 X29.16 Y34.42 -X29.72 Y34.17 X30.08 Y34.01 -X30.7 Y33.81 X31.32 Y33.61 X30.98 Y33.43 X30.34 Y33.21 X30 Y33.08 X29.78 Y33.04 -X29.77 Y32.87 X29.76 Y32.7 -X29.89 Y32.58 X30.02 Y32.46 X30.12 Y32.46 X30.67 Y32.3 X30.03 Y31.51 -X29.8 Y31.16 X29.41 Y30.53 X29.19 Y30.13 X29.19 Y30.08 X29.22 Y30.06 X29.24 Y30.06 X29.69 Y30.24 -X29.36 Y29.88 -X29.03 Y29.52 -X28.49 Y28.91 -X27.95 Y28.29 -X27.54 Y27.8 X27.46 Y27.71 -X27.08 Y27.34 X26.7 Y26.96 -X26.61 Y26.89 X26.04 Y26.5 -X25.56 Y26.31 X25.07 Y26.13 X24.8 Y26.06 X24.54 Y25.76 -X24.43 Y25.76 X24.32 Y25.76 -X24.06 Y25.63 X23.8 Y25.5 -X23.69 Y25.42 X23.59 Y25.33 -X23.43 Y25.1 X23.27 Y24.87 -X23.08 Y24.69 X22.89 Y24.51 -X22.74 Y24.21 X22.58 Y23.9 X22.51 Y23.7 X22.43 Y23.49 -X22.37 Y23.23 X22.31 Y22.98 X22.22 Y22.96 X22.13 Y23.01 @@ -91,14 +62,10 @@ X20.13 Y24.78 X19.81 Y24.93 X19.65 Y24.97 X19.49 Y25 -X19.36 Y24.95 X19.24 Y24.9 X19.15 Y24.82 X19.07 Y24.73 -X19.07 Y24.55 X19.07 Y24.36 -X19.32 Y23.59 -X19.43 Y23.26 X19.53 Y22.93 X19.59 Y22.64 X19.83 Y22.38 @@ -115,136 +82,84 @@ X21.8 Y18.84 X21.89 Y18.74 X21.98 Y18.56 X22.3 Y18.17 -X22.34 Y18.07 X22.38 Y17.97 X22.28 Y17.79 X22.05 Y17.71 X21.85 Y17.73 -X21.26 Y18.02 X20.68 Y18.31 X20.45 Y18.4 -X20.22 Y18.5 X19.4 Y18.9 -X18.91 Y19.07 X18.43 Y19.24 -X18.29 Y19.33 X18.16 Y19.42 X18.13 Y19.42 -X18.1 Y19.42 X17.85 Y19.57 X17.61 Y19.72 -X16.99 Y19.92 X16.38 Y20.13 -X16 Y20.19 X15.62 Y20.25 -X15.26 Y20.33 X14.9 Y20.41 X14.57 Y20.45 X14.24 Y20.48 -X13.83 Y20.6 -X13.42 Y20.71 -X12.65 Y20.91 X11.88 Y21.12 -X11.63 Y21.16 -X11.37 Y21.21 -X11.04 Y21.28 -X10.71 Y21.36 -X10.3 Y21.44 X9.89 Y21.52 X9.1 Y21.65 X8.3 Y21.77 X7.79 Y21.83 X7.28 Y21.88 -X6.43 Y21.88 X5.57 Y21.88 X4.68 Y21.77 X3.86 Y21.58 X2.94 Y21.25 -X2.71 Y21.1 X2.48 Y20.94 -X2.41 Y20.87 X2.34 Y20.8 -X2.36 Y20.69 X2.38 Y20.58 -X2.58 Y20.44 X2.79 Y20.3 -X3.09 Y20.22 X3.4 Y20.14 -X3.68 Y20.14 X3.96 Y20.14 -X4.2 Y19.89 X4.44 Y19.65 -X4.77 Y19.44 X5.11 Y19.23 X5.12 Y19.29 X5.14 Y19.34 -X5.36 Y19.05 X5.57 Y18.77 X5.76 Y18.62 X5.96 Y18.48 X5.98 Y18.45 -X6.01 Y18.43 X6.11 Y18.36 X6.21 Y18.3 -X6.39 Y18.22 X6.57 Y18.14 -X6.64 Y18.08 X6.71 Y18.02 -X6.84 Y18.01 X6.98 Y18 X7.07 Y18 X7.16 Y17.99 -X7.35 Y17.79 X7.54 Y17.58 -X7.6 Y17.58 X7.66 Y17.58 -X7.68 Y17.51 X7.71 Y17.44 -X7.86 Y17.36 -X8 Y17.29 -X8.25 Y17.15 X8.51 Y17.02 -X8.57 Y17.04 X8.63 Y17.07 X8.66 Y16.99 X8.69 Y16.92 X8.8 Y16.93 X8.92 Y16.95 -X8.92 Y16.82 X8.92 Y16.7 -X9.15 Y16.53 X9.38 Y16.36 -X9.58 Y16.25 X9.79 Y16.14 -X9.89 Y16.05 X9.99 Y15.96 X10.24 Y15.9 X10.49 Y15.83 X10.64 Y15.84 X10.79 Y15.84 -X10.84 Y15.74 X10.89 Y15.64 -X10.95 Y15.64 X11.02 Y15.64 -X11.4 Y15.39 X11.77 Y15.13 -X12.04 Y15.05 X12.31 Y14.97 -X12.5 Y15.01 X12.68 Y15.04 X12.67 Y15 -X12.67 Y14.95 X12.67 Y14.9 X12.68 Y14.84 -X13.21 Y14.57 X13.74 Y14.3 -X14.02 Y14.29 X14.3 Y14.28 X14.37 Y14.23 X14.44 Y14.17 -X14.59 Y14.1 X14.75 Y14.02 -X15.07 Y13.91 X15.4 Y13.79 X15.68 Y13.79 X15.95 Y13.8 @@ -252,37 +167,23 @@ X15.98 Y13.73 X16.01 Y13.65 X16.29 Y13.55 X16.57 Y13.44 -X16.66 Y13.44 X16.74 Y13.44 -X16.8 Y13.29 X16.86 Y13.14 X17.02 Y13.1 X17.18 Y13.07 -X17.18 Y13.03 X17.18 Y12.99 -X17.4 Y12.93 X17.63 Y12.87 -X17.72 Y12.77 X17.8 Y12.68 -X17.86 Y12.68 X17.92 Y12.68 -X18.07 Y12.52 X18.22 Y12.37 -X18.43 Y12.27 X18.64 Y12.17 X18.97 Y12.17 X19.25 Y12.36 -X19.32 Y12.46 -X19.43 Y12.55 X19.54 Y12.65 -X19.62 Y12.8 X19.7 Y12.96 X19.7 Y12.86 -X19.54 Y12.36 X19.37 Y11.86 -X19.3 Y11.44 X19.23 Y11.02 -X19.25 Y9.53 X19.27 Y8.05 X19.33 Y7.69 X19.38 Y7.34 @@ -290,42 +191,30 @@ X19.48 Y6.93 X19.57 Y6.52 X19.63 Y6.21 X19.68 Y5.9 -X19.74 Y5.7 X19.79 Y5.5 -X19.84 Y5.11 X19.89 Y4.73 -X19.97 Y4.5 X20.04 Y4.27 X20.09 Y2.58 X20.13 Y0.88 X20.21 Y0.74 X20.28 Y0.59 -X20.39 Y0.49 X20.5 Y0.39 -X20.5 Y0.5 X20.5 Y0.6 X20.69 Y0.64 X20.88 Y0.67 X20.97 Y0.76 X21.07 Y0.84 -X21.27 Y0.83 X21.47 Y0.82 -X21.8 Y0.94 X22.12 Y1.06 -X22.31 Y1.21 X22.49 Y1.35 -X22.49 Y1.4 X22.49 Y1.44 -X22.59 Y1.58 X22.69 Y1.71 -X22.75 Y1.94 X22.81 Y2.17 X22.81 Y2.29 X22.8 Y2.41 X22.78 Y2.54 X23.56 Y3.07 X23.67 Y3.27 -X23.77 Y3.82 X23.87 Y4.37 X23.91 Y5.38 X23.94 Y6.39 @@ -335,28 +224,20 @@ X24.4 Y6.85 X24.47 Y6.85 X24.75 Y6.98 X25.02 Y7.03 -X25.04 Y7.05 -X25.26 Y7.35 -X25.71 Y8 X26.06 Y8.49 X26.04 Y8.87 X25.87 Y9.12 X25.87 Y9.28 -X26.14 Y9.69 -X26.41 Y10.1 X26.81 Y10.71 X27.1 Y11.22 X27.75 Y12.55 X28.17 Y13.72 -X28.21 Y14.08 X28.33 Y15.16 X28.3 Y16 X28.25 Y16.92 X28.16 Y17.66 -X28 Y18.5 X27.85 Y19.35 X27.99 Y20.78 -X27.98 Y21.52 X27.97 Y22.26 X27.86 Y23.13 X27.76 Y24 @@ -364,32 +245,20 @@ X27.71 Y24.61 X27.63 Y25.73 X27.62 Y26.44 X27.91 Y27.07 -X28.33 Y27.68 -X29.15 Y28.78 X29.44 Y29.15 -X30.03 Y29.78 -X30.59 Y30.35 X31.15 Y30.92 X31.27 Y30.83 X31.84 Y30.76 -X32.21 Y31.09 -X32.58 Y31.41 -X32.7 Y31.51 X32.81 Y31.59 X32.89 Y31.41 X32.9 Y30.9 X32.9 Y30.39 -X32.95 Y29.52 X33 Y28.65 -X33.04 Y28.59 X33.08 Y28.52 -X33.15 Y28.6 X33.23 Y28.67 -X33.23 Y28.88 X33.23 Y29.09 X33.3 Y29.46 X33.38 Y29.83 -X33.43 Y30.26 X33.48 Y30.69 X33.48 Y30.83 X33.66 Y30.73 @@ -397,16 +266,12 @@ X34.1 Y30.65 X34.53 Y30.58 X34.86 Y30.52 X35.19 Y30.47 -X35.76 Y30.41 X36.32 Y30.35 X36.36 Y30.31 X36.4 Y30.28 -X36.05 Y29.96 X35.71 Y29.64 X35.48 Y29.55 -X35.37 Y29.31 X35.26 Y29.07 -X35.4 Y28.95 X35.53 Y28.83 X35.67 Y28.82 X35.81 Y28.82 @@ -414,19 +279,13 @@ X36 Y28.84 X35.93 Y28.62 X35.64 Y28.19 X35.41 Y27.68 -X35.19 Y27.09 X34.98 Y26.5 -X34.94 Y26.42 X34.9 Y26.33 X35.04 Y26.35 X35.18 Y26.36 X35.23 Y26.45 X35.28 Y26.53 -X35.59 Y26.74 X35.91 Y26.96 -X36.63 Y27.59 -X36.85 Y27.8 -X37.07 Y28.02 X37.21 Y28.17 X37.26 Y27.99 X37.47 Y27.58 @@ -434,33 +293,21 @@ X37.75 Y27.42 X37.88 Y27.42 X38.01 Y27.43 X38.13 Y27.5 -X38.24 Y27.85 -X38.35 Y28.19 X38.53 Y28.6 X38.6 Y28.89 X39.1 Y27.86 -X38.99 Y27.65 -X38.87 Y27.44 -X38.53 Y26.79 -X38.19 Y26.15 -X37.65 Y25.05 -X37.11 Y23.95 X36.84 Y23.41 X35.69 Y22.3 X34.97 Y21.83 -X34.75 Y21.62 X34.53 Y21.42 X34.45 Y21.31 X34.45 Y21.21 X34.52 Y21.18 X34.59 Y21.16 -X34.81 Y21.29 X35.04 Y21.42 -X35.12 Y21.42 X35.19 Y21.42 X35.26 Y21.37 X35.33 Y21.33 -X35.15 Y21.07 X34.97 Y20.81 X34.85 Y20.56 X34.68 Y20.27 @@ -469,67 +316,44 @@ X34.45 Y19.95 X34.45 Y19.86 X34.51 Y19.78 X34.56 Y19.78 -X34.7 Y19.87 X34.84 Y19.96 -X35.19 Y20.26 -X35.54 Y20.57 -X36.26 Y21.22 X36.66 Y21.54 X36.7 Y21.51 -X36.7 Y21.2 X36.7 Y20.89 X36.83 Y20.78 X36.96 Y20.66 -X36.87 Y20.5 X36.78 Y20.34 X36.92 Y20.25 X37.05 Y20.3 X37.09 Y20.11 X37.14 Y19.77 -X37.27 Y19.67 X37.41 Y19.57 -X37.51 Y19.62 X37.61 Y19.67 X37.78 Y20.37 X37.92 Y20.79 X38.11 Y21.01 X38.14 Y21.01 -X38.18 Y20.91 -X38.36 Y20.54 -X38.64 Y19.9 -X38.76 Y19.63 -X38.95 Y19.19 -X39.06 Y18.92 X39.18 Y18.66 X39.26 Y18.67 X39.33 Y18.69 X39.31 Y18.94 X39.3 Y19.12 -X39.3 Y19.3 X39.3 Y19.63 X39.31 Y19.96 -X39.26 Y20.32 X39.2 Y20.73 -X39.51 Y20.38 X39.83 Y20.04 -X39.95 Y20.04 X40.08 Y20.04 -X40.08 Y20.09 X40.08 Y20.14 X39.97 Y20.32 X39.87 Y20.5 X39.87 Y20.64 -X39.64 Y20.98 X39.4 Y21.32 X39.3 Y21.66 X39.15 Y22.06 X39.05 Y22.56 X39 Y23.02 X39.16 Y24.05 -X39.47 Y25.64 -X39.63 Y26.5 X39.67 Y26.73 -X39.72 Y26.76 X39.77 Y26.79 X39.8 Y26.66 X39.92 Y26.53 @@ -537,28 +361,15 @@ X40.01 Y26.53 X40.01 Y26.71 X39.97 Y26.89 X39.94 Y26.96 -X39.88 Y27.11 X39.84 Y27.25 -X40.02 Y27.62 -X40.18 Y28.02 -X40.47 Y28.69 X40.76 Y29.37 -X40.91 Y29.67 -X41.27 Y30.39 -X41.57 Y30.97 X41.86 Y31.55 -X41.89 Y31.43 -X41.91 Y31.31 -X41.96 Y30.97 X42.02 Y30.64 X42.27 Y30.13 -X42.4 Y29.98 X42.52 Y29.83 X42.62 Y29.88 X42.71 Y29.94 -X42.81 Y30.14 X42.91 Y30.34 -X42.92 Y28.45 X42.93 Y26.56 X42.81 Y25.1 X42.68 Y23.65 @@ -568,13 +379,11 @@ X42.74 Y21.92 X42.98 Y21.09 X43.2 Y20.63 X43.42 Y20.26 -X43.67 Y19.95 X43.92 Y19.64 X44.03 Y19.61 X44.13 Y19.58 X44.17 Y19.6 X44.2 Y19.63 -X44.29 Y19.92 X44.38 Y20.22 X44.57 Y20.68 X44.67 Y21.14 @@ -585,11 +394,7 @@ X44.86 Y22.91 X44.81 Y23.44 X44.7 Y23.9 X44.67 Y24.15 -X44.63 Y24.26 X44.58 Y24.36 -X44.53 Y24.61 -X44.42 Y25.12 -X44.29 Y25.71 X44.17 Y26.3 X44.07 Y26.86 X43.99 Y27.45 @@ -597,10 +402,8 @@ X43.92 Y28.04 X43.88 Y28.68 X43.85 Y29.32 X44.09 Y29 -X44.17 Y28.93 X44.37 Y28.76 X44.49 Y28.68 -X44.61 Y28.68 X44.72 Y28.68 X44.75 Y28.72 X44.77 Y28.75 @@ -611,7 +414,6 @@ X44.88 Y30.01 X44.89 Y30.59 X44.85 Y30.95 X44.78 Y31.31 -X44.59 Y31.68 X44.4 Y32.06 X44.05 Y32.89 X43.95 Y33.56 @@ -620,31 +422,22 @@ X43.84 Y35.19 X43.98 Y35.81 X44.23 Y36 X44.43 Y36.22 -X44.61 Y36.57 X44.78 Y36.92 X44.78 Y37.24 X44.96 Y37.43 X45.16 Y37.62 -X45.63 Y37.98 X46.08 Y38.34 X46.88 Y38.7 -X47.3 Y38.7 X47.72 Y38.7 -X47.89 Y38.65 X48.06 Y38.6 -X48.2 Y38.45 X48.35 Y38.3 -X48.32 Y38.17 X48.29 Y38.03 -X48.42 Y38.03 X48.54 Y38.03 X48.73 Y38.09 X48.92 Y38.14 -X48.92 Y38.22 X48.92 Y38.3 X49.18 Y38.26 X49.43 Y38.23 -X49.7 Y38.16 X49.96 Y38.09 X50.04 Y38 X50.12 Y37.92 @@ -663,11 +456,9 @@ X50.37 Y37.73 X50.38 Y37.79 X50.53 Y37.84 X50.68 Y37.88 -X50.91 Y37.85 X51.14 Y37.82 X51.7 Y37.7 X52.26 Y37.57 -X52.3 Y37.57 X52.34 Y37.57 X52.34 Y38.33 X51.96 Y38.4 @@ -677,20 +468,15 @@ X50.57 Y38.84 X49.91 Y38.88 X49.35 Y39.26 X45.25 Y39.26 -X44.85 Y39.18 X44.45 Y39.1 -X44.24 Y39.1 X44.03 Y39.1 X43.91 Y39.02 X43.76 Y38.9 -X43.48 Y38.76 X43.23 Y38.64 X43.08 Y38.53 X42.94 Y38.41 -X42.67 Y38.15 X42.41 Y37.88 X42.3 Y37.88 -X42.3 Y37.88 X42.02 Y37.72 X41.74 Y37.59 X41.64 Y37.59 @@ -710,42 +496,21 @@ X41.2 Y36 X41.03 Y35.19 X40.85 Y34.48 X40.69 Y34.12 -X40.19 Y33.63 X39.69 Y33.14 -X38.77 Y32.38 -X38.71 Y32.33 -X38.64 Y32.28 X38.47 Y32.13 X38.17 Y31.92 -X38.03 Y31.81 -X37.82 Y31.64 X37.61 Y31.48 X37.07 Y31.43 X36.52 Y31.39 X35.63 Y31.31 -X34.73 Y31.2 -X34.5 Y31.17 X33.9 Y31.1 X33.52 Y31.06 X33.55 Y31.44 X33.64 Y32.01 X33.7 Y32.51 X33.71 Y32.82 -X34.08 Y33.19 X34.44 Y33.56 -X34.94 Y34.01 -X35.42 Y34.45 -X35.9 Y34.89 -X36.23 Y35.19 X36.83 Y35.72 -X37.34 Y36.08 -X37.85 Y36.45 -X38.34 Y36.78 -X38.83 Y37.11 -X39.61 Y37.62 -X40.12 Y37.93 -X41.02 Y38.47 -X41.38 Y38.66 X42.4 Y39.26 X40.76 Y39.26 X40.28 Y38.95 @@ -773,8 +538,6 @@ X40.54 Y32.12 X40.7 Y31.9 X40.93 Y31.9 X41.22 Y32.12 -X41.19 Y32.07 -X41.17 Y32.03 X39.57 Y28.78 X39.52 Y28.78 X39.41 Y29.21 diff --git a/programs/other/cnc_editor/toolbar.png b/programs/other/cnc_editor/toolbar.png index 66ac3bc55787516ed2d49e2d591f8be150308fe3..6cd5b1cd4949cdb73f1a3006a135442a0af22ed7 100644 GIT binary patch delta 3469 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 delta 3304 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 mxilnNl9@Cl*tB`o)cg-?RmRPgX(}ZE0000