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

Помогите, пожалуйста, с выводом знака перед R при G2(G3)


vanek77777

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

Уважаемые, коллеги.

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

Нужно чтобы пост выводил так: Если дуга от 0 до 180 градусов, то R положительный. Если дуга от 180 градусов до 360, то R отрицательный. Подскажите, пожалуйста, что нужно прописать в посте, чтобы он выводил нужный знак в зависимости от угла дуги окружности.

Очень нужна помощь. HELP

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


Самое простое, что приходит в голову - нужно удалить стандартный R-адрес из кругового перемещения и добавить там свой самописный адрес.

Само собой, в LEADER'е нужно прописать символ R, в FORMAT'е - выбрать Coordinate, задать максимальное/минимальное допустимые значения, а в Expression'е - прописать свою, опять же самописную, переменную (допустим, mom_arc_radius_signed).

Потребуется также в закладке Custom Command создать PB_CMD-процедуру (назовем ее PB_CMD_set_arc_sign), в которой переменной mom_arc_radius_signed будет присваиваться значение, исходя из величины угла дуги. Ну, что-то типа следующего:

global mom_arc_radius mom_arc_angle mom_arc_radius_signed

set mom_arc_radius_signed $mom_arc_radius

if {$mom_arc_angle > 180} {set mom_arc_radius_signed [expr (-1) * $mom_arc_radius]}

И после этого нужно добавить в событии кругового пермещения команду (т.е., написанную процедуру ) PB_CMD_set_arc_sign. Только маркер непременно должен стоять над строкой, содержаещей R-адрес.

Только что сам это проделал - работает... Только какая-то странная это кодировка. Отрицательный радиус дуги - это что-то экзотическое. По крайней мере для меня... Если не секрет, какая стойка понимает такую математику?

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

Извиняюсь! Невнимательно прочитал вопрос...

Хотя, в принципе, задача решается аналогичным способом. Только для этого не нужно удалять стандартный R-адрес, а самописный адрес нужно выводить перед ним.

Формат своего user_address'а нужно определить, как string. Без PB-CMD-процедуры не обойтись, но только в ней переменной нужной присвоить значение символа "-".

САМОЕ ГЛАВНОЕ - нужно в закладке Word Sequencing воткнуть свой user_address ПЕРЕД R-адресом. И все должно получиться...

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

Спасибо огромное, BamsiII! :smile:

Все получилось. Я пробывал делать свою custom_command, также прописывал через if then, но из-за совсем небольшого опыта я не знал как связать свою

custom_command с круговой интерполяцией. В жизнь бы сам не догодался, что нужно создать новый адрес, а дальше объявить его глобальной переменной и присвоить ей значение mom_arc_radius. Объявлять свой новый адрес строковой переменной string не понадобилось, и так все заработало нормально. Для меня это бессценный опыт. Еще раз спасибо!

Что касается стойки, то пост пишу на NC210. Её математика очень привередлива к ijk (часто выдает "профиль не конгурентен"), которые выдает UGS. Зато с R просчитывает все нормально, но есть особенность в выводе знака перед R. Кстати в руководстве на FANUC по круговой интерполяции через R описана таже самая особенность. На неделе попробую программы через R на станках (и на FANUC ради интереса) FANUC отлично рабоет и через ijk. В том числе и винтовая интерполяция. На других стойках работать мне пока не приходилось.

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

Стыдно признаться, но никогда не программировал круговую интерполяцию через R-адрес, потому на его положительное/отрицательное значения никогда и внимание не обращал.

"Вживую" никогда с NC210 не сталкивался, но только что почитал доки по ней. Там, кстати, тоже написано, что "+" и "-" надо выводить ПЕРЕД R-адресом, а в примере, который следом идет, знаки стоят ПОСЛЕ него. Но это так... К слову...

Важный момент, который я там подметил, - это дипазан значений дуг. Если дуга равна 180, то значение R должно быть отрицательным. Поэтому, если ты в своем посте задал такое же условие, как и я в своем предыдущем сообщении, то он будет содержать логическую ошибку. Неравенство надо поставить нестрогое. Т.е., ">=180". Обрати на это внимание!

