Перейти к публикации

Solidcam Posts


vishnu74

Рекомендованные сообщения

Gospoda! Nachal rabotat v Solidcam i obnarugil takuyu nepriyatnuyu vesh: v spiske postov net Haas 4x. Chto bi eto znachilo? No est Fanuc 4x. Poproboval ego, no on ne generiruet "A" (povorot). Krome togo, kompensaciya na diameter/radius "D" idet kak D31 dlya T1, D32 dlya T2... A tak, vse ostalnoe vrode toge samoe. Kto chto dumaet po etomu povodu?

A moget u kogo-to est post for Haas 4x, pod Solidcam? Gospoda, budu ochen priznatelen, skinte na milo!

A kstati stanki u menya Haas VF-2, VF-4, EC-1600, EC-500.

Ссылка на сообщение
Поделиться на других сайтах


Прежде всего надо проверить что плаг открыт на 4_ю ось. Если конечно он есть. :rolleyes:

Далее просмотреть процедуру поста @fourth_axis. Там все просто и понятно.

Потом смотри .MAC файле поста в разделах

;Machine initialize

mac_axis = XYZA

num_axis = 4

_4th_axes_around = X

;Fourth axis

indexial_4th_axis = Y

Если плаг закрыт на 4ю ось то тогда потребуется творческий подход.

Открыть трасировку поста - trace "all":5 сгенерировать Gкод и в

процедуре @tmatrix просмотри на параметры

группа rotate_angle_x все ноль

angle_4x_around_x имеет угол поворота.

Ссылка на сообщение
Поделиться на других сайтах

во многих ситуациях помогает такая метода:

создаем обработку для самого крутого построцессора (который нам не совсем подходит), все прогоняем, отлаживаем. потом в свойствах проекта меням построцесор и пересчитываем...

таким образом для многих примитивных постпроцесоров можно получать недокументированные обработки!!! :surrender:

Ссылка на сообщение
Поделиться на других сайтах

Plag bil otkrit na 4 axis.

Vot MAC file "Fanuc 4ax" iz papki Gpptool:

@pre_processor

;Internal parms

machine_type = MILLING

post_processor = fanuc

;Machine Initialize

machine_plane = XY

z_with_xy = Y

mac_axes = XYZ

num_axes = 4

_4th_axes_around = X

num_simult_axes = 4

abs_coord = N

rotate = Y

mirror = Y

variables = Y

loops = Y

;Program numbers

prog_num_min = 1

prog_num_max = 8999

prog_num_dflt = 1000

get_prog_num = Y

proc_num_min = 1

proc_num_max = 8999

proc_num_dflt = 1000

get_proc_num = Y

;Procedures control

full_gcode = N

gen_procs = N

drill_proc = N

turn_proc = Y

thread_proc = Y

gen_internal_proc = N

turn_common_proc = Y

gen_1_line_proc = Y

optimize_jobs_loop = Y

G_in_2_cols = Y

;Home

num_homes = 6

dflt_home = 1

get_job_home = N

abs_zero_chng = Y

;Positioning

dflt_start = 0.0000 200.0000 100.0000, 0.0000 7.8740 3.9370

dflt_end = 0.0000 200.0000 0.0000, 0.0000 7.8740 0.0000

set_z_chng = Y

dflt_tool_chng = 0.0000 0.0000 0.0000, 0.0000 0.0000 0.0000

;Compensation

comp_exist = Y N

comp_arc_arc = Y

comp_arc_line = Y

comp_line_line = Y

next_angle = N

comp_x_start = N

comp_by_arcs = N

chng_tool_table = N

look_forward = 2

;Arc definitions

arc_exist = Y

arc_3d = Y

arc_quadrants = N

arc_gt_180 = Y

arc_max_chord = 30.0000, 1.1811

arc_max_angle = 10.0000

arc_max_radius = 2000.0000, 78.7402

;Epsilon values

eps_angle = 0.0020, 0.0001

eps_line = 0.0010, 0.0000

zero_value = 0.0010, 0.0000

min_delt_arc_rad = 0.0100, 0.0004

safety_dist = 2.0000, 0.0787

;Feed-Spin

rapid_feed = 5000.0000, 196.8503

max_spin = 20000.0000

max_feed = 6000.0000, 236.2205

spin_direction = CW

;Timing

time_factor = 1.0000

block_time = 0.2000

change_tool_time = 15.0000

;Part options

options = COLENT INTEGER

;Job options

job_opt_type = OPT1 Y DELY FEAD

;Drill cycles

drill_type = Drilling Drilling Y

drill_type = F_Drill F_Drill Y Delay

drill_type = Peck Peck Y Delay

drill_type = Tapping Tapping Y

drill_type = Boring Boring Y Delay

drill_type = R_Boring R_Boring Y Delay

drill_type = F_Boring F_Boring Y Delay

;Turning cycles

;Threading cycles

;Grooving cycles

;Wire Cut cycles

;Turning definitions

turning_cycle = Y N

groove_cycle = Y N

combined_cycles = N

optimize_cycle = N

finish_retreat = N

semi_finish_retreat = N

fanuc_cycle = Y

;Fourth axis

indexial_4th_axis = y

indexial_increment = 0.0000, 0.0000

init_cpos = Y

polar_4x = y

cartez_4x = y

set_dir = N

;Wire Cut parameters

lower_guide_level = 0.0000, 0.0000

group_def = N

offset_group_name =

wc_pos_proc = Y

u_max = 100.0000, 3.9370

v_max = 100.0000, 3.9370

xy_abs = Y

uv_abs = N

;GCTOOL

int_is_illegal = N

devision_factor = 1000.0000

gc_procs_file_name = NO_FILE

change_tool_at_ref = Y

endp

Generiruyu G-codes, a povorota net. Pitalsa stavit "A" (povorot) v stroku "mac_axes = XYZ", tot zhe rezultat... Chto skazhete?

Ссылка на сообщение
Поделиться на других сайтах

После изменения MAC file программу необходимо перегрузить. Иначе изменения не будут иметь силу.

И хорошо бы посмотреть процедуру @fourth_axis из поста (Fanuc 4ax.gpp)

В любом случае открыть trace "all":5 в посте и сгенерить программу. Gcode будет содержать

имена процедур, переменные и их значения. Тогда все проблемы сразу видны.

Ссылка на сообщение
Поделиться на других сайтах

Vot GPP file, kotorii priceplen k MAC failu Fanuc 4x:

; ; FANUC

; -----

;

@init_post

global string tool_diameter_f

global numeric flag1 flag2 m_feed_flag

; Non GPPL variables

num_user_procs = 1

line_labels = FALSE ; Jump to N...

; GPPL variables

pre_processor = 'FANUC'

numeric_def_f = '5.3'

integer_def_f = '5.0(p)'

gcode_f = '2.0(p)'

mcode_f = '2.0(p)'

xpos_f = '5.3'

ypos_f = '5.3'

zpos_f = '5.3'

feed_f = '4.3(p)'

tool_diameter_f = '5.3/1'

blknum_f = '5.0(p)'

blknum_gen = false

blknum_exist = true

blknum = 1

blknum_delta = 1

blknum_max = 32000

; trace 'all':5

endp

;-------------------

@start_of_file

; before tools definition

{'%'}

{nl, 'O'program_number, ' (', g_file_name, ')'}

{nl, '( MCV-OP )', ' (',DATE ')'}

if rotate_used then

gcode = 69

{nb, 'G'gcode}

endif

if mirror_used then

{nb, 'G50.1 X0 Y0'}

endif

{nb, '(SUBROUTINES: O'first_proc_number, ' .. O'last_proc_number, ')'}

flag2 = 0

endp

;-------------------

@start_program

; after tools definition

{nb, 'G80 G49 G40'}

; call @home_number

endp

;-------------------

@end_program

; {nb, 'M98 P9010'}

{nb, 'M30'}

endp

;-------------------

@end_of_file

{nl, '%'}

endp

;-------------------

@relative_mode

gcode = 91

{nb, 'G'gcode, ' '}

skipline = FALSE

endp

;-------------------

@absolute_mode

gcode = 90

{nb, 'G'gcode, ' '}

skipline = FALSE

endp

;-------------------

@machine_plane

if machine_plane eq XY

gcode = 17

endif

if machine_plane eq YZ

gcode = 18

endif

if machine_plane eq ZX

gcode = 19

endif

{nb, 'G'gcode}

endp

;-------------------

@call_proc

if active(parm1) then

gcode = 65

{nb, 'G'gcode, ' P'label}

{' A'parm1, [' B'parm2], [' C'parm3]}

else

{nb, 'M98 P'label}

endif

if proc_count gt 1 then

{' L'proc_count}

endif

{[' ('message, ')']}

endp

;-------------------

@proc

{nl, 'O'label}

endp

;-------------------

@end_proc

if dely eq 1

{' G64 '}

endif

{nb, 'M99'}

endp

;----------------

@loop

local integer var_num

var_num = loop_level + 20

{nb, '#', var_num, ' = 0'}

{nb, 'WHILE [#', var_num, ' LT ', loop_count, '] DO ', loop_level}

endp

;----------------

@end_loop

local integer var_num

var_num = loop_level + 20

{nb '#', var_num, ' = #', var_num, ' + 1'}

{nb 'G'home_number}

{nb 'END ', loop_level}

endp

;----------------

@def_tool

;;; {nb, '(G10 L12 P', (tool_number+50), ' R'tool_offset, ')'}

endp

;-------------------

