diff --git a/programs/other/cnc_editor/cnc_editor.asm b/programs/other/cnc_editor/cnc_editor.asm
index d737e17a4..a1c9183ee 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 36bf67b23..a3d790857 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 000000000..2e69780d3
Binary files /dev/null and b/programs/other/cnc_editor/doc/but_17.png differ
diff --git a/programs/other/cnc_editor/doc/readme_ru.htm b/programs/other/cnc_editor/doc/readme_ru.htm
index ecdee9546..b0a4cfa44 100644
--- a/programs/other/cnc_editor/doc/readme_ru.htm
+++ b/programs/other/cnc_editor/doc/readme_ru.htm
@@ -36,7 +36,7 @@ ol, ul, dl{
-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 0404a40ab..8f1822ad3 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 66ac3bc55..6cd5b1cd4 100644
Binary files a/programs/other/cnc_editor/toolbar.png and b/programs/other/cnc_editor/toolbar.png differ
diff --git a/programs/other/cnc_editor/wnd_new_file.inc b/programs/other/cnc_editor/wnd_new_file.inc
index 7d04ad253..4f853c7a3 100644
--- a/programs/other/cnc_editor/wnd_new_file.inc
+++ b/programs/other/cnc_editor/wnd_new_file.inc
@@ -301,9 +301,11 @@ button_n_file:
stdcall clear_object_in_list, eax
@@:
stdcall [tl_info_clear], tree1 ;®зЁбвЄ бЇЁбЄ ®ЎкҐЄв®ў
+ and dword[tree1.style],not tl_cursor_pos_limited
mov dword[offs_last_timer],0
stdcall ObjectCreate,ObjData
+ or dword[tree1.style], tl_cursor_pos_limited
stdcall [tl_cur_beg], tree1
mov dword[offs_last_timer],0 ;¤«п ®Ў®ў«ҐЁп Ў«®Є ў в ©¬ҐаҐ