правильный синтаксис условия IF

Mach, популярные и не очень CAD, CAM. Обсуждение и разработка программ для управления станками.
hohol_62
Кандидат
Сообщения: 50
Зарегистрирован: 06 мар 2020, 12:17
Репутация: 1
Настоящее имя: Сергей
Контактная информация:

правильный синтаксис условия IF

Сообщение hohol_62 »

пробую написать програму с условием, mach3 меня не понимает, помогите разобраться в чем проблема?

#1=[2240.0] ;(максимальное перемещение по Y)
#2=[3370.0] ;(максимальное перемещение по X)
#3=[10.0] ;(смещение по X)
#4=[15.0] ;(смещение по Y)
#5=[-1.1] ;(глубина по оси Z)
#8=[2500.0] ; (рабочая подача)


G91G0X[[0-#2]/2]Y[[0-#1]/2]z20
G91G1Z#5F200

#6=#3
#7=#4

G90G1X[0-#3]F#8
G90G1Y#4F#8

N1

#6=[#6+#3]
#7=[#7+#4]

G90G1X#6F#8
G90G1Y[0-#7]F#8
G90G1X[0-#6]F#8
G90G1Y#7F#8

IF[#6LT#2]GOTO N2

N2 IF[#7LT#1]GOTO N1

G91G1X0F#8
G91G1Y0F#8
G91G1X#2F#8
G91G1Y#1F#8

G91G0z20
G91G0x0Y0

M30
hohol_62
Кандидат
Сообщения: 50
Зарегистрирован: 06 мар 2020, 12:17
Репутация: 1
Настоящее имя: Сергей
Контактная информация:

Re: правильный синтаксис условия IF

Сообщение hohol_62 »

всем спасибо, справился без условий (функция IF), но хотелось бы найти эту функцию для MACH3, иногда очень нужно, если кто знает, отзовитесь, пожалуйста!

или дайте ссылку на руководство по программированию (там где это есть)

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

#1=[2240.0] ;(максимальное перемещение по Y)
#2=[3370.0] ;(максимальное перемещение п о X)
#3=[15.0] ;(смещение по X)
#4=[10.0] ;(смещение по Y)
#5=[-1.1] ;(глубина по оси Z)
#8=[2500.0] ; (рабочая подача)

#9=[0.0]
#10=[0.0]
#11=[0.0]
#12=[0.0]

G90G0X[[0-#2]/2]Y[[0-#1]/2]z20
G90G1Z#5F200



M98P1L[[#1/#4]/2]

G90G0z20
G90G0x0Y0

M30

O1


G91
#9=[#9+#3]
G1X#9F#8
#10=[#10+#4]
G1Y#10F#8
#9=[[#9-[#9*2]]-#3]
G1X#9F#8
#10=[[#10-[#10*2]]-#4]
G1Y#10F#8
#9=[#9+[#9*-2]]
#10=[#10+[#10-2]]

M99
hohol_62
Кандидат
Сообщения: 50
Зарегистрирован: 06 мар 2020, 12:17
Репутация: 1
Настоящее имя: Сергей
Контактная информация:

Re: правильный синтаксис условия IF

Сообщение hohol_62 »

подниму темку,
неужели никто не пользуется параметрическим программированием?

вопрос по условному и безусловному переходу открыт, и добавился вопрос по округлению числа в большую или меньшую сторону, тк просто округлить число меня не устраивает- может получиться 0 или 1, а хотелось бы точно знать, что будет 0 или 1.
Аватара пользователя
RNDL
Опытный
Сообщения: 176
Зарегистрирован: 06 июн 2018, 18:29
Репутация: 66
Контактная информация:

Re: правильный синтаксис условия IF

Сообщение RNDL »

Раньше, когда не было CAM, тоже писал параметрические программы на мач. В инструкции к мач не нашел ничего про условные переходы. А после приобретения спрут кам забыл про параметрическое программирование
hohol_62
Кандидат
Сообщения: 50
Зарегистрирован: 06 мар 2020, 12:17
Репутация: 1
Настоящее имя: Сергей
Контактная информация:

Re: правильный синтаксис условия IF

Сообщение hohol_62 »

у меня заморочка с раскладкой фасадов (кухонных допустим) на плоскости листа (есть такая же парам програмка с запросом во внешние подпрограммы, написанные в G91).
я тоже пользуюсь многими камами, но есть узкие задачки, которые проще сделать (читай-правильнее) через параметры
Аватара пользователя
RNDL
Опытный
Сообщения: 176
Зарегистрирован: 06 июн 2018, 18:29
Репутация: 66
Контактная информация:

Re: правильный синтаксис условия IF

Сообщение RNDL »

hohol_62 писал(а): есть узкие задачки, которые проще сделать (читай-правильнее) через параметры
Да, полностью согласен. Ну может быть мач не особо заточен под это. Тут ничем не смогу помочь.
На Сименсе, например, можно условия задавать и возвращаться к определенному кадру. Но это так, к делу не относится
hohol_62
Кандидат
Сообщения: 50
Зарегистрирован: 06 мар 2020, 12:17
Репутация: 1
Настоящее имя: Сергей
Контактная информация:

Re: правильный синтаксис условия IF

Сообщение hohol_62 »

с сименсами тоже регулярно "общаюсь", жаль что мяч не сименс)))
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: правильный синтаксис условия IF

Сообщение Serg »

hohol_62 писал(а): вопрос по условному и безусловному переходу открыт, и добавился вопрос по округлению числа в большую или меньшую сторону, тк просто округлить число меня не устраивает- может получиться 0 или 1, а хотелось бы точно знать, что будет 0 или 1.
Точно знать до укругления?.. :thinking:
Что за операция такая "просто округлить"?
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
hohol_62
Кандидат
Сообщения: 50
Зарегистрирован: 06 мар 2020, 12:17
Репутация: 1
Настоящее имя: Сергей
Контактная информация:

Re: правильный синтаксис условия IF

Сообщение hohol_62 »

я имел ввиду эти функции:

Таблица 10.1. Основные арифметические и логические команды

Функция-=-Формат

Абсолютное значение-=- #c=ABS[#b]
Округление-=-#c=ROUND[#b]

хотя, их тоже может не быть в мяч... еще не пробовал (в CIMCO отрабатываются)
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: правильный синтаксис условия IF

Сообщение Serg »

hohol_62 писал(а): Абсолютное значение-=- #c=ABS[#b]
Округление-=-#c=ROUND[#b]
ABS - абсолютное значение числа, т.е. без знака. К округлению не имеет никакого отношения.
ROUND - собственно округление. Округления бывают разные: https://ru.wikipedia.org/wiki/%D0%9E%D0 ... 0%B8%D0%B5
В Mach3 (если верить документации) ROUND() - это округление до ближайшего целого, значит всё, что меньше N.5 даст N, а всё, что больше или равно N.5 даст N+1. Вот такое вот прогнозирование.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
hohol_62
Кандидат
Сообщения: 50
Зарегистрирован: 06 мар 2020, 12:17
Репутация: 1
Настоящее имя: Сергей
Контактная информация:

Re: правильный синтаксис условия IF

Сообщение hohol_62 »

Serg писал(а): 16 фев 2021, 18:21 В Mach3 (если верить документации)
есть документ по программированию именно мяч?
Serg писал(а): 16 фев 2021, 18:21 Округления бывают разные:
я про это и спрашивал: нужно, чтобы округление работало стабильно, те округляло либо постоянно в большую сторону, либо постоянно в меньшую. (при N=N.0 оставалось целым числом, при N отличном от N.0 округлялось либо до N+1, либо до N)

это нужно для расчета кол-ва повторений, зависящих от вводимого параметра, допустим есть прямоугольник, в который нужно вписать рисунок в виде диагональной сетки с шагом и началом на середине нижней стороны.
IMG_0799[1].JPG (2264 просмотра) <a class='original' href='./download/file.php?id=192382&sid=2a0fc20405bf4e4e7f5299d09fb223c0&mode=view' target=_blank>Загрузить оригинал (1.29 МБ)</a>
при d=45 получим координату по y=a/2 (равнобедренный) и, из получившегося можем вычислить кол-во таких диагональных линий, на высоте b, но можно нарваться на неверное округление и выйти за пределы прямоугольника
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: правильный синтаксис условия IF

Сообщение Serg »

hohol_62 писал(а): округляло либо постоянно в большую сторону
ROUND(N+0.5)
hohol_62 писал(а): либо постоянно в меньшую.
ROUND(N-0.5)

Это не Mach, это математика примерно 4 класса.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Kachik
Мастер
Сообщения: 1406
Зарегистрирован: 13 янв 2017, 16:22
Репутация: 308
Настоящее имя: Сергей
Откуда: Питер
Контактная информация:

Re: правильный синтаксис условия IF

Сообщение Kachik »

hohol_62 писал(а): есть документ по программированию именно мяч?
Вот официальный мануал по скриптам:
VBScript_Commands.pdf
(717.74 КБ) 304 скачивания
Отбрасывание дробной части есть, а вот ROUND, что-то не видать...
hohol_62
Кандидат
Сообщения: 50
Зарегистрирован: 06 мар 2020, 12:17
Репутация: 1
Настоящее имя: Сергей
Контактная информация:

Re: правильный синтаксис условия IF

Сообщение hohol_62 »

#1=5 ;GLUBINA

#9=100 ;SHIRINA
#10=2000 ;VISOTA

#12=100 ;SHAG
#13=45 ;UGOL NAKLONA

#15=[[COS[#13]]*[#12]]; SHAG VDOL Y
#14=[ABS[ROUND[[[#10]-[#9]]/[#15]]]] ;KOL-VO DLINNIH LINIJ

#5=200
#6=2000

#7=10
#8=10

G90

G0Z50
G0X0Y0

G91

M3S22000

G0X0Y0

G90
G1Z#1F#5
G91
F#6

X[0-[#9]]
Y[0-[#10]]
X[#9]
Y[#10]
X[0-[#9]]

G90
G0Z[#7+#8]
G91

X[[#9]/2]

M98P1L#14

Y[0-[#15]]

M98P2L#14

G0Z50M5
G0X0Y0

M30

O1

G90
G0Z[#7+#8]
G91

G0X[[#9]/2]Y[0-[TAN[#13]]*[[#9]/2]]

G90
G1Z#1F#5
G91

F#6

X[0-[#9]/2]Y[[TAN[#13]]*[[#9]/2]]
X[0-[#9]/2]Y[0-[TAN[#13]]*[[#9]/2]]

G90
G0Z[#7+#8]
G91

X[[#9]/2]Y[TAN[#13]]*[[#9]/2]

Y[0-#15]

M99

O2

G90
G0Z[#7+#8]
G91

G0X[[#9]/2]Y[[TAN[#13]]*[[#9]/2]]

G90
G1Z#1F#5
G91

F#6

X[0-[#9]/2]Y[0-[TAN[#13]]*[[#9]/2]]
X[0-[#9]/2]Y[[TAN[#13]]*[[#9]/2]]

G90
G0Z[#7+#8]
G91

X[[#9]/2]Y[0-[TAN[#13]]*[[#9]/2]]

Y#15

M99
Аватара пользователя
Kachik
Мастер
Сообщения: 1406
Зарегистрирован: 13 янв 2017, 16:22
Репутация: 308
Настоящее имя: Сергей
Откуда: Питер
Контактная информация:

Re: правильный синтаксис условия IF

Сообщение Kachik »

Подправил, в двух строчках были ошибки с расстановкой квадратных скобок - теперь не ругается и всё работает.
получается ROUND работает - значит у меня был мануал старый/неполный :thinking:
(для просмотра содержимого нажмите на ссылку)

Код: Выделить всё

#1=5 ;GLUBINA

#9=100 ;SHIRINA
#10=2000 ;VISOTA

#12=100 ;SHAG
#13=45 ;UGOL NAKLONA

#15=[[COS[#13]]*[#12]]; SHAG VDOL Y
#14=[ABS[ROUND[[[#10]-[#9]]/[#15]]]] ;KOL-VO DLINNIH LINIJ

#5=200
#6=2000

#7=10
#8=10

G90

G0Z50
G0X0Y0

G91

M3S22000

G0X0Y0

G90
G1Z#1F#5
G91
F#6

X[0-[#9]]
Y[0-[#10]]
X[#9]
Y[#10]
X[0-[#9]]

G90
G0Z[#7+#8]
G91

X[[#9]/2]

M98P1L#14

Y[0-[#15]]

M98P2L#14

G0Z50M5
G0X0Y0

M30

O1

G90
G0Z[#7+#8]
G91

G0X[[#9]/2]Y[[TAN[#13]]*[[#9]/2]]

G90
G1Z#1F#5
G91

F#6

X[0-[#9]/2]Y[[TAN[#13]]*[[#9]/2]]
X[0-[#9]/2]Y[0-[TAN[#13]]*[[#9]/2]]

G90
G0Z[#7+#8]
G91

X[[#9]/2]Y[[TAN[#13]]*[[#9]/2]]

Y[0-#15]

M99

O2

G90
G0Z[#7+#8]
G91

G0X[[#9]/2]Y[[TAN[#13]]*[[#9]/2]]

G90
G1Z#1F#5
G91

F#6

X[0-[#9]/2]Y[0-[TAN[#13]]*[[#9]/2]]
X[0-[#9]/2]Y[[TAN[#13]]*[[#9]/2]]

G90
G0Z[#7+#8]
G91

X[[#9]/2]Y[0-[TAN[#13]]*[[#9]/2]]

Y#15

M99
hohol_62
Кандидат
Сообщения: 50
Зарегистрирован: 06 мар 2020, 12:17
Репутация: 1
Настоящее имя: Сергей
Контактная информация:

Re: правильный синтаксис условия IF

Сообщение hohol_62 »

Kachik писал(а): 17 фев 2021, 08:56 Вот официальный мануал по скриптам:VBScript_Commands.pdf

Отбрасывание дробной части есть, а вот ROUND, что-то не видать...
спасибо, покурю.

да, торопился, скобок лишних наставил, но суть не в этом
Аватара пользователя
Kachik
Мастер
Сообщения: 1406
Зарегистрирован: 13 янв 2017, 16:22
Репутация: 308
Настоящее имя: Сергей
Откуда: Питер
Контактная информация:

Re: правильный синтаксис условия IF

Сообщение Kachik »

Во нашёл, упоминание про ROUND в описании для составления макросов, тут более поздний мануал и соответственно он полнее.
Mach3_V3.x_Macro_Prog_Ref.pdf
(330.87 КБ) 168 скачиваний
steals_y2k
Мастер
Сообщения: 938
Зарегистрирован: 29 окт 2017, 14:08
Репутация: 60
Настоящее имя: Makc
Откуда: Ярославль
Контактная информация:

Re: правильный синтаксис условия IF

Сообщение steals_y2k »

вот вроде g-code стандарт, но у lcnc несколько иначе всё.
то же округление вверх fup[].
Grompel писал(а): Учиться и учиться. Для меня все это пока так сложно )
штук 60-90 программ параметрических под различные рисунки заметно улучшают понимание))
заодно и курс геометрии вспоминается.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: правильный синтаксис условия IF

Сообщение Serg »

steals_y2k писал(а): вот вроде g-code стандарт, но у lcnc несколько иначе всё.
то же округление вверх fup[].
RS274/NGC - Recomended Standard.
Отличия LinuxCNC от этого стандарта: http://linuxcnc.org/docs/devel/html/gcode/rs274ngc.html
Все три варианта округления есть.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
steals_y2k
Мастер
Сообщения: 938
Зарегистрирован: 29 окт 2017, 14:08
Репутация: 60
Настоящее имя: Makc
Откуда: Ярославль
Контактная информация:

Re: правильный синтаксис условия IF

Сообщение steals_y2k »

Serg писал(а): Отличия LinuxCNC от этого стандарта:
там нет списка отличающихся команд.
не спорю о вариантах, разное название=ограниченная совместимость.
Ответить

Вернуться в «Windows / Mach»