И еще один нюанс. Если надо пройти полную коружность (360 градусов), то финт с R-адресом не сработает. Пост, кончено, выдаст отрицательный радиус, но стойка такой кадр не отработает. Там стоит "ограничение хода" на 359.999 градусов. Возникает вопрос, как проходить внутренние отверстия?

Тут есть по карйней мере 2 варианта. Первый - разбивать все дуги по квадрантам. Но при этом будут выдаваться "лишиние" кадры, и на каком-нибудь сложном профилье программа может увеличиться чуть ли не вдвое. К тому же, если ты имеешь привычку зрительно отслеживать по контрольным точкам, что же все-таки выдал пост в УП, то координаты квадрантов будут только сбивать с толку. В общем, вариант рабочий, но имеет неудобства.

Поэтому я бы посоветовал решить задачу по-другому и придать посту немного больше "интеллекта", немного усложнив логику? Если дуга полная, то выдавать в кадр интерполяции IJK, если нет - R-адрес. Для этого тебе потребуется в шаблоне круговой интерполяции задать как адреса IJK, так и R. А в своей custom_command в зависимости от значения переменной mom_arc_angle подавлять "ненужные" на данный момент адреса.

Можешь попробовать вставить в процедуру следующий код. Должно сработать.

global mom_arc_angle mom_arc_radius mom_arc_radius_signed

if {$mom_arc_angle == 360} {

MOM_suppress once <имя ТВОЕГО R-адреса>

} else {

if {$mom_arc_angle >= 180} {

set mom_arc_radius_signed [expr (-1) * $mom_arc_radius]

} else {

set mom_arc_radius_signed $mom_arc_radius

}

MOM_suppress once I J K

}

Да... И поаккуратней с if then ! Паскалевский синтаксис tcl не понимает :smile:

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

Да, сегодня стойка меня бороднула при обкатке полной окружности. Прочитав по внимательнее руководство я тоже нашел ньюансик про 359.999. Хорошо, что сегодня хороший знакомый объяснил, как правильно работает математика стойки NC210 при круговой интероляции. Оказывается, IJK должны выводиться в абсолютных значениях. Все заработало. И полную окружность проехал и сложный контур с множеством сопряжений (программа была с IJ).

Если Вам BamsiII будет не сложно не могли бы вы мне подсказать в целях самообразования, как в посте задается параметр разбития окружности на сегменты. Почему когда ставим галочку "вывод окружности по квадрантам" пост разбивает окружность на множество маленьких сегментов, хотя достаточно было бы разбить допустим на 3 сегмента? Заметил, что когда делал выборку окружности большого диаметра(D=1400мм), пост автоматически разбивал траекторию окружности на 3 сегмента. Можно ли заставить пост разбить окружность или дугу на нужное мне количество сегментов (прописав это количество в посте)?

Посмотрел Ваш последний вариан custom_command. Мне стало интересно как правильно работает MOM_suppress once. Эта мом_переменная отвечает за модальность вывода каких либо адресов? Или я ошибаюсь? Почему при условии "Если угол дуги равен 360 градусов", то сначала включаем {MOM_suppress once R}, а не {MOM_suppress once IJK}. Получается пост с помощью MOM_suppress once при дуге равной 360 град сначала отключает R и включает IJK, а после описания условия вывода знака перед R сначала отключает IJK и включает R? MOM_suppress once работает как бы зеркально? Получается при каком либо одном условии в MOM_suppress once нужно прописывать тот адрес который нужно заменить, а не тот адрес на который заменяем ?

Буду очень благодарен за любую информацию.

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

Оказывается, IJK должны выводиться в абсолютных значениях. Все заработало. И полную окружность проехал и сложный контур с множеством сопряжений (программа была с IJ).

Это хорошо, что удалось разобраться с IJ. Я пообщался с человеком, которому в свое время довелось поработать и CAM-специалистом и оператором в одном лице. Он говорит, что программирование через R-адрес удобно, когда составляешь программу прямо на станке. Если пишешь программу "на коленках", то велика вероятность ошибиться с расчетом значений IJ. Особенно, если их нужно задавать в приращениях, а не в абсолюте. В этом смысле работать с R-адресом удобней. Но с ним и проблем хватало. Поэтому пиши все через IJ - меньше горя будешь знать.