@rapid_move

{nb}

gcode = 0

if change(gcode) then

{'G'gcode}

else

{' '}

endif

{[' X'xpos], [' Y'ypos], [' Z'zpos]}

; if flag1 eq 1

; {' S'spin:'5.0(p)',' M03'}

; {nb, 'M08'}

; endif

; flag1 = 0

endp

;-------------------

@line

{nb}

gcode = 1

if change(gcode) then

{'G'gcode}

else

{' '}

endif

{[' X'xpos], [' Y'ypos], [' Z'zpos]}

if m_feed_flag eq 1

m_feed_flag = 0

{ ' F'feed}

else

{ [' F'feed]}

endif

endp

;-------------------

@arc

{nb}

if arc_direction eq CCW then

gcode = 3

else ; CW

gcode = 2

endif

if change(gcode) then

{'G'gcode}

else

{' '}

endif

{[' X'xpos] [' Y'ypos] [' Z'zpos]}

if arc_size eq 360 then

if arc_plane eq XY then

{' I'xcenter_rel, ' J'ycenter_rel}

endif

if arc_plane eq YZ then

{' J'xcenter_rel, ' K'ycenter_rel}

endif

if arc_plane eq ZX then

{' K'xcenter_rel, ' I'ycenter_rel}

endif

else

if arc_size >= 180 then

radius = -radius

endif

{' R'radius}

endif

if m_feed_flag eq 1

m_feed_flag = 0

{ ' F'feed}

else

{ [' F'feed]}

endif

endp

;-------------------

@compensation

if side eq COMP_LEFT then

gcode = 41

endif

if side eq COMP_RIGHT then

gcode = 42

endif

if side eq COMP_OFF then

gcode = 40

endif

{nb, 'G'gcode, ' '}

skipline = FALSE

endp

;-------------------

@delay

gcode = 4

{nb 'G'gcode, ' P'delay_period:integer_def_f}

endp

;-------------------

@change_ref_point

; Given in absolute mode

gcode = 10

{nb, 'G'gcode, 'G91 L2 P'home_number ' X'xhome, ' Y'yhome, ' Z'zhome}

{nb,'G90'}

endp

;-------------------

@home_number

gcode = 53 + home_number

{nb, 'G'gcode}

flag2 = 1

endp

;-------------------

@rotate

; Not exist in FANUC 6M

if rotate_cancel then

gcode = 69

{nb, 'G'gcode}

else

gcode = 68

{nb, 'G'gcode, ' X0 Y0 G91 R'angle}

{nb, 'G90'}

endif

endp

;-------------------

@fourth_axis

gcode = 0

{nb, 'G'gcode, ' A'angle}

endp

;-------------------

@change_tool

if flag2 eq 0

call @home_number

endif

flag2 = 1

local logical save_blknum_gen

; {nb, 'M98 P9011'}

{nb, 'G91 G28 Z0'}

{nb, 'G90'}

; if tool_number gt 20 and tool_number lt 40

; tool_number = (tool_number - 20)

; endif

; if tool_number gt 40 and tool_number lt 60

; tool_number = (tool_number - 40)

; endif

; if tool_number gt 60 and tool_number lt 80

; tool_number = (tool_number - 60)

; endif

{nb, 'M01'}

blknum_gen = true

{nb, 'M6 T'tool_number}

blknum_gen = FALSE

if tool_type eq 0 then

{nb, '( TOOL -'tool_number, '- DRILL DIA 'tool_diameter, ' MM )'}

endif

if tool_type eq 1 then

{nb, '( TOOL -'tool_number, '- ROUGH DIA 'tool_diameter, ' MM )'}

endif

if tool_type eq 2 then

{nb, '(TOOL -'tool_number, '- MILL DIA 'tool_diameter, ' R'corner_radius,' MM )'}

endif

{nb, 'G90 G00 G40 G'(53 + home_number)}

label = first_user_proc

save_blknum_gen = blknum_gen

gcode = 43

{nb, 'G'gcode, ' H'tool_number, ' D'(tool_number+30), ' '}

blknum_gen = save_blknum_gen

xpos = xnext

ypos = ynext

zpos = znext

skipline = FALSE

call @rapid_move

tool_direction = CCW

call @start_tool

if colent eq 0

{nb, 'M8'}

endif

if colent eq 17

{nb, 'M17'}

endif

if colent eq 18

{nb, 'M18'}

endif

endp

;-------------------

@message

{nb, '(', message, ')'}

endp

;-------------------

@drill

call @rapid_move

if drill_type eq drilling then

gcode = 81

endif

if drill_type eq f_drill then

gcode = 82

endif

if drill_type eq peck then

gcode = 83

endif

if drill_type eq tapping then

gcode = 84

endif

if drill_type eq boring then

gcode = 85

endif

if drill_type eq r_boring then

gcode = 86

endif

if drill_type eq f_boring then

gcode = 89

endif

if drill_type eq tapping then

{nb,'M29 S'spin:integer_def_f}

endif

{nb,'G98 G'gcode, ' Z'drill_lower_z, ' R'drill_upper_z}

if drill_type eq peck then

{' Q'down_step}

endif

if drill_type eq f_drill or drill_type eq tapping then

{' P'delay:integer_def_f}

endif

{' F'feed}

endp

;-------------------

@drill_point

if not first_drill then

{nb, ' ', [' X'xpos], [' Y'ypos], [' Z'zpos]}

endif

endp

;-------------------

@mirror

if mirror_type eq MIRROR_OFF then

{nb, 'G50.1 X0 Y0'}

else

{nb, 'G51.1 '}

if mirror_type eq MIRROR_X then

{'X1 Y0'}

endif

if mirror_type eq MIRROR_Y then

{'X0 Y1'}

endif

if mirror_type eq MIRROR_XY then

{'X1 Y1'}

endif

endif

endp

;-------------------

@end_drill

gcode = 80

{nb, 'G'gcode}

endp

;-------------------

@halt_program

{' M0'}

endp

;--------------------

@round_comp

; NOP

endp

;--------------------

@start_of_job

if dely eq 1

{nb, 'G61'}

endif

; flag1 = 1

endp

;--------------------

@end_of_job

; NOP

endp

;--------------------

@assign_axis

; TBD

endp

; =======================

; USER DEFINED PROCEDURES

; =======================

@call_simple_proc

active(message) = FALSE

active(parm1) = FALSE

active(parm2) = FALSE

active(parm3) = FALSE

proc_count = 1

call @call_proc

endp

;-------------------

@start_tool

if tool_direction eq CW then

mcode = 4

else ; CCW

mcode = 3

endif

{' S'spin:integer_def_f, ' M'mcode}

endp

;-------------------

@m_feed_spin

; if tool_direction eq CW then

; mcode = 4

; else ; CCW

; mcode = 3

; endif

; if change(spin)

; {nb,'S'spin:integer_def_f, ' M'mcode}

; endif

m_feed_flag = 1

endp

;-------------------

@stop_tool

; {' M5'}

endp

A GPP file ma Fanuc 4x otdelno net... Vse idet so scepkoi "Mac File Fanuc 4x - Gpp file Fanuc".

Proboval k Mac failu ceplyat drugie GPP-nichego ne vihodit.

Tak pochemo net generacii povorota?

Hochu napomnit: Mne nuzhen Postprocessor SolidCam for Haas 4 axis. Gospoda, skinte, u kogo est na:

vishnu74@mail.ru

Inache menya zhdut bolshie nepriyatnosti.

Ссылка на сообщение
Поделиться на других сайтах

Poluchil Haas 4x mac file i Haas 4x Gpp file. Vse pomenyal, spasibo Osiris :) Otkril trace all, sgeneriroval G-codes-povorotov net! Zakrivayu trace, smotru G-codes-povorotov net! Chto takoe? Chto eshe mozhet bit?

Osiris pomogai!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Изменено пользователем vishnu74
Ссылка на сообщение
Поделиться на других сайтах

Otkril trace all, sgeneriroval G-codes-povorotov net! Zakrivayu trace, smotru G-codes-povorotov net!

trace "all":5 не решает проблемы а является средством диагностики. С открытой трасировкой gcode

выдается вместе с процедурами и параметрами. Сделай такой gcode и в месте где должен быть поворот

просмотри все что выдала программа. Обрати внимание на angle.

Фрагмент поста:

;-------------------

@fourth_axis

gcode = 0

{nb, 'G'gcode, ' A'angle}

endp

;-------------------

в полном порядке.

Может что то неправильно делаеш?

Изменено пользователем Osiris
Ссылка на сообщение
Поделиться на других сайтах

Osiris, vot moi Gpp-file:

;

; FANUC0M

; -----

;

@init_post

global string tool_diameter_f spin_f

global numeric use_feed

; Non GPPL variables

num_user_procs = 1

;-------------------------------------------------

global integer save_part_home_number

GLOBAL LOGICAL main

global numeric xold yold zold d_step

;------------------------------------------------------

line_labels = FALSE ; Jump to N...

; GPPL variables

pre_processor = 'HAAS'

numeric_def_f = '5.3'

integer_def_f = '5.0(p)'

gcode_f = '2.0(p)'

mcode_f = '2.0(p)'

xpos_f = '5.3'

ypos_f = '5.3'

zpos_f = '5.3'

feed_f = '4.5'

tool_diameter_f = '5.3/1'

blknum_f = '5.0(p)'

blknum_gen = FALSE

blknum_exist = TRUE

blknum = 5

blknum_delta = 5

