Jump to content

XBuid Логический оператор AND


Recommended Posts

doodoroff

Здравствуйте !

Недавно жизнь заставила заняться написанием постпроцессора для электро-эрозионного станка. В Xbuild пишу такой код:

<IF>[and (lt(_X,0), lt(_Y,0), lt(_I,0), lt(_J,0))]<THEN>
    <32>----
<ENDIF>

Переменные _X, _Y, _I, _J - это значения соответствующих координат.

Так вот: я заметил, что в операции логического сравнения "and" участвуют только первые 2 аргумента выражения (lt(_X,0) и lt(_Y,0)), а 2 остальных игнорируются, как если бы у меня было написано:

<IF>[and (lt(_X,0), lt(_Y,0))]<THEN>
    <32>----
<ENDIF>

Строка компилируется без ошибок и в сгенерированном коде выводится результат логического выражения только для первых двух аргументов. Т. е. в строку сгенерированного кода выпадут все варианты для -X и -Y:

... ----  ---+  --+-  --++

Подскажите: это нормально ? "and" работает только с двумя аргументами, а остальные игнорятся ? Или я что-то делаю не правильно ?

 

P.S. вариант

<IF>[and (lt(<X-COORD>,0), lt(<Y-COORD>,0), lt(<ARC-X>,0), lt(<ARC-Y>,0))]<THEN>
    <32>----
<ENDIF>

пробовал - тот же результат. 

Link to post
Share on other sites


UnPinned posts
mannul

@doodoroff Логическое И не обрабатывает все что справа если натыкается на ложь.

У вас видимо Y>0 или Y=0, на этом все и заканчивается.

Edited by mannul
Link to post
Share on other sites
doodoroff

<IF>[and (lt(_X,0), lt(_Y,0), lt(_I,0), lt(_J,0))]<THEN>
    <32>----
<ENDIF>

На сколько я понимаю в этом коде должна реализовываться следующая логика:

ЕСЛИ у всех 4 аргументов логического выражения and значение="истина", то вывести "----". Если Y>0 или Y=0, то and возвращает "ложь" и оператор IF не выполняется, т.е. не выводится ничего.

А у меня два последних аргумента вообще игнорируются с любыми значениями.

Вот фрагмент кода:

<IF>[and (lt(_X,0), lt(_Y,0), lt(_I,0), lt(_J,0))]<THEN> //1
	<32>----
<ENDIF>
<IF>[and (lt(_X,0), lt(_Y,0), lt(_I,0), ge(_J,0))]<THEN> //2
	<32>---+
<ENDIF>
<IF>[and (lt(_X,0), lt(_Y,0), ge(_I,0), lt(_J,0))]<THEN> //3
	<32>--+-
<ENDIF>
<IF>[and (lt(_X,0), lt(_Y,0), ge(_I,0), ge(_J,0))]<THEN> //4
	<32>--++
<ENDIF>
<IF>[and (lt(_X,0), ge(_Y,0), lt(_I,0), lt(_J,0))]<THEN> //5
	<32>-+--
<ENDIF>
<IF>[and (lt(_X,0), ge(_Y,0), lt(_I,0), ge(_J,0))]<THEN> //6
	<32>-+-+
<ENDIF>
<IF>[and (lt(_X,0), ge(_Y,0), ge(_I,0), lt(_J,0))]<THEN> //7
	<32>-++-
<ENDIF>
<IF>[and (lt(_X,0), ge(_Y,0), ge(_I,0), ge(_J,0))]<THEN> //8
	<32>-+++
<ENDIF>
<IF>[and (ge(_X,0), lt(_Y,0), lt(_I,0), lt(_J,0))]<THEN> //9
	<32>+---
<ENDIF>
<IF>[and (ge(_X,0), lt(_Y,0), lt(_I,0), ge(_J,0))]<THEN> //10
	<32>+--+
<ENDIF>
<IF>[and (ge(_X,0), lt(_Y,0), ge(_I,0), lt(_J,0))]<THEN> //11
	<32>+-+-
<ENDIF>
<IF>[and (ge(_X,0), lt(_Y,0), ge(_I,0), ge(_J,0))]<THEN> //12
	<32>+-++
<ENDIF>
<IF>[and (ge(_X,0), ge(_Y,0), lt(_I,0), lt(_J,0))]<THEN> //13
	<32>++--
<ENDIF>
<IF>[and (ge(_X,0), ge(_Y,0), lt(_I,0), ge(_J,0))]<THEN> //14
	<32>++-+