Если Вам BamsiII будет не сложно не могли бы вы мне подсказать в целях самообразования, как в посте задается параметр разбития окружности на сегменты. Почему когда ставим галочку "вывод окружности по квадрантам" пост разбивает окружность на множество маленьких сегментов, хотя достаточно было бы разбить допустим на 3 сегмента? Заметил, что когда делал выборку окружности большого диаметра(D=1400мм), пост автоматически разбивал траекторию окружности на 3 сегмента. Можно ли заставить пост разбить окружность или дугу на нужное мне количество сегментов (прописав это количество в посте)?

Не совсем ясен вопрос. О каких сегментах речь идет? Если в посте задан параметр вывода окружности по квадрантам, то пост выдаст ровно столько контрольных точек, сколько будет кадрантов в круговом перемещении. Ни больше, ни меньше. Но со "множеством маленьких сегментов" мне никогда не приходилось сталкиваться.

Было дело, когда я работал еще в NX2, то, например, при обработке какой-нибудь цилиндрической поверхности по Z-уровням при проходе инструмента в пределах одного уровня могло сгенериться несколько дуг. При чем, центры этих дуг (т.е., координаты IJ) не совпадали. Отличались на какие-то микроны, но тем не менее... Но все это происходило на уровне процессора. А вот, чтобы постпроцессор плодил большое количество дуг - с таким я не сталкивался. Здесь, не видя живого примера, сложно что-то подсказать или посоветовать.

Посмотрел Ваш последний вариан custom_command. Мне стало интересно как правильно работает MOM_suppress once. Эта мом_переменная отвечает за модальность вывода каких либо адресов? Или я ошибаюсь?

Ну, это даже не переменная, а процедура. И она (равно как и MOM_force) не то, чтобы отвечает за модальность... С помощью этих процедур ты можешь ею(модальностью) управлять. Отвечает за модальность шаблон адреса. А точнее один из его параметров - FORCE. А эти две процедуры являются инструментами, с помощью которых ты можешь, что назыается на лету, эту самую модальность изменять. Ну, например, ты задал какой-то адрес модальным. Стало быть, в УП он будет появляться в кадрах ТОЛЬКО при изменении своего значения. Но, допустим, по каким-то (одному тебе известным) причинам и по какому-то (одному тебе известному), условию тебе необходимо выдать этот адрес в кадр. Уверенности в том, что его значение изменилось нет. Поэтому процедура MOM_force - это как раз то, что нужно для этой цели. А MOM_suppress, наоборот, подавляет вывод указанных адресов в кадре. Если тебе при выполнении определенного условия нужно, чтобы некий адрес не выводился в кадре, то MOM_suppress - к твоим услугам.

Формат процедур, их параметры и как правильно их использовать лучше почитай в мануале.

Почему при условии "Если угол дуги равен 360 градусов", то сначала включаем {MOM_suppress once R}, а не {MOM_suppress once IJK}. Получается пост с помощью MOM_suppress once при дуге равной 360 град сначала отключает R и включает IJK, а после описания условия вывода знака перед R сначала отключает IJK и включает R? MOM_suppress once работает как бы зеркально? Получается при каком либо одном условии в MOM_suppress once нужно прописывать тот адрес который нужно заменить, а не тот адрес на который заменяем ?

Все несколько проще... В твоем шаблоне кругового перемещения заданы как адреса IJK, так и адрес R. Для наглядности закоментарь оба вызова процедуры MOM_suppress в своей custom_command и запусти постпроцессор. В кдарах с G2(G3) будут выводиться IJK вместе с R. Сможет твоя стойка обработать такой кадр? У меня на этот счет большие сомнения. Поэтому нужно выводить или одно, или другое. Что именно - ты определяешь своей IF-конструкцией. Потому-то, если угол 360 градусов, то "включаем" MOM_suppress R. А, если говорить точнее, то подавляем вывод адреса R. Что, собственно, при прохождении полной окружности и надо сделать. При прочих услових тебе нужно выводить адрес R, и подавлять адреса IJ (ну, и K - уж за одно с ними).