blknum_max = 32000

; trace "all":5

main = TRUE

endp

;-------------------

@start_of_file

; before tools definition

{'%'}

{nl, 'O'program_number, ' (', g_file_name, ')'}

if rotate_used then

gcode = 69

{nb, 'G'gcode}

endif

{nb, '(SUBROUTINES: O'first_proc_number, ' .. O'last_proc_number, ')'}

endp

;-------------------

@start_program

; after tools definition

; skipline = false

{nb,'G80 G40 '}

{nb, 'G28 G91 Z0 '}

{nb, 'G90 '}

; call @home_number

skipline = true

endp

;-------------------

@end_program

{nb, 'M9'}

{nb, 'M5'}

{nb, 'G91 G28 Z0'}

{nb, 'G28 Y0'}

{nb, 'G90 X0'}

{nb, 'G90 A0'}

{nb, 'M30'}

main = FALSE

endp

;-------------------

@end_of_file

label = first_user_proc

CALL @home_data1

{nl, '%%'}

endp

;-------------------

@relative_mode

gcode = 91

{nb, 'G'gcode, ' '}

skipline = FALSE

endp

;-------------------

@absolute_mode

gcode = 90

{nb, 'G'gcode, ' '}

skipline = FALSE

endp

;-------------------

@machine_plane

if machine_plane eq XY

gcode = 17

endif

if machine_plane eq YZ

gcode = 18

endif

if machine_plane eq ZX

gcode = 19

endif

{nb, 'G'gcode}

endp

;-------------------

@call_proc

if x_4_home <> 0

if main eq TRUE

if part_home_number ne save_part_home_number

{nb, 'G65P8090 X'shift_x ' Y'shift_y ' Z'shift_z ' B'angle_4x_around_x:xpos_f ' H'tool_number:xpos_f ' A'home_number:xpos_f ' C0 D0 E0 ( C=TIKUN_X D=TIKUN_Y E=TIKUN_Z HOME ' part_home_number ' B = 'angle_4x_around_x ' )' }

save_part_home_number = part_home_number

endif

endif

endif

if active(parm1) then

gcode = 65

{nb, 'G'gcode, ' P'label}

{' A'parm1, [' B'parm2], [' C'parm3]}

else

{nb, 'M98 P'label}

endif

if proc_count gt 1 then

{' L'proc_count}

endif

{[' ('message, ')']}

endp

;-------------------

@proc

; {nl,'%'}

{nl, 'O'label}

endp

;-------------------

@end_proc

{nb, 'M99'}

endp

;----------------

@loop

local integer var_num

var_num = loop_level + 20

{nb, '#', var_num, ' = 0'}

{nb, 'WHILE [#', var_num, ' LT ', loop_count, '] DO ', loop_level}

call @home_number

endp

;----------------

@end_loop

local integer var_num

var_num = loop_level + 20

{nb '#', var_num, ' = #', var_num, ' + 1'}

{nb 'END ', loop_level}

endp

;----------------

@def_tool

{nb, '(G10 L12 P', (tool_number), ' D'(tool_offset*2), ')'}

endp

;-------------------

@rapid_move

{nb}

gcode = 0

if change(gcode) then

{'G'gcode}

else

{' '}

endif

{[' X'xpos], [' Y'ypos], [' Z'zpos]}

endp

;-------------------

@line

{nb}

gcode = 1

if change(gcode) then

{'G'gcode}

else

{' '}

endif

{[' X'xpos], [' Y'ypos], [' Z'zpos]}

if use_feed eq 1

{' F'feed}

use_feed = 0

else

{[' F'feed]}

endif

endp

; -----------

@arc

{nb}

;-- arc plane --

if change(arc_plane) then

if arc_plane eq XY then

gcode = 17

endif

if arc_plane eq YZ then

gcode = 18

endif

if arc_plane eq ZX then

gcode = 19

endif

{'G'gcode, ' '}

endif

if arc_direction eq CCW then

gcode = 3

else ; CW

gcode = 2

endif

if change(gcode) then

{'G'gcode}

else

{' '}

endif

{[' X'xpos] [' Y'ypos] [' Z'zpos]}

if arc_size eq 360 then

if arc_plane eq XY then

{' I'xcenter_rel, ' J'ycenter_rel}

endif

if arc_plane eq YZ then

{' J'xcenter_rel, ' K'ycenter_rel}

endif

if arc_plane eq ZX then

{' K'xcenter_rel, ' I'ycenter_rel}

endif

else

if arc_size >= 180 then

radius = -radius

endif

{' R'radius}

endif

if use_feed eq 1

{' F'feed}

use_feed = 0

else

{[' F'feed]}

endif

endp

;-------------------

@compensation

if side eq COMP_LEFT then

gcode = 41

endif

if side eq COMP_RIGHT then

gcode = 42

endif

if side eq COMP_OFF then

gcode = 40

endif

if gcode eq 40

{nb, 'G'gcode, ' '}

else

{nb, 'G103'}

{nb, 'G'gcode, ' D'(tool_number),' '}

endif

skipline = FALSE

endp

;-------------------

@delay

gcode = 4

{nb 'G'gcode, ' P'delay_period:integer_def_f}

endp

;-------------------

@change_ref_point

; Given in absolute mode

gcode = 91

{nb, 'G'gcode}

gcode = 10

{' G'gcode ' L2 P'home_number ' X'xhome, ' Y'yhome, ' Z'zhome}

; {' G'gcode ' L2 P'home_number ' X'(-(xhome)), ' Y'(-(yhome)), ' Z'zhome}

{nb 'G90'}

endp

;-------------------

@home_number

gcode = 53 + home_number

{nb, 'G'gcode}

; if first_proc_number eq false

{' G0 A0.'}

; endif

endp

;-------------------

@rotate

; Not exist in FANUC 6M

if rotate_cancel then

gcode = 69

{nb, 'G'gcode}

else

gcode = 68

{nb, 'G'gcode, ' X0 Y0 G91 R'angle}

{nb, 'G90'}

endif

endp

;-------------------

@fourth_axis

gcode = 0

; if prev_command ne '@call_proc'

; {nb, 'G'gcode, ' A'angle}

; endif

endp

;-------------------

@change_tool

local logical save_blknum_gen

if !first_tool

{nb, 'M5'}

{nb, 'M9'}

endif

{nb, '(*TOOL 'tool_number, ' - DIA 'tool_diameter, '*)'}

{nb, 'G91 G28 Z0'}

{nb, 'M01'}

{nb 'M06 T'tool_number,' ( 'tool_message,' )'}

{nb,'T'next_tool_number}

;--------------------------------------------------------------------------------

if x_4_home <> 0

; {nl}

{nb, 'G65P8090 X'shift_x ' Y'shift_y ' Z'shift_z ' B'angle_4x_around_x:xpos_f ' H'tool_number:xpos_f ' A'home_number:xpos_f ' C0 D0 E0 ( C=TIKUN_X D=TIKUN_Y E=TIKUN_Z HOME ' part_home_number ' B = 'angle_4x_around_x ' )' }

save_part_home_number = part_home_number

; {nl}

endif

;--------------------------------------------------------------------

{nb, 'G90 '}

; skipline = FALSE

xpos = xnext

ypos = ynext

cpos = cnext

xold = xnext

yold = ynext

zold = znext

change(zpos) = false

call @rapid_move

; skipline = true

gcode = 43

{nb, 'G'gcode, ' H'tool_number, ' Z'znext}

; skipline = FALSE

tool_direction = CCW

call @start_tool

; skipline = TRUE

{nb, 'M8'}

endp

;-------------------

@message

;--------------------------------------------------------------------------------

; if x_4_home <> 0

; if part_home_number ne save_part_home_number

; save_part_home_number = part_home_number

; endif

; endif

;----------------------------------------------------------------------------------

{nb, '(', message, ')'}

endp

;-------------------

@drill

if drill_type eq helicoil

call @helicoil

else

call @simple_drill

endif

endp

@simple_drill

call @rapid_move

gcode = 98

{nb, 'G'gcode, ' '}

if drill_type eq drilling then

gcode = 81

endif

if drill_type eq f_drill then

gcode = 82

endif

if drill_type eq peck then

gcode = 83

endif

if drill_type eq tapping then

gcode = 84

endif

if drill_type eq boring then

gcode = 85

endif

if drill_type eq r_boring then

gcode = 86

endif

if drill_type eq f_boring then

gcode = 89

endif

{'G'gcode, ' Z'drill_lower_z, ' R'drill_upper_z}

if drill_type eq peck then

{' Q'down_step}

endif

if drill_type eq f_drill or drill_type eq tapping then

{' P'delay:integer_def_f}

endif

if drill_type eq tapping then

{' F'(feed*spin)} ;*spin:integer_def_f}

else

{' F'feed}

endif

endp

@helicoil

local integer num_step i2 D_STEP_L

local numeric xpos1 xpos_out ypos_out s_step1 sem_fin1 inc_z I_cent_rel

local logical flag_in

local string comp_dir1

;{nb,'start thred'}

{nb,'D'tool_number}

;----- checking if or out -----------

if inn eq 1 and out eq 0 then

flag_in = true

endif

if out eq 1 and inn eq 0 then

flag_in = false

endif

;----- checking if or out -----------

d_step = drill_depth / abs(pitch)

if frac(d_step) > 0

D_STEP_L = d_step + 1

ELSE

D_STEP_L = d_step

endif

if pitch < 0