<ENDIF>
<IF>[and (ge(_X,0), ge(_Y,0), ge(_I,0), lt(_J,0))]<THEN> //15
	<32>+++-
<ENDIF>
<IF>[and (ge(_X,0), ge(_Y,0), ge(_I,0), ge(_J,0))]<THEN> //16
	<32>++++
<ENDIF>

Вот пример:

R2yzR7c

В примере должен выводиться только текст в красной рамке

Вопрос тот же: AND в XBuild может обрабатывать больше 2-х аргументов ? Или я что-то не правильно делаю ?

3 минуты назад, doodoroff сказал:

<IF>[and (lt(_X,0), lt(_Y,0), lt(_I,0), lt(_J,0))]<THEN>
    <32>----
<ENDIF>

На сколько я понимаю в этом коде должна реализовываться следующая логика:

ЕСЛИ у всех 4 аргументов логического выражения and значение="истина", то вывести "----". Если Y>0 или Y=0, то and возвращает "ложь" и оператор IF не выполняется, т.е. не выводится ничего.

А у меня два последних аргумента вообще игнорируются с любыми значениями.

Вот фрагмент кода:


<IF>[and (lt(_X,0), lt(_Y,0), lt(_I,0), lt(_J,0))]<THEN> //1
	<32>----
<ENDIF>
<IF>[and (lt(_X,0), lt(_Y,0), lt(_I,0), ge(_J,0))]<THEN> //2
	<32>---+
<ENDIF>
<IF>[and (lt(_X,0), lt(_Y,0), ge(_I,0), lt(_J,0))]<THEN> //3
	<32>--+-
<ENDIF>
<IF>[and (lt(_X,0), lt(_Y,0), ge(_I,0), ge(_J,0))]<THEN> //4
	<32>--++
<ENDIF>
<IF>[and (lt(_X,0), ge(_Y,0), lt(_I,0), lt(_J,0))]<THEN> //5
	<32>-+--
<ENDIF>
<IF>[and (lt(_X,0), ge(_Y,0), lt(_I,0), ge(_J,0))]<THEN> //6
	<32>-+-+
<ENDIF>
<IF>[and (lt(_X,0), ge(_Y,0), ge(_I,0), lt(_J,0))]<THEN> //7
	<32>-++-
<ENDIF>
<IF>[and (lt(_X,0), ge(_Y,0), ge(_I,0), ge(_J,0))]<THEN> //8
	<32>-+++
<ENDIF>
<IF>[and (ge(_X,0), lt(_Y,0), lt(_I,0), lt(_J,0))]<THEN> //9
	<32>+---
<ENDIF>
<IF>[and (ge(_X,0), lt(_Y,0), lt(_I,0), ge(_J,0))]<THEN> //10
	<32>+--+
<ENDIF>
<IF>[and (ge(_X,0), lt(_Y,0), ge(_I,0), lt(_J,0))]<THEN> //11
	<32>+-+-
<ENDIF>
<IF>[and (ge(_X,0), lt(_Y,0), ge(_I,0), ge(_J,0))]<THEN> //12
	<32>+-++
<ENDIF>
<IF>[and (ge(_X,0), ge(_Y,0), lt(_I,0), lt(_J,0))]<THEN> //13
	<32>++--
<ENDIF>
<IF>[and (ge(_X,0), ge(_Y,0), lt(_I,0), ge(_J,0))]<THEN> //14
	<32>++-+
<ENDIF>
<IF>[and (ge(_X,0), ge(_Y,0), ge(_I,0), lt(_J,0))]<THEN> //15
	<32>+++-
<ENDIF>
<IF>[and (ge(_X,0), ge(_Y,0), ge(_I,0), ge(_J,0))]<THEN> //16
	<32>++++
<ENDIF>

Вот пример:

R2yzR7c

В примере должен выводиться только текст в красной рамке

Вопрос тот же: AND в XBuild может обрабатывать больше 2-х аргументов ? Или я что-то не правильно делаю ?

Вот ссылка на картинку с примером

https://ibb.co/R2yzR7c

Link to post
Share on other sites
mannul

@doodoroff Было бы гораздо проще, если бы вы прикрепили проект, пост и написали что хотите сделать.

По вашей картинке выводит вообще всё.

Link to post
Share on other sites
2 часа назад, doodoroff сказал:

Вопрос тот же: AND в XBuild может обрабатывать больше 2-х аргументов ?

 