Одним словом, почитай описание процедуры, разберись с алгоритмом, и все станет понятно.

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

Спасибо за подробный ответ на все мои вопросы.

Не совсем ясен вопрос. О каких сегментах речь идет? Если в посте задан параметр вывода окружности по квадрантам, то пост выдаст ровно столько контрольных точек, сколько будет кадрантов в круговом перемещении. Ни больше, ни меньше.... Здесь, не видя живого примера, сложно что-то подсказать или посоветовать.

На счет вывода окружности по квадрантам, может у меня просто не правильное представление о квадранте и том, как пост должен выводить координаты при включении опции вывода по квадрантам.

Ниже приведу пример одной и той же программы выведенной полной окружностью и по квадрантам.

Можно ли сделать так, чтобы пост разбил окружность не на 44 части (пример 2 ниже), а на три допустим.

Получается данная окружность состоит из 44-ех квадрантов?

Пример вывода полной окружностью:

%

N1 (MIR,X)

N2 (UAO,1)

N3 T1.1 M06

N4 G90 G00 X24.712 Y3.787

N5 Z10. S0 M03

N6 Z3.

N7 G09 G01 Z0.0 F250.

N8 G09 G03 X22. Y0.0 I26. J0.0 (врезание по дуге)

N9 G09 G02 X22. Y0.0 I0.0 J0.0 (окружность)

N10 G09 G03 X24.712 Y-3.787 I26. J0.0 (вывод по дуге)

N11 G09 G01 Z3.

N12 G00 Z10.

N13 M05

N14 G00 Z30.

N15 M02

N16 M00

%

Пример вывода по квадрантам:

%

N1 (MIR,X)

N2 (UAO,1)

N3 T1.1 M06

N4 G90 G00 X24.712 Y3.787

N5 Z10. S0 M03

N6 Z3.

N7 G09 G01 Z0.0 F250.

N8 G09 G03 X23.598 Y3.236 I26. J0.0 (врезание по дуге)

N9 G09 G03 X22.723 Y2.346 I26. J0.0

N10 G09 G03 X22.163 Y1.232 I26. J0.0

N11 G09 G03 X22. Y0.0 I26. J0.0

N12 G09 G02 X21.795 Y-3.208 I0.0 J0.0 (окружность)

N13 G09 G02 X21.096 Y-6.347 I0.0 J0.0

N14 G09 G02 X19.947 Y-9.351 I0.0 J0.0

N15 G09 G02 X18.373 Y-12.155 I0.0 J0.0

N16 G09 G02 X16.407 Y-14.701 I0.0 J0.0

N17 G09 G02 X14.092 Y-16.933 I0.0 J0.0

N18 G09 G02 X11.476 Y-18.805 I0.0 J0.0

N19 G09 G02 X8.616 Y-20.275 I0.0 J0.0

N20 G09 G02 X5.572 Y-21.314 I0.0 J0.0

N21 G09 G02 X2.409 Y-21.898 I0.0 J0.0

N22 G09 G02 X-.805 Y-22.015 I0.0 J0.0

N23 G09 G02 X-4.001 Y-21.664 I0.0 J0.0

N24 G09 G02 X-7.113 Y-20.85 I0.0 J0.0

N25 G09 G02 X-10.073 Y-19.592 I0.0 J0.0

N26 G09 G02 X-12.818 Y-17.917 I0.0 J0.0

N27 G09 G02 X-15.29 Y-15.859 I0.0 J0.0

N28 G09 G02 X-17.437 Y-13.464 I0.0 J0.0

N29 G09 G02 X-19.211 Y-10.782 I0.0 J0.0

N30 G09 G02 X-20.576 Y-7.87 I0.0 J0.0

N31 G09 G02 X-21.503 Y-4.79 I0.0 J0.0

N32 G09 G02 X-21.971 Y-1.608 I0.0 J0.0