drill_upper_z = drill_lower_z + (D_STEP_L * abs(pitch))

endif

; {nb,'xpos = ' xpos ' tool_diameter = 'tool_diameter ' diameter = 'diameter}

;----- first moovement form in or out -------

if flag_in eq true

{nb,'G0'[' X'xpos],[' Y'ypos],' Z'drill_clearance_z}

else

{nb,'G0 X'(xpos+diameter/2+tool_diameter/2+2), ' Y'ypos, ' Z'drill_clearance_z}

endif

;----- first moovement from in or out -------

{nb,'G0 Z'drill_upper_z}

;---- avoid division by 0 --------

if s_step == 0

if sem_fin == 0

sem_fin1 = 1

s_step1 = 1

else

sem_fin1 = sem_fin

s_step1 = sem_fin1 / 2

endif

else

sem_fin1 = sem_fin

s_step1 = s_step

endif

;---- avoid division by 0 --------

;---- calculating the number of steps --------

if frac(abs(sem_fin1 / s_step1)) > 0

num_step = abs(sem_fin1 / s_step1 + 1)

else

num_step = abs(sem_fin1 / s_step1)

endif

;---- calculating the number of steps --------

while num_step >= 1

if pitch > 0

{nb,'G1 Z'drill_lower_z ' F'feed}

endif

; --- set the variables for in or out thred -----

if flag_in eq true

if num_step == 1

xpos1 = ((diameter/2) + xpos)

I_cent_rel = -(diameter/2)

else

xpos1 = ((diameter/2) + xpos - sem_fin1 + s_step1);

I_cent_rel = -((diameter/2) - sem_fin1 + s_step1)

endif

if pitch > 0

comp_dir1 = '41'

xpos_out = xpos

gcode = 3

else

comp_dir1 = '42'

xpos_out = xpos

gcode = 2

endif

else

if num_step == 1

xpos1 = ((diameter/2) + xpos)

I_cent_rel = -(diameter/2)

else

xpos1 = ((diameter/2) + xpos + sem_fin1 - s_step1);

I_cent_rel = -((diameter/2) - sem_fin1 + s_step1)

endif

if pitch > 0

comp_dir1 = '42'

xpos_out = (xpos+diameter/2+tool_diameter/2+2)

gcode = 3

else

comp_dir1 = '41'

xpos_out = (xpos+diameter/2+tool_diameter/2+2)

gcode = 2

endif

endif

; --- set the variables for in or out thred -----

{nb,'G1 G'comp_dir1' X'xpos1:xpos_f}

{' F'feed_rate}

; {nb,'G'gcode ' X'xpos1 }

i2 = 0

{nb,'G91'}

while i2 <= ABS(d_step)

{nb,' G'gcode ,' X0 Y0 Z'pitch}

{' I'I_cent_rel, ' J0'}

if i2 == 1

;{' F'feed_rate}

endif

i2 = i2 + 1

endw

{nb,'G90 G40 '}

{'G1 X'xpos_out:xpos_f,' Y'ypos}

s_step1 = s_step1 + s_step1

num_step = num_step-1

{nb,'G0 Z'drill_upper_z}

endw

{nb,'G0 Z'drill_clearance_z}

; {nb,'End thred'}

endp

;-------------------

@drill_point

if drill_type eq helicoil

;{nb,'***************'}

if !first_drill

call @rapid_move

call @helicoil

endif

else

if !first_drill

{nb, ' ', [' X'xpos], [' Y'ypos], [' Z'zpos]}

endif

endif

endp

;-------------------

@mirror

if mirror_type eq MIRROR_OFF then

{nb, 'G50.1 X0 Y0'}

else

{nb, 'G51.1 '}

if mirror_type eq MIRROR_X then

{'X1 Y0'}

endif

if mirror_type eq MIRROR_Y then

{'X0 Y1'}

endif

if mirror_type eq MIRROR_XY then

{'X1 Y1'}

endif

endif

endp

;-------------------

@end_drill

gcode = 80

{nb, 'G'gcode}

endp

;-------------------

@halt_program

{' M0'}

endp

;--------------------

@round_comp

; NOP

endp

;--------------------

@start_of_job

skipline = false

{' ( 'job_name,' )'}

skipline= true

; NOP

endp

;--------------------

@end_of_job

; NOP

endp

;--------------------

@assign_axis

; TBD

endp

; =======================

; USER DEFINED PROCEDURES

; =======================

@call_simple_proc

active(message) = FALSE

active(parm1) = FALSE

active(parm2) = FALSE

active(parm3) = FALSE

proc_count = 1

call @call_proc

endp

;-------------------

@start_tool

if tool_direction eq CW then

mcode = 4

else ; CCW

mcode = 3

endif

{ ' M'mcode, ' S'spin:integer_def_f}

endp

;-------------------

@m_feed_spin

use_feed = 1

endp

;-------------------

@stop_tool

{' M5'}

endp

@line_on

endp

@end_job_procs

endp

@line_4x

endp

@move_4x

endp

@drill4x_pnt

endp

@rotary_info

; if first_proc_number eq false

; {'G0 A0'}

; endif

endp

@chng_tool_cnext

endp

@init_cpos

endp

@move4x_dir

endp

@line4x_dir

endp

@move4x_polar

endp

@line4x_polar

endp

@arc4x_polar

endp

@move4x_cartesian

endp

@line4x_cartesian

endp

@arc4x_cartesian

endp

@drill4x_polar

endp

@drill4x_cartesian

endp

@call_prms

endp

@tool_path_info

endp

@loop_matrix_info

endp

@tmatrix

local numeric hx hy hz

local numeric cosx sinx cosy siny cosz sinz

local numeric dx dy dz

; dx1 = 0

; dy1 = 0

; dz1 = 0

dx = shift_x; + dx1

dy = shift_y; + dy1

dz = shift_z; + dz1

sinx = sin(rotate_angle_x)

cosx = cos(rotate_angle_x)

siny = sin(rotate_angle_y)

cosy = cos(rotate_angle_y)

sinz = sin(rotate_angle_z)

cosz = cos(rotate_angle_z)

hx = cosy*cosz*dx - sinz*cosy*dy + siny*dz

hy = (-sinx*siny*cosy + cosx*sinz)*dx + (sinx*siny*sinz + cosx*cosz)*dy - sinx*cosy*dz

hz = (cosx*cosz*siny + sinx*sinz)*dx + (-sinz*cosx*siny + sinx*cosz)*dy - cosx*cosy*dz

; {nb, 'OLD G54 : X=' DX1 ' Y= 'DY1 ' Z= ' DZ1}

; {nb,' rotate_angle_x = 'rotate_angle_x}

; {nb,' rotate_angle_y = 'rotate_angle_y}

; {nb,' rotate_angle_z = 'rotate_angle_z}

; {nb, 'DX =', Dx}

; {nb, 'Dy =', Dy}

; {nb, 'Dz =', Dz}

; {nb, 'NEW G54 : X=' HX ' Y= 'HY ' Z= ' (-HZ)}

endp

@home_data2

{nl, '%MM' (6000+part_home_number)}

{nl,'N' (6000+part_home_number)}

{nl,'N5 (X) E101=' shift_x ' (Y) E102='shift_y ' (Z) E103=' shift_z }

{' (A) E111=' (-rotate_angle_x) }

{' (B) E112=' (rotate_angle_y) }

{' © E113='(-rotate_angle_z)}

{nl,'N6 E180=0 E181=0 E182=0'}

{nl}

endp

@home_data1

if x_4_home <> 0

{nl}

{nl, 'O8090'}

{nb,'G103 P1'}

{nb,'#5321= 0'}

{nb,'#5322= 0'}

{nb,'#5323= 0'}

{nb,'#5321= [#[5201 +20*#1] + #24]'} ; g59 x

{nb,'#5322= [#[5202 +20*#1]+ #25]'} ; g59 y

{nb,'#5323= [#[5203 +20*#1] + #26]'} ; g59 z

{nb,'#5324= # [5204 +20*#1] '} ; g59 B

{nb,' #140= [#5321 - #5301]'} ; g59 x - g58 x

{nb,' #141= [#5322 - #5302]'} ; g59 y - g58 y

{nb,' #142= [#5323 - #5303]'} ; g59 z - g58 z

{nb,' #143 = [[#141*COS[#2]] - [#142*SIN[#2]]]'}

{nb,' #144 = [[#141*SIN[#2]] + [#142*COS[#2]]]'}

; {nb,'#145 = [#143 - #141]'} ;dy

; {nb,'#146 = [#144 - #142]'} ;dz

{nb,'#5321 = #5301 + #140 + #3'};g59xnew

{nb,'#5322 = #5302 + #143 + #7'};g59ynew

{nb,'#5323 = #5303 + #144 + #8'};g59znew

{nb, 'G28 G91 G0 Z0.'}

{nb, 'G90'}

{nb,'G59 '}

; {nb,' M22'}

{nb,' G90 G0 A-#2'}

; {nb,' M21'}

{nb,'G0 X0 Y0'}

{nb,' G0 G43 H#11 Z100.'}

; {nb,'G103'}

{nb,'G103 '}

{nb,'M99'}

{nl}

endif

endp

@home_data1a

local numeric a5321 a5322 a5323 a5324 ;g59

local numeric a5221 a5222 a5223 a5224 ;g54

local numeric a5301 a5302 a5303 a5304 ;g58

local numeric a140 ;g59x-g58x

local numeric a141 ;g59y-g58y

local numeric a142 ;g59z-g58z