Нет. По-моему, требуемое реализуется просто:

<32>
<IF>[lt(<X-COORD>,0)]<THEN>-<ELSE>+<ENDIF>
<IF>[lt(<Y-COORD>,0)]<THEN>-<ELSE>+<ENDIF>
<IF>[lt(<ARC-X>,0)]<THEN>-<ELSE>+<ENDIF>
<IF>[lt(<ARC-Y>,0)]<THEN>-<ELSE>+<ENDIF>
<EOB>

 

  • Нравится 1
Link to post
Share on other sites
doodoroff
6 часов назад, mannul сказал:

@doodoroff Было бы гораздо проще, если бы вы прикрепили проект, пост и написали что хотите сделать.

По вашей картинке выводит вообще всё.

Ну я, наверно, вопрос сформулировал избыточно сложно. Я узнать хотел у опытных разработчиков, может ли and обрабатывать больше 2-х аргументов.

 

5 часов назад, Helg сказал:

Нет. По-моему, требуемое реализуется просто:


<32>
<IF>[lt(<X-COORD>,0)]<THEN>-<ELSE>+<ENDIF>
<IF>[lt(<Y-COORD>,0)]<THEN>-<ELSE>+<ENDIF>
<IF>[lt(<ARC-X>,0)]<THEN>-<ELSE>+<ENDIF>
<IF>[lt(<ARC-Y>,0)]<THEN>-<ELSE>+<ENDIF>
<EOB>

 

Спасибо !

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    No registered users viewing this page.



  • Сообщения

    • Slay_avia
      https://fex.net/s/dsmkxsf      ключ  dsmkxsf без результатов   - время решения  примерно 25 мин    версия 20,1  - какаю скачал, да и ломается  она просто   признаюсь сразу  проверьте материал,  без  пластики  задача  вообще  не решается (в результатах полная ЧУШЬ) задал  пластику материала  как смог   @DrWatson   то о чем вы говорите   имеет место, если  решать  половинку задач.   те  крепить  за  двутавр а  нагружать  полозья,   - решал  такое  в качестве  теста   https://fex.net/s/1oldxtf   1oldxtf   всем спасибо  за терпение я  на работу, там у меня инета  нет, буду вечером      
    • DVAS
      @Metal_Cutter Что-то у меня пошло не так, постпроцессор работает. Спасибо.
    • Udav817
      Смотря для чего самолётик.  Впрочем, продувочные модели не делают из пластика, тем более литьём. Если это конструктора, которые хорошо закончили дизайнерские курсы и пихнули их туда не потому, что избавиться хотели как от конструктора. но... нет, сынок, это фантастика.
    • Udav817
      У нас скачивается. Вручную. msi-файл. Но не ставится.   А у вас дома какая версия? скорее всего не вариант, потому что откат может другие программы зацепить. и собирай потом ещё с десяток глюков вместо одного.   мы тоже уже не видим других вариантов. Айтишники, насколько я понимаю, сейчас делают "формальную работу", чтобы потом аргументированно известить руководство, что других способов не осталось.
    • Udav817
      Я и не утверждаю, что это хорошо. Самое страшное - полстраны уже привыкли и их это не волнует.
    • DVAS
      То, что Вы отправили - пробовал. Даже 2 раза скачивал. И программа вывелась с пропущенными переменными. Подпрограмму писал сам,  поэтому 9 переменных, но работает.
    • GrandArmand
      Как раз сейчас занимаюсь упрощением модели. Убираю скругления и ненужные отверстия. 
    • Shvg
      Попробуй эту программку. Когда то у меня была почти аналогичная задача. Перекомпилировал старый вариант. Кнопкой "Test" выводится список всех "не плоских" граней. Работает для SolidBody и SheetBody. SW_PlanarFace.rar
    • DrWatson
      Проект в 2020 версии, нужно предупреждать, не у всех под рукой есть эта версия. А вообще результаты усилий кажутся очень странными. Не претендую на эксперта, но в нижнем ряду шариков наиболее нагруженным будет первый (там, где -243) и третий-четвертый.  В верхнем ряду аналогично. Второй- третий должны быть самыми нагруженными. Тестовая модель показала примерно такую картину. Сделал просто длинную солидовую балку, шарики сделал кубиками с площадками контактов, контакты - нелинейными с минимальным трением. Если что-то не так, добрые люди поправят.  
    • Ветерок
×
×
  • Create New...