N33 G09 G02 X-21.971 Y1.608 I0.0 J0.0

N34 G09 G02 X-21.503 Y4.79 I0.0 J0.0

N35 G09 G02 X-20.576 Y7.87 I0.0 J0.0

N36 G09 G02 X-19.211 Y10.782 I0.0 J0.0

N37 G09 G02 X-17.437 Y13.464 I0.0 J0.0

N38 G09 G02 X-15.29 Y15.859 I0.0 J0.0

N39 G09 G02 X-12.818 Y17.917 I0.0 J0.0

N40 G09 G02 X-10.073 Y19.592 I0.0 J0.0

N41 G09 G02 X-7.113 Y20.85 I0.0 J0.0

N42 G09 G02 X-4.001 Y21.664 I0.0 J0.0

N43 G09 G02 X-.805 Y22.015 I0.0 J0.0

N44 G09 G02 X2.409 Y21.898 I0.0 J0.0

N45 G09 G02 X5.572 Y21.314 I0.0 J0.0

N46 G09 G02 X8.616 Y20.275 I0.0 J0.0

N47 G09 G02 X11.476 Y18.805 I0.0 J0.0

N48 G09 G02 X14.092 Y16.933 I0.0 J0.0

N49 G09 G02 X16.407 Y14.701 I0.0 J0.0

N50 G09 G02 X18.373 Y12.155 I0.0 J0.0

N51 G09 G02 X19.947 Y9.351 I0.0 J0.0

N52 G09 G02 X21.096 Y6.347 I0.0 J0.0

N53 G09 G02 X21.795 Y3.208 I0.0 J0.0

N54 G09 G02 X22. Y0.0 I0.0 J0.0

N55 G09 G03 X22.163 Y-1.232 I26. J0.0 (вывод по дуге)

N56 G09 G03 X22.723 Y-2.346 I26. J0.0

N57 G09 G03 X23.598 Y-3.236 I26. J0.0

N58 G09 G03 X24.712 Y-3.787 I26. J0.0

N59 G09 G01 Z3.

N60 G00 Z10.

N61 M05

N62 G00 Z30.

N63 M02

N64 M00

%

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

На счет вывода окружности по квадрантам, может у меня просто не правильное представление о квадранте и том, как пост должен выводить координаты при включении опции вывода по квадрантам.

Совершенно неправильное!

КВАДРАНТ, в плоскостной геометрии - четверть круга, ограниченная радиусами, расположенными под прямым углом друг к другу, и дугой окружности.

Окружность состоит из ЧЕТЫРЕХ квадрантов. А 44 - многовато будет...

В терминах nc-программирования разбиение полного кругового перемещения по квадрантам означает, что постпроцессор выдаст ЧЕТЫРЕ кадра G2/G3 вместо одного. Координаты контрольных точек в этих кадрах будут определяться пересечением "вертикального" и "горизонтального" диаметров окружности с дугой этой же окружности.

В твоем примере - это будут точки с координатами (X22;Y0), (X0;Y-22), (X-22;Y0), (X0;Y22).

Если средствами Post Builder'а пишешь пост, в котором круговую интерполяцию нужно делить по квадрантам, то путь следующий:

Prorgam&Tool Path -> Program -> Tool Path -> Motion -> Circular Move

Щелкаешь по этому маркеру, находишь две радио-кнопки: Full Circle и Quadrant. Соответственно, выбираешь нужный себе вариант. И все должно правильно работать. Не знаю я откуда у тебя берутся 44 круговых перемещения. На всякий случай скажи, какая версия твоего билдера? Только, думается мне, что не в посте тут дело. Ну, не может он одну окружность так покрошить!!!

Ты когда в Manufacturing'е генерируешь обработку, у тебя точно этот проход за один кадр делается? Может быть уже здесь эти короткие дуги получаются? Если так, то не надо терзать пост по этому поводу. Скажи в какой версии NX работаешь, какой используешь вид обработки и опции при этом задаешь?

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

Совершенно неправильное!