local numeric a143 ;dy from g58

local numeric a144 ;dz from g58

local numeric a24 ;offset x

local numeric a25 ;offset y

local numeric a26 ;offset z

local numeric a2 ; angle b

local numeric a3 a7 a8 ; rejast x y z

a5221 = -200 ;x ;

a5222 = -150 ;y ;

a5223 = -300 ;z ;g54

a5224 = 0 ;0 ;

a24 = 0 ;dx t0 g59

a25 = 0 ;dy t0 g59

a26 = 0 ;dz t0 g59

a5301 = -200 ;x ;

a5302 = -150 ;y ;

a5303 = -350 ;z ;g58

a5304 = 30 ;0 ;

a2 = -90

a3 = 0

a7 = 0

a8 = 0

{nl}

{nl, 'O8090'}

a5321= (a5221 + a24); g59 x

{nb,'#5321= '(a5321)} ; g59 x

a5322= (a5222 + a25); g59 y

{nb,'#5322= '(a5322)} ; g59 y

a5323= (a5223 + a26) ; g59 z

{nb,'#5323= '(a5323)} ; g59 y

a5324= (a5224) ; g59 b

{nb,'#5324= '(a5324)} ; g59 b

{nb, 'G28 G91 G0 Z0.'}

{nb, 'G90'}

a140 = (a5321 - a5301) ; g59 x - g58 x

{nb,'#140= '(a140)} ; g59 x - g58 x

a141 = (a5322 - a5302) ; g59 y - g58 y

{nb,'#141= '(a141)} ; g59 y - g58 y

a142 = (a5323 - a5303) ; g59 z - g58 z

{nb,'#142= '(a142)} ; g59 z - g58 z

a143 =((a141*COS(a2)) - (a142*SIN(a2)))

{nb,'#143 = '(a143)}

a144 = ((a141*SIN(a2)) + (a142*COS(a2)))

{nb,'#144 = '(a144)}

; {nb,'a145 = [a143 - a141]'} ;dy

; {nb,'a146 = [a144 - a142]'} ;dz

a5321 = a5301 + a3 ;g59xnew

{nb,'#5321 = 'a5321} ;g59xnew

a5322 = a5302 + a143 + a7 ;g59ynew

{nb,'#5322 = 'a5322} ;g59ynew

a5323 = a5303 + a144 + a8 ;g59znew

{nb,'#5323 = 'a5323} ;g59znew

{nb,'G59 '}

; {nb,' M22'}

{nb,' G0 A#2'}

; {nb,' M21'}

{nb,'G0 X0 Y0'}

; {nb,' G0 G43 H#11 Z'100}

{nb,'M99'}

{nl}

endp

@start_of_file ==> program_number:1000 g_file_name:'MP5070_1665_000REVA.TAP'

..> full_g_file_name:'C:\PROGRAM FILES\SOLIDCAM2006R10\USER\DIMA.SINCE-14.03.2007\APPLIED\MP5070_1665_000REVA\MP5070_1665_000REVA\MP5070_1665_000REVA.TAP'

..> part_name:'MP5070_1665_000REVA'

..> rotate_used:false mirror_used:false fourth_axis_used:false

..> first_proc_number:1001 last_proc_number:1048

..> home_number:1 home_changed:false

..> clearance_plane:50.000 tool_start_plane:50.000

..> work_upper_plane:0.000 zero_plane:-68.500

> %

> O1000 (MP5070_1665_000REVA.TAP)

> (SUBROUTINES: O1001 .. O1048)

@def_tool ==> tool_number:1 tool_offset:12.500 tool_length:75.000

..> tool_teeth_number:2 corner_radius:0.500

..> tool_feed:100.000 tool_spin:1000.000

..> tool_message:'' tool_type:end_mill

..> tool_feed_z:33.000 tool_feed_finish:100.000 tool_spin_finish:1000.000

..> tool_id_number:0 tool_angle:0.000

..> tool_user_type:'TOOL END MILL'

..> tool_name:'' group_tool_name:''

..> holder_name:'ER32x60' group_holder_name:'Collet Chuck ER Type'

..> tool_description:'' holder_description:''

..> total_tool_length:150.000 cutting_tool_length:25.000 hlength:75.000

..> work_material:'None' tool_material:''

..>

>

> (G10 L12 P1 D25.)

@def_tool ==> tool_number:2 tool_offset:3.000 tool_length:16.000

..> tool_teeth_number:3 corner_radius:0.000

..> tool_feed:100.000 tool_spin:1000.000

..> tool_message:'' tool_type:end_mill

..> tool_feed_z:33.000 tool_feed_finish:100.000 tool_spin_finish:1000.000

..> tool_id_number:0 tool_angle:0.000

..> tool_user_type:'TOOL END MILL'

..> tool_name:'' group_tool_name:''

..> holder_name:'ER16x70' group_holder_name:'Collet Chuck ER Type'

..> tool_description:'' holder_description:''

..> total_tool_length:36.000 cutting_tool_length:11.000 hlength:74.000

..> work_material:'None' tool_material:''

..>

>

> (G10 L12 P2 D6.)

@def_tool ==> tool_number:3 tool_offset:4.000 tool_length:15.000

..> tool_teeth_number:2 corner_radius:90.000

..> tool_feed:33.000 tool_spin:1000.000

..> tool_message:'' tool_type:drill

..> tool_feed_z:33.000 tool_feed_finish:100.000 tool_spin_finish:1000.000

..> tool_id_number:0 tool_angle:90.000

..> tool_user_type:'TOOL DRILL'

..> tool_name:'' group_tool_name:''

..> holder_name:'ER16x701' group_holder_name:'Collet Chuck ER Type'

..> tool_description:'' holder_description:''

..> total_tool_length:36.000 cutting_tool_length:4.000 hlength:74.000

..> work_material:'None' tool_material:''

..>

>

> (G10 L12 P3 D8.)

@def_tool ==> tool_number:4 tool_offset:2.500 tool_length:31.000

..> tool_teeth_number:2 corner_radius:118.000

..> tool_feed:33.000 tool_spin:1000.000

..> tool_message:'' tool_type:drill

..> tool_feed_z:33.000 tool_feed_finish:100.000 tool_spin_finish:1000.000

..> tool_id_number:0 tool_angle:118.000

..> tool_user_type:'TOOL DRILL'

..> tool_name:'' group_tool_name:''

..> holder_name:'ER16x702' group_holder_name:'Collet Chuck ER Type'

..> tool_description:'' holder_description:''

..> total_tool_length:36.000 cutting_tool_length:26.000 hlength:74.000

..> work_material:'None' tool_material:''

..>

>

> (G10 L12 P4 D5.)

@def_tool ==> tool_number:5 tool_offset:3.000 tool_length:31.000

..> tool_teeth_number:2 corner_radius:118.000

..> tool_feed:33.000 tool_spin:1000.000

..> tool_message:'M6/Gun' tool_type:drill

..> tool_feed_z:33.000 tool_feed_finish:100.000 tool_spin_finish:1000.000

..> tool_id_number:0 tool_angle:118.000

..> tool_user_type:'TOOL DRILL'

..> tool_name:'' group_tool_name:''

..> holder_name:'ER16x703' group_holder_name:'Collet Chuck ER Type'

..> tool_description:'' holder_description:''

..> total_tool_length:36.000 cutting_tool_length:26.000 hlength:74.000

..> work_material:'None' tool_material:''

..>

>

> (G10 L12 P5 D6.)

@def_tool ==> tool_number:6 tool_offset:1.650 tool_length:15.000

..> tool_teeth_number:2 corner_radius:118.000

..> tool_feed:33.000 tool_spin:1000.000

..> tool_message:'' tool_type:drill

..> tool_feed_z:33.000 tool_feed_finish:100.000 tool_spin_finish:1000.000

..> tool_id_number:0 tool_angle:118.000

..> tool_user_type:'TOOL DRILL'

..> tool_name:'' group_tool_name:''

..> holder_name:'ER16x705' group_holder_name:'Collet Chuck ER Type'

..> tool_description:'' holder_description:''

..> total_tool_length:36.000 cutting_tool_length:10.000 hlength:74.000

..> work_material:'None' tool_material:''

..>

>

> (G10 L12 P6 D3.3)

@def_tool ==> tool_number:7 tool_offset:2.000 tool_length:20.000

..> tool_teeth_number:2 corner_radius:118.000

..> tool_feed:33.000 tool_spin:1000.000

..> tool_message:'M4/Spiral' tool_type:drill

..> tool_feed_z:33.000 tool_feed_finish:100.000 tool_spin_finish:1000.000

..> tool_id_number:0 tool_angle:118.000

..> tool_user_type:'TOOL DRILL'

..> tool_name:'' group_tool_name:''

..> holder_name:'ER16x704' group_holder_name:'Collet Chuck ER Type'

..> tool_description:'' holder_description:''

..> total_tool_length:36.000 cutting_tool_length:10.000 hlength:74.000

..> work_material:'None' tool_material:''

..>

>

> (G10 L12 P7 D4.)

@def_tool ==> tool_number:8 tool_offset:12.500 tool_length:20.000

..> tool_teeth_number:10 corner_radius:0.000

..> tool_feed:100.000 tool_spin:1000.000

..> tool_message:'Lastoch Hvost' tool_type:rough_mill

..> tool_feed_z:33.000 tool_feed_finish:100.000 tool_spin_finish:1000.000

..> tool_id_number:0 tool_angle:0.000

