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

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

Коллеги, может кто-нибудь сталкивался!

Как в FIL - макросе в GPOST выловить конечную точку дуги

(сочетание CIRCLE c последующим GOTO) на уровне чтения CL файла?

Ведь сочетание CIRCLE c последующим GOTO не дает возможности

обработать в FIL запись GOTO, которая следует после CIRCLE - отдельно.

GPOST запускает свой не понятный алгоритм обработки CIRCLE -GOTO,

вклиниться в который нет никакой возможности.

Если установить в обработчике GOTO CIMFIL / ON,GOTO

вывод координат,то

при обработке записи GOTO, следующей за CIRCLE в CL файле

в случае дуг, примерно > 50 градусов, координаты X12,Y12,Z12

будут отличаться от координат конца дуги.

в случае дуг, примерно :wallbash:

Спасибо большое за ответ.

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


Можно сделать так. Пост встречает в CL-файле объявление CIRCLE, извлекает необходимые данные, устанавливает флаг и забывает до времени. Потом при появлении GOTO этот флаг проверяется и вместо линейного перемещения в кадр ставятся адреса круговой интерполяции. Вот пример:

CIMFIL/ON,3 $$CIRCLE

CALL/SIMUL

$$ X=POSTF(7,4)

$$ Y=POSTF(7,5)

K=POSTF(7,14)

IF (K.LT.0) THEN

DRCT=TEXT/' DR-'

ELSE

DRCT=TEXT/' DR+'

ENDIF

CIRFLG=1

CIMFIL/OFF

CIMFIL/ON,5,5 $$GOTO

STGOUT=TEXT/''

FLG=TEXT/''

PF=0

PF1=0

CALL/SIMUL

CURX=POSTF(1,3,414) $$ CREATE A SYMBOL = CURRENT X

CURY=POSTF(1,3,415) $$ CREATE A SYMBOL = CURRENT Y

CURZ=POSTF(1,3,416) $$ CREATE A SYMBOL = CURRENT Z

X1=ABSF(CURX);Y1=ABSF(CURY);Z1=ABSF(CURZ)

.

.

.

IF (CIRFLG.EQ.1) THEN

R=POSTF(1,3,17)

R1=ABSF®

IF (R1.LT.1) THEN

IF (R.GE.0) THEN

RSTR=TEXT/' R+0',CONVF,R,4,3

ELSE

RSTR=TEXT/' R-0',CONVF,R,4,3

ENDIF

ELSE

RSTR=TEXT/' R',CONVF,R,9,3,1,0,3

ENDIF

STGOUT=TEXT/' CR ',XSTR,' ',YSTR,RSTR,DRCT

CIRFLG=0

INSERT/STGOUT,ENDSTG,'$'

PREVX=CURX;PREVY=CURY

JUMPTO/ENDL

...

ENDL)CONTIN

CIMFIL/OFF

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

Unregistrated!

Спасибо!

Ваш совет действительно помог.

Можно даже вместо установки флага, когда в CL файле

встречается запись CIRCLE, проверять переменную int 455.

Если она =1, то последующий GOTO "принадлежит" CIRCLE.

Но, все равно, не совсем понятен сам механизм работы

парочки CIRCLE-GOTO!

То ли этот алгоритм тянется еще из пре-версий, то ли уж,

действительно - "черный ящик"!

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

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

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

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

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

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

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

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

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

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

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




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