КВАДРАНТ, в плоскостной геометрии - четверть круга, ограниченная радиусами, расположенными под прямым углом друг к другу, и дугой окружности.

Окружность состоит из ЧЕТЫРЕХ квадрантов. А 44 - многовато будет...

В терминах nc-программирования разбиение полного кругового перемещения по квадрантам означает, что постпроцессор выдаст ЧЕТЫРЕ кадра G2/G3 вместо одного. Координаты контрольных точек в этих кадрах будут определяться пересечением "вертикального" и "горизонтального" диаметров окружности с дугой этой же окружности.

В твоем примере - это будут точки с координатами (X22;Y0), (X0;Y-22), (X-22;Y0), (X0;Y22).

Если средствами Post Builder'а пишешь пост, в котором круговую интерполяцию нужно делить по квадрантам, то путь следующий:

Prorgam&Tool Path -> Program -> Tool Path -> Motion -> Circular Move

Щелкаешь по этому маркеру, находишь две радио-кнопки: Full Circle и Quadrant. Соответственно, выбираешь нужный себе вариант. И все должно правильно работать. Не знаю я откуда у тебя берутся 44 круговых перемещения. На всякий случай скажи, какая версия твоего билдера? Только, думается мне, что не в посте тут дело. Ну, не может он одну окружность так покрошить!!!

Ты когда в Manufacturing'е генерируешь обработку, у тебя точно этот проход за один кадр делается? Может быть уже здесь эти короткие дуги получаются? Если так, то не надо терзать пост по этому поводу. Скажи в какой версии NX работаешь, какой используешь вид обработки и опции при этом задаешь?

Я себе и представлял, что выбирая опцию вывода по квадрантам окружность должна была быть разбита на 4 части. Именно здесь Prorgam&Tool Path -> Program -> Tool Path -> Motion -> Circular Move я и ставил галочку "квадрант" (я пользуюсь Post Builder на русском языке). Но после того как пост выдал такой резьлтат (пример с 44 дугами и множество примеров до этого с разным количеством дуг), я и подумал может я чего не допонимаю. Вот и спросил про квадранты и как избавиться от такого количества разбиений.

Пользуюсь NX6 и NX7 Чаще NX6. Соответственно и Post Builder6 (проверял на NX7 такой же резьльтат)

Опишу все свои шаги:

Создаю новый пост. Прописываю соответственно все функции мне требуемые. Если открыть Prorgam&Tool Path -> Program -> Tool Path -> Motion -> Circular Move у меня по умолчанию не стоит вообще никакой галочки ни на "Полная окружность" ни на "квадрант". При таком варианте пост выдает полную окружность. Если я ставлю галочку на "квадрант", то получаю разбиение окружности на множество дуг. Что мне совсем не понятно, так это то, что когда я ставлю галочку на "Полная окружность" пост один хрен разбивает окружность на дуги.(естественно я пересохранял пост после каждого действия) Все сбрасывается только после того, как во вкладке "инструмент" в "вывод круговых записей" сначала ставим "нет" а потом "да". И если после этого действия вернуться в Prorgam&Tool Path -> Program -> Tool Path -> Motion -> Circular Move все галочки исчезают и пост опять выводит полную окружность.

Может это глюк Post Builder?

Что касается операции, то пример приведенный выше был выполнен в Mill_Planar операция Planar_Profile. В "управлении станком" стоял пункт "Круговая перпендикулярно ОИ".

Я больше склоняюсь к мнению о неправильной работе поста. Может я и не прав.

Есть ли такая возможность, чтобы я выслал вам пост по электронке, а вы бы посмотрели как он работает у вас?

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

Вопрос "Почему пост разбивает окружность на множество дуг?" СНЯТ.

Дело было в PostBuildere, точнее в том, что он не корректно работает на русском языке. Получалось, что PostBuilder в TCL файле поста в set mom_kin_arc_output_mode вместо QUADRANT прописывал какую-то ерунду иероглифами.

Пересохранил пост в PostBuildere на английском и все заработало.

BamsiII большое спасибо за помощь!

Всем успехов в новом 2010 году!

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

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

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

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

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

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

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

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

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

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

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



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