..> tool_user_type:'SHAPED TOOL END MILL'

..> tool_name:'t4' group_tool_name:'spatial tools'

..> holder_name:'ER32x601' group_holder_name:'Collet Chuck ER Type'

..> tool_description:'' holder_description:''

..> total_tool_length:24.552 cutting_tool_length:12.500 hlength:74.552

..> work_material:'None' tool_material:''

..>

>

> (G10 L12 P8 D25.)

@absolute_mode ==> no parameters

>

> G90

@machine_plane ==> machine_plane:xy

> G17

@start_program ==> xpos:0.000T ypos:200.000T zpos:100.000T

>

> G80 G40

> G28 G91 Z0

> G90

@tmatrix ==> mac_number:1 position:1 home_user_name:'Position A0.'

..> tool_z_level:250.000 clearance_plane:50.000 tool_start_plane:50.000

..> work_upper_plane:0.000 zero_plane:-68.500

..> rotate_angle_x:0.000T rotate_angle_y:0.000T rotate_angle_z:0.000T

..> rotate_angle_x_dir:cw rotate_angle_y_dir:cw rotate_angle_z_dir:cw

..> x_angle_const_z:0.000T y_angle_const_z:0.000T dev_angle_z:0.000T

..> opposite_x_angle_const_z:-180.000T opposite_y_angle_const_z:-180.000T opposite_dev_angle_z:-180.000T

..> x_angle_const_z_dir:cw y_angle_const_z_dir:cw dev_angle_z_dir:cw

..> x_angle_const_y:0.000T z_angle_const_y:0.000T dev_angle_y:0.000T

..> opposite_x_angle_const_y:0.000T opposite_z_angle_const_y:0.000T opposite_dev_angle_y:0.000T

..> x_angle_const_y_dir:cw z_angle_const_y_dir:cw dev_angle_y_dir:cw

..> y_angle_const_x:0.000T z_angle_const_x:0.000T dev_angle_x:0.000T

..> opposite_y_angle_const_x:0.000T opposite_z_angle_const_x:0.000T opposite_dev_angle_x:0.000T

..> y_angle_const_x_dir:cw z_angle_const_x_dir:cw dev_angle_x_dir:cw

..> angle_4x_around_x:0.000T angle_4x_around_y:0.000T

..> angle_4x_around_x_dir:cw angle_4x_around_y_dir:cw

..> shift_x:0.000T shift_y:0.000T shift_z:0.000T

..> tmatrix_I_1:1.000T tmatrix_I_2:0.000T tmatrix_I_3:0.000T tmatrix_I_4:0.000T

..> tmatrix_I_5:0.000T tmatrix_I_6:1.000T tmatrix_I_7:0.000T tmatrix_I_8:0.000T

..> tmatrix_I_9:0.000T tmatrix_I_10:0.000T tmatrix_I_11:1.000T tmatrix_I_12:0.000T

..> tmatrix_I_13:0.000T tmatrix_I_14:0.000T tmatrix_I_15:0.000T tmatrix_I_16:1.000T

..> x = cosy*cosz*x - sinz*cosy*y + siny*z

..> y = (-sinx*siny*cosz + cosx*sinz)*x + (sinx*siny*sinz + cosx*cosz)*y - sinx*cosy*z

..> z = (cosx*cosz*siny + sinx*sinz)*x + (-sinz*cosx*siny + sinx*cosz)*y - cosx*cosy*z

..> around Z

..> x = x*cos(dev_angle) - y*sin(dev_angle)

..> y = x*sin(dev_angle) + y*cos(dev_angle)

..> around Y

..> z = z*cos(dev_angle) - x*sin(dev_angle)

..> x = z*sin(dev_angle) + x*cos(dev_angle)

..> around X

..> y = y*cos(dev_angle) - z*sin(dev_angle)

..> z = y*sin(dev_angle) + z*cos(dev_angle)

>

@home_number ==> home_number:1 home_user_name:'Position A0.'

>

> G54

@change_tool ==> tool_number:1 tool_diameter:25.000 tool_type:end_mill

..> tool_id_number:0 tool_length:75.000 tool_teeth_number:2 corner_radius:0.500

..> tool_feed:1200.000 tool_spin:6000.000

..> tool_message:''

..> tool_user_type:'TOOL END MILL'

..> first_tool:true last_tool:false

..> xnext:11.500 ynext:-62.000 znext:50.000 cnext:0.000

..> xtool:0.000F ytool:0.000F ztool:0.000T

..> next_tool_number:2 next_tool_id_number:0 next_tool_machine_type:milling

..> number_of_jobs_used_tool:15

..> tool_direction:cw spin:6000.000

..> tool_length:75.000 corner_radius:0.500

..> tool_name:'' group_tool_name:''

..> holder_name:'ER32x60' group_holder_name:'Collet Chuck ER Type'

..> tool_description:'' holder_description:''

..> total_tool_length:150.000 cutting_tool_length:25.000 hlength:75.000

..> work_material:'None' tool_material:'None'

..> d_offset:0 h_offset:1

>

> (*TOOL 1 - DIA 25.0*)

> G91 G28 Z0

> M01

> M06 T1 ( )

> T2

> G90

> G0 X11.5 Y-62.

> G43 H1 Z50. M3 S6000

> M8

@call_proc ==> label:1001 start_line:5 end_line:0

..> message:'F-profile1-T1'T

..> parm1:0.000F parm2:0.000F parm3:0.000F

..>

..> job_name:'F-profile1-T1' job_type:'profile'

..> job_machine_type:milling prev_job_mac_type:milling

..> machine_plane:xy safety:2.000

..> compensation:false

..> max_spin:15000.000 msg:''

..>

..> depth:0.000 down_step:0.000

..> job_clearance_plane:50.000 job_upper_plane:0.000 job_lower_plane:0.000

..> feed_rate:1200.000 finish_feed:1200.000 z_feed:600.000 spin_rate:6000.000 finish_spin:6000.000

..> next_job_machine_type:milling next_job_tool_number:1 next_job_tool_id_number:0

..>

..> cutting_diameter:0.000

..> wall_offset:0.500 clear_offset_type:forward clear_offset:0.000

..> depth_type:constant_depth profile_approach_type:tangent

..> approach_value:20.000 approach_tangent_value:0.000

..> approach_arc_angle:90.000 approach_arc_from_type:1 approach_arc_from_distance:0.000

..> profile_retreat_type:tangent

..> retreat_value:20.000 retreat_tangent_value:0.000

..> retreat_arc_angle:90.000 retreat_arc_from_type:1 retreat_arc_from_distance:0.000

..> offset_number:0 tool_offset:12.500

..> offset_radius:0.000 tool_side:comp_right

..> job_time:''

..>

>

> M98 P1001 (F-profile1-T1)

@call_proc ==> label:1002 start_line:5 end_line:0

..> message:'F-profile2-T1'T

..> parm1:0.000F parm2:0.000F parm3:0.000F

..>

..> job_name:'F-profile2-T1' job_type:'profile'

..> job_machine_type:milling prev_job_mac_type:milling

..> machine_plane:xy safety:2.000

..> compensation:false

..> max_spin:15000.000 msg:''

..>

..> depth:38.500 down_step:2.000

..> job_clearance_plane:50.000 job_upper_plane:0.000 job_lower_plane:0.000

..> feed_rate:1200.000 finish_feed:1200.000 z_feed:600.000 spin_rate:6000.000 finish_spin:6000.000

..> next_job_machine_type:milling next_job_tool_number:1 next_job_tool_id_number:0

..>

..> cutting_diameter:0.000

..> wall_offset:3.000 clear_offset_type:for_and_back clear_offset:130.000

..> depth_type:constant_depth profile_approach_type:direct

..> approach_value:1.000 approach_tangent_value:1.000

..> approach_arc_angle:90.000 approach_arc_from_type:1 approach_arc_from_distance:0.000

..> profile_retreat_type:direct

..> retreat_value:1.000 retreat_tangent_value:1.000

..> retreat_arc_angle:90.000 retreat_arc_from_type:1 retreat_arc_from_distance:0.000

..> offset_number:0 tool_offset:12.500

..> offset_radius:0.000 tool_side:comp_right

..> job_time:''

..>

>

> M98 P1002 (F-profile2-T1)

@call_proc ==> label:1003 start_line:5 end_line:0

..> message:'F-profile10-T1'T

..> parm1:0.000F parm2:0.000F parm3:0.000F

..>

..> job_name:'F-profile10-T1' job_type:'profile'

..> job_machine_type:milling prev_job_mac_type:milling

..> machine_plane:xy safety:2.000

..> compensation:true

..> max_spin:15000.000 msg:''

..>

..> depth:35.500 down_step:12.500

..> job_clearance_plane:50.000 job_upper_plane:0.000 job_lower_plane:0.000

..> feed_rate:1200.000 finish_feed:1200.000 z_feed:600.000 spin_rate:6000.000 finish_spin:6000.000

..> next_job_machine_type:milling next_job_tool_number:1 next_job_tool_id_number:0

..>

..> cutting_diameter:0.000

..> wall_offset:0.000 clear_offset_type:forward clear_offset:0.000

..> depth_type:constant_depth profile_approach_type:tangent

..> approach_value:1.000 approach_tangent_value:1.000

..> approach_arc_angle:90.000 approach_arc_from_type:1 approach_arc_from_distance:0.000

..> profile_retreat_type:tangent

..> retreat_value:1.000 retreat_tangent_value:1.000

..> retreat_arc_angle:90.000 retreat_arc_from_type:1 retreat_arc_from_distance:0.000

..> offset_number:0 tool_offset:12.500

..> offset_radius:0.000 tool_side:comp_right

..> job_time:''

..>

>

> M98 P1003 (F-profile10-T1)

@tmatrix ==> mac_number:2 position:1 home_user_name:'Position A90.'

..> tool_z_level:250.000 clearance_plane:50.000 tool_start_plane:50.000

..> work_upper_plane:0.000 zero_plane:-42.000

..> rotate_angle_x:0.000T rotate_angle_y:0.000T rotate_angle_z:0.000T

..> rotate_angle_x_dir:cw rotate_angle_y_dir:cw rotate_angle_z_dir:cw

..> x_angle_const_z:0.000T y_angle_const_z:0.000T dev_angle_z:0.000T

..> opposite_x_angle_const_z:-180.000T opposite_y_angle_const_z:-180.000T opposite_dev_angle_z:-180.000T

..> x_angle_const_z_dir:cw y_angle_const_z_dir:cw dev_angle_z_dir:cw

..> x_angle_const_y:0.000T z_angle_const_y:0.000T dev_angle_y:0.000T

..> opposite_x_angle_const_y:0.000T opposite_z_angle_const_y:0.000T opposite_dev_angle_y:0.000T

..> x_angle_const_y_dir:cw z_angle_const_y_dir:cw dev_angle_y_dir:cw

..> y_angle_const_x:0.000T z_angle_const_x:0.000T dev_angle_x:0.000T

..> opposite_y_angle_const_x:0.000T opposite_z_angle_const_x:0.000T opposite_dev_angle_x:0.000T

..> y_angle_const_x_dir:cw z_angle_const_x_dir:cw dev_angle_x_dir:cw

..> angle_4x_around_x:0.000T angle_4x_around_y:0.000T

..> angle_4x_around_x_dir:cw angle_4x_around_y_dir:cw

..> shift_x:0.000T shift_y:0.000T shift_z:0.000T

..> tmatrix_I_1:1.000T tmatrix_I_2:0.000T tmatrix_I_3:0.000T tmatrix_I_4:0.000T

..> tmatrix_I_5:0.000T tmatrix_I_6:1.000T tmatrix_I_7:0.000T tmatrix_I_8:0.000T

..> tmatrix_I_9:0.000T tmatrix_I_10:0.000T tmatrix_I_11:1.000T tmatrix_I_12:0.000T

..> tmatrix_I_13:0.000T tmatrix_I_14:0.000T tmatrix_I_15:0.000T tmatrix_I_16:1.000T

..> x = cosy*cosz*x - sinz*cosy*y + siny*z

..> y = (-sinx*siny*cosz + cosx*sinz)*x + (sinx*siny*sinz + cosx*cosz)*y - sinx*cosy*z

..> z = (cosx*cosz*siny + sinx*sinz)*x + (-sinz*cosx*siny + sinx*cosz)*y - cosx*cosy*z

..> around Z

..> x = x*cos(dev_angle) - y*sin(dev_angle)

..> y = x*sin(dev_angle) + y*cos(dev_angle)

..> around Y

..> z = z*cos(dev_angle) - x*sin(dev_angle)

..> x = z*sin(dev_angle) + x*cos(dev_angle)

..> around X

..> y = y*cos(dev_angle) - z*sin(dev_angle)

..> z = y*sin(dev_angle) + z*cos(dev_angle)

>

@home_number ==> home_number:2 home_user_name:'Position A90.'

>

> G55

@call_proc ==> label:1004 start_line:5 end_line:0

..> message:'F-profile12-T1'T

..> parm1:0.000F parm2:0.000F parm3:0.000F

..>

..> job_name:'F-profile12-T1' job_type:'profile'

..> job_machine_type:milling prev_job_mac_type:milling

..> machine_plane:xy safety:2.000

..> compensation:false

..> max_spin:15000.000 msg:''

..>

..> depth:5.000 down_step:5.000

..> job_clearance_plane:50.000 job_upper_plane:5.000 job_lower_plane:0.000

..> feed_rate:1200.000 finish_feed:1200.000 z_feed:600.000 spin_rate:6000.000 finish_spin:6000.000

..> next_job_machine_type:milling next_job_tool_number:1 next_job_tool_id_number:0

..>

..> cutting_diameter:0.000

..> wall_offset:0.000 clear_offset_type:forward clear_offset:0.000

..> depth_type:constant_depth profile_approach_type:tangent

..> approach_value:20.000 approach_tangent_value:0.000

..> approach_arc_angle:90.000 approach_arc_from_type:1 approach_arc_from_distance:0.000

..> profile_retreat_type:tangent

..> retreat_value:20.000 retreat_tangent_value:0.000

..> retreat_arc_angle:90.000 retreat_arc_from_type:1 retreat_arc_from_distance:0.000

..> offset_number:0 tool_offset:12.500

..> offset_radius:0.000 tool_side:comp_right

..> job_time:''

..>

>

> M98 P1004 (F-profile12-T1)

@call_proc ==> label:1005 start_line:5 end_line:0

..> message:'P-profile2-T1'T

..> parm1:0.000F parm2:0.000F parm3:0.000F

..>

..> job_name:'P-profile2-T1' job_type:'pocket'

..> job_machine_type:milling prev_job_mac_type:milling

..> machine_plane:xy safety:2.000

..> compensation:false

..> max_spin:15000.000 msg:''

..>

..> depth:17.000 down_step:2.000

..> job_clearance_plane:50.000 job_upper_plane:5.000 job_lower_plane:0.000

..> feed_rate:1200.000 finish_feed:1200.000 z_feed:600.000 spin_rate:6000.000 finish_spin:6000.000

..> next_job_machine_type:milling next_job_tool_number:1 next_job_tool_id_number:0

..>

..> cutting_diameter:0.000

..> wall_offset:0.500 floor_offset:0.000 island_offset:0.000

..> pocket_approach_type:vertical_approach pocket_retreat_type:direct

..> retreat_value:2.000 retreat_tangent_value:0.000

..> retreat_arc_angle:90.000 retreat_arc_from_type:1 retreat_arc_from_distance:0.000

..> offset_number:0 tool_offset:12.500

..> offset_radius:0.000 tool_side:comp_right

..> job_time:''

..>

>

> M98 P1005 (P-profile2-T1)

@call_proc ==> label:1006 start_line:5 end_line:0

..> message:'F-profile3-T1'T

..> parm1:0.000F parm2:0.000F parm3:0.000F

..>

..> job_name:'F-profile3-T1' job_type:'profile'

..> job_machine_type:milling prev_job_mac_type:milling

..> machine_plane:xy safety:2.000

..> compensation:true

..> max_spin:15000.000 msg:''

..>

..> depth:43.000 down_step:12.500

..> job_clearance_plane:50.000 job_upper_plane:0.000 job_lower_plane:0.000

..> feed_rate:1200.000 finish_feed:600.000 z_feed:600.000 spin_rate:6000.000 finish_spin:6000.000

..> next_job_machine_type:milling next_job_tool_number:1 next_job_tool_id_number:0

..>

..> cutting_diameter:0.000

..> wall_offset:0.000 clear_offset_type:forward clear_offset:0.000

..> depth_type:constant_depth profile_approach_type:tangent

..> approach_value:17.000 approach_tangent_value:1.000

..> approach_arc_angle:90.000 approach_arc_from_type:1 approach_arc_from_distance:0.000

..> profile_retreat_type:tangent

..> retreat_value:17.000 retreat_tangent_value:1.000

..> retreat_arc_angle:90.000 retreat_arc_from_type:1 retreat_arc_from_distance:0.000

..> offset_number:0 tool_offset:12.500

..> offset_radius:0.000 tool_side:comp_right

..> job_time:''

..>

>

> M98 P1006 (F-profile3-T1)

@call_proc ==> label:1007 start_line:5 end_line:0

..> message:'F-profile4-T1'T

..> parm1:0.000F parm2:0.000F parm3:0.000F

..>

..> job_name:'F-profile4-T1' job_type:'profile'

..> job_machine_type:milling prev_job_mac_type:milling

..> machine_plane:xy safety:2.000

..> compensation:true

..> max_spin:15000.000 msg:''

..>

..> depth:19.000 down_step:12.500

..> job_clearance_plane:50.000 job_upper_plane:-12.000 job_lower_plane:0.000

..> feed_rate:1200.000 finish_feed:1200.000 z_feed:600.000 spin_rate:6000.000 finish_spin:6000.000

..> next_job_machine_type:milling next_job_tool_number:1 next_job_tool_id_number:0

..>

..> cutting_diameter:0.000

..> wall_offset:0.000 clear_offset_type:forward clear_offset:0.000

..> depth_type:constant_depth profile_approach_type:tangent

..> approach_value:1.000 approach_tangent_value:1.000

..> approach_arc_angle:90.000 approach_arc_from_type:1 approach_arc_from_distance:0.000

..> profile_retreat_type:tangent

..> retreat_value:1.000 retreat_tangent_value:1.000

..> retreat_arc_angle:90.000 retreat_arc_from_type:1 retreat_arc_from_distance:0.000

..> offset_number:0 tool_offset:12.500

..> offset_radius:0.000 tool_side:comp_right

..> job_time:''

..>

>

> M98 P1007 (F-profile4-T1)

@call_proc ==> label:1008 start_line:5 end_line:0

..> message:'F-profile11-T1'T

..> parm1:0.000F parm2:0.000F parm3:0.000F

..>

..> job_name:'F-profile11-T1' job_type:'profile'

..> job_machine_type:milling prev_job_mac_type:milling

..> machine_plane:xy safety:2.000

..> compensation:true

..> max_spin:15000.000 msg:''

..>

..> depth:12.000 down_step:12.000

..> job_clearance_plane:50.000 job_upper_plane:0.000 job_lower_plane:0.000

..> feed_rate:1200.000 finish_feed:1200.000 z_feed:600.000 spin_rate:6000.000 finish_spin:6000.000

..> next_job_machine_type:milling next_job_tool_number:2 next_job_tool_id_number:0

..>

..> cutting_diameter:0.000

..> wall_offset:0.000 clear_offset_type:forward clear_offset:0.000

..> depth_type:constant_depth profile_approach_type:tangent

..> approach_value:16.000 approach_tangent_value:0.500

..> approach_arc_angle:90.000 approach_arc_from_type:1 approach_arc_from_distance:0.000

..> profile_retreat_type:tangent

..> retreat_value:16.000 retreat_tangent_value:0.500

..> retreat_arc_angle:90.000 retreat_arc_from_type:1 retreat_arc_from_distance:0.000

..> offset_number:0 tool_offset:12.500

..> offset_radius:0.000 tool_side:comp_right

..> job_time:''

..>

>

> M98 P1008 (F-profile11-T1)

@change_tool ==> tool_number:2 tool_diameter:6.000 tool_type:end_mill

..> tool_id_number:0 tool_length:16.000 tool_teeth_number:3 corner_radius:0.000

..> tool_feed:600.000 tool_spin:6000.000

..> tool_message:''

..> tool_user_type:'TOOL END MILL'

..> first_tool:false last_tool:false

..> xnext:27.500 ynext:32.500 znext:50.000 cnext:0.000

..> xtool:0.000F ytool:0.000F ztool:0.000T

..> next_tool_number:1 next_tool_id_number:0 next_tool_machine_type:milling

..> number_of_jobs_used_tool:2

..> tool_direction:cw spin:6000.000

..> tool_length:16.000 corner_radius:0.000

..> tool_name:'' group_tool_name:''

..> holder_name:'ER16x70' group_holder_name:'Collet Chuck ER Type'

..> tool_description:'' holder_description:''

..> total_tool_length:36.000 cutting_tool_length:11.000 hlength:74.000

..> work_material:'None' tool_material:'None'

..> d_offset:0 h_offset:2

>

> M5

> M9

> (*TOOL 2 - DIA 6.0*)

> G91 G28 Z0

> M01

> M06 T2 ( )

> T1

> G90

> G0 X27.5 Y32.5

> G43 H2 Z50. M3 S6000

> M8

@call_proc ==> label:1009 start_line:5 end_line:0

..> message:'F-profile6-T2'T

..> parm1:0.000F parm2:0.000F parm3:0.000F

..>

..> job_name:'F-profile6-T2' job_type:'profile'

..> job_machine_type:milling prev_job_mac_type:milling

..> machine_plane:xy safety:2.000

..> compensation:true

..> max_spin:15000.000 msg:''

..>

..> depth:11.000 down_step:3.000

..> job_clearance_plane:50.000 job_upper_plane:-12.000 job_lower_plane:0.000

..> feed_rate:600.000 finish_feed:600.000 z_feed:300.000 spin_rate:6000.000 finish_spin:6000.000

..> next_job_machine_type:milling next_job_tool_number:1 next_job_tool_id_number:0

..>

..> cutting_diameter:0.000

..> wall_offset:0.000 clear_offset_type:forward clear_offset:0.000

..> depth_type:constant_depth profile_approach_type:arc

..> approach_value:3.000 approach_tangent_value:1.000

..> approach_arc_angle:90.000 approach_arc_from_type:1 approach_arc_from_distance:0.000

..> profile_retreat_type:arc

..> retreat_value:3.000 retreat_tangent_value:1.000

..> retreat_arc_angle:90.000 retreat_arc_from_type:1 retreat_arc_from_distance:0.000

..> offset_number:0 tool_offset:3.000

..> offset_radius:0.000 tool_side:comp_right

..> job_time:''

..>

>

> M98 P1009 (F-profile6-T2)

@tmatrix ==> mac_number:3 position:1 home_user_name:'Position A65.'

..> tool_z_level:250.000 clearance_plane:50.000 tool_start_plane:50.000

..> work_upper_plane:0.000 zero_plane:-42.000

..> rotate_angle_x:0.000T rotate_angle_y:0.000T rotate_angle_z:0.000T

..> rotate_angle_x_dir:cw rotate_angle_y_dir:cw rotate_angle_z_dir:cw

..> x_angle_const_z:0.000T y_angle_const_z:0.000T dev_angle_z:0.000T

..> opposite_x_angle_const_z:-180.000T opposite_y_angle_const_z:-180.000T opposite_dev_angle_z:-180.000T

..> x_angle_const_z_dir:cw y_angle_const_z_dir:cw dev_angle_z_dir:cw

..> x_angle_const_y:0.000T z_angle_const_y:0.000T dev_angle_y:0.000T

..> opposite_x_angle_const_y:0.000T opposite_z_angle_const_y:0.000T opposite_dev_angle_y:0.000T

..> x_angle_const_y_dir:cw z_angle_const_y_dir:cw dev_angle_y_dir:cw

..> y_angle_const_x:0.000T z_angle_const_x:0.000T dev_angle_x:0.000T

..> opposite_y_angle_const_x:0.000T opposite_z_angle_const_x:0.000T opposite_dev_angle_x:0.000T

..> y_angle_const_x_dir:cw z_angle_const_x_dir:cw dev_angle_x_dir:cw

..> angle_4x_around_x:0.000T angle_4x_around_y:0.000T

..> angle_4x_around_x_dir:cw angle_4x_around_y_dir:cw

..> shift_x:0.000T shift_y:0.000T shift_z:0.000T

..> tmatrix_I_1:1.000T tmatrix_I_2:0.000T tmatrix_I_3:0.000T tmatrix_I_4:0.000T

..&g

Изменено пользователем vishnu74
Ссылка на сообщение
Поделиться на других сайтах

FANUC0M for yakoboviz

Ага! "Хаим Якубович". Конкурирующая фирма :wink:

Так мы соседи.

Дима, в gpp file который ты выложил в процедуре @fourth_axis

убери все знаки ;

Выражения после точки-запятой не обрабатываются программой.

Ссылка на сообщение
Поделиться на других сайтах

Spasibo tebe, Osiris. Zavtra na rabote poprobuyu. A ti glazastii odnako :). V maye budu v Israele, postarayus tebe pozvonit, esli ti ne protiv.

Spasibo za podderzhku. Pri sluchae plesnu. :)

Ссылка на сообщение
Поделиться на других сайтах

Ну наливать рано, еще бардака как у дурного в хате.

Процедура @tmatrix выдает на поворот нули.

Процедура @home_number имеет нездоровый вид.

@home_number

gcode = 53 + home_number

{nb, 'G'gcode}

; if first_proc_number eq false

{' G0 A0.'}

; endif

endp

Отсутствует префикс nb. Должно быть {nb, ' G0 A0.'}
Ссылка на сообщение
Поделиться на других сайтах
  • 4 месяца спустя...
  • 4 месяца спустя...

Народ помогите.....

тоже нужен пост для солидкама на 4 осевой фрезерный станок.... срочно нужно фрезеровать на цилиндре.....

дайте любой пост в качестве образца.....

icq: 494705716

email: granin@sibmail.com

Ссылка на сообщение
Поделиться на других сайтах
  • 2 недели спустя...

уважаемый не поленитесь прочитать все предидущие в этой теме ссылки.

если прочли то первое что надо указать это тип станка и систему чпу . а так ваша просьба это письмо ваньки жукова на деревню к дедушке.

впереди товарищ поместил свой пост и разбирался в чем его ошибки почему пост не пашет и помойму получил вразумительный ответ

Ссылка на сообщение
Поделиться на других сайтах
  • 1 год спустя...

А подскажите Господа можно ли где то найти пост для mach3 на четыре оси(станок координатный стол с поворотной осью параллельно X). В интернете нашел только на 3 оси. А постпроцессоры для fanuc и внутренние fast процессоры не генерят G код. Я с препроцессором вроде разобрался. А постпроцессор темный лес(@tmatrix, @arc_mill, и т.д. ). А может это и невозможно, раз во всем интернете ничего не нет. Подскажите пожалуйста. Буду рад любой помощи. g-2008@bk.ru

Ссылка на сообщение
Поделиться на других сайтах
  • 2 года спустя...

Народ помогите.....

тоже нужен пост для солидкама, станок 16К30Ф303 полсле модернизации ему установили стойку JNC T101 а у неё малотого что циклы совершенно другие так она ещё вместо значений диаметра по оси Х понемает только радиус

email: roman10.1981@rambler.ru

Ссылка на сообщение
Поделиться на других сайтах
  • 2 года спустя...

Postprocessor for milling, turning and erosion.

(Mill 3_axis, Mill_4axis (X and Y). Mill_5axis, Mill_Turn_XZC, Mill_Turn_XZCY, Turn_2x, Wire Cut)

 

solidcamx@gmail.com

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.
Примечание: вашему сообщению потребуется утверждение модератора, прежде чем оно станет доступным.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.




×
×
  • Создать...