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

radius to end of arc differs from radius


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



Меняю знаки в I и J ,получаю хорошую дугу. В вашем варианте дуги нет!

10.jpg

11.jpg

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

спасибо, вроде смена знаков помогает. Но править это в 16000 строках долговато. есть какой нибудь вариант по проще? как это все автоматически исправить?

 

 

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

спасибо, вроде смена знаков помогает. Но править это в 16000 строках долговато. есть какой нибудь вариант по проще? как это все автоматически исправить?

Попробуй этот пост если что шапку подправишь под Mach3 главное чтоб  для начала код  рабочий был! 

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

Пока вышел из ситуации следующим образом. Написал програмульку, которая во всех кадрах, где есть круговая интерполяция, высчитывает радиусы и заменяет центр дуги на радиус. Вроде не ругается. Теперь попробую на станке.

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

????? Как иногда шутят физики - "Предложите самый дорогой способ измерения постоянной Планка.."

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

я программист 1С. Вот и написал простенький код. Конечно это танцы с бобунами. Но это, как у нас говорят, читай любой намаз, который знаешь.

но посты начал помаленьку понимать. Вод код на 1С. может еще какому нибудь новичку понадобится))):

    Текст = Новый ТекстовыйДокумент;
    Текст.Прочитать(Имя);
    ПредСтр = "";
    хТек = 0;
    уТек = 0;
    Числа = "0123456789-.";
    Для ц = 1 по Текст.КоличествоСтрок() Цикл 
        Состояние(ц);
        Стр = Текст.ПолучитьСтроку(ц);
        Стр = Врег(Стр);
        ПозЖ3 = Найти(Стр, "G3");
        ПозЖ2 = Найти(Стр, "G2");
        
        ПозЖ31 = Найти(Стр, "G03");
        ПозЖ21 = Найти(Стр, "G02");
        хПред = хТек;
        уПред = уТек;
        
        хТек = "";
        уТек = "";
        I = "";
        J = "";
        Буква = "";
        НачалоХ = Ложь;
        НачалоУ = Ложь;
        НачалоИ = Ложь;
        НачалоЖ = Ложь;
        
        Для к = 1 по СтрДлина(Стр) Цикл 
            Буква = Сред(Стр, к, 1);
            Если Буква = "X" Тогда 
                НачалоХ = Истина;
                НачалоУ = Ложь;
                НачалоИ = Ложь;
                НачалоЖ = Ложь;
                Продолжить;
            ИначеЕсли Буква = "Y" Тогда 
                НачалоХ = Ложь;
                НачалоУ = Истина;
                НачалоИ = Ложь;
                НачалоЖ = Ложь;
                Продолжить;
            ИначеЕсли Буква = "I" Тогда 
                НачалоХ = Ложь;
                НачалоУ = Ложь;
                НачалоИ = Истина;
                НачалоЖ = Ложь;
                Продолжить;
            ИначеЕсли Буква = "J" Тогда 
                НачалоХ = Ложь;
                НачалоУ = Ложь;
                НачалоИ = Ложь;
                НачалоЖ = Истина;
                Продолжить;
            КонецЕсли;
            
            Если Найти(Числа, Буква) = 0 Тогда 
                НачалоХ = Ложь;
                НачалоУ = Ложь;
                НачалоИ = Ложь;
                НачалоЖ = Ложь;
            КонецЕсли;
            
            Если НачалоХ Тогда 
                Если (Буква = ".") и ((хТек = "") или (хТек = "-")) Тогда 
                    хТек = хТек + "0";
                КонецЕсли;
                хТек = хТек + Буква;
            КонецЕсли;
            
            Если НачалоУ Тогда 
                Если (Буква = ".") и ((уТек = "") или (уТек = "-")) Тогда 
                    уТек = уТек + "0";
                КонецЕсли;
                уТек = уТек + Буква;
            КонецЕсли;
            
            Если НачалоИ Тогда 
                Если (Буква = ".") и ((I = "") или (I = "-")) Тогда 
                    I = I + "0";
                КонецЕсли;
                I = I + Буква;
            КонецЕсли;
            
            Если НачалоЖ Тогда 
                Если (Буква = ".") и ((J = "") или (J = "-")) Тогда 
                    J = J + "0";
                КонецЕсли;
                J = J + Буква;
            КонецЕсли;
            
        КонецЦикла;
        Попытка
            Если ПустаяСтрока(хТек) Тогда 
                хТек = хПред;
            Иначе
                хТек = Число(хТек);
            КонецЕсли;
            
            Если ПустаяСтрока(уТек) Тогда 
                уТек = уПред;
            Иначе 
                уТек = Число(уТек);
            КонецЕсли;
            
            Если не ПустаяСтрока(I) Тогда 
                I = Число(I);
            КонецЕсли;
            Если не ПустаяСтрока(J) Тогда 
                J = Число(J);
            КонецЕсли;
            
        Исключение
            Сообщить("Не удалось преобразовать в число !!! стр № " + ц);
            Продолжить;
        КонецПопытки;
        Если (ПозЖ3 <> 0) или (ПозЖ2) или (ПозЖ31 <> 0) или (ПозЖ21 <> 0) Тогда 
            
            хЦентрДуги = хПред - I;
            уЦентрДуги = уПред - J;
            к1 = ABS(хЦентрДуги - хПред);
            к2 = ABS(уЦентрДуги - уПред);
            Р1 = Sqrt(к1*к1 + к2*к2);
            
            к1 = ABS(хЦентрДуги - хТек);
            к2 = ABS(уЦентрДуги - уТек);
            Р2 = Sqrt(к1*к1 + к2*к2);
            Если ABS(Р1 - Р2) > 0.002 Тогда 
                Сообщить("Большая разница в диаметре");
                Продолжить;
            КонецЕсли;
            Радиус = Окр((Р1 + Р2)/2, 3);
            
            Если ПозЖ2 <> 0 Тогда 
                НовСтр = "G2";
            ИначеЕсли ПозЖ21 <> 0 Тогда
                НовСтр = "G2";
            ИначеЕсли ПозЖ3 <> 0 Тогда
                НовСтр = "G3";
            ИначеЕсли ПозЖ31 <> 0 Тогда
                НовСтр = "G3";
            КонецЕсли;
            НовСтр = НовСтр + "X" + хТек + "Y" + уТек + "R" + Радиус;
            Текст.ЗаменитьСтроку(ц, НовСтр);
        КонецЕсли;
        хПред = хТек;
        уПред = уТек;
        
    КонецЦикла;
    Текст.Записать(Имя);

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

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

 

Ссылка на сообщение
Поделиться на других сайтах
17 часов назад, Dantist сказал:

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

 

Главное вычислить радиус. можно с текущих координат, можно с предыдущих, разницы нет, я проверял. а направление дуги это g2 или g3.

Если у кого есть 1С, то можно просто вставить этот код, иначе придется переводить на свой язык.

 

 

а вообще, если все делать по науке, как в посте нужно указать, что круговую интерполяцию нужно вычислять в радиусах, а не в центрах дуги?

 

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

DuctPost или PM post?

Выше вам скидывали ссылку на пост, там выводит радиус!

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

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

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

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

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

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

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

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

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

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

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




  • Сообщения

    • gudstartup
      вы тоже думаете что можно все компоненты чпу заменить и ничего не изменится и предупреждение о том чтобы oprminf не восстанавливали на другой машине которое фанук встроил даже в загрузчик это просто алармисткий текст и ничего не будет..... ну и ну и где написано что она mate как например здесь с чего тогда базовый чпу mate если гл.плата не mate мне непонятно из-за экрана что ли
    • статист
      Охренеть, ни за что бы не догадался. Хоть бы словом где обмолвились об этом в документации. Короче нужна команда EMODIF, E_ID, 3, N_ID где E_ID - номер элемента, который мы собираемся модифицировать. Так как используется BEAM188, то у него не два узла оказывается рассматривается, а три, где первые два принадлежат элементу, а третий узел - направляющий. И соответственно число 3 - это номер узла балки, который мы собираемся модифицировать, то есть направляющий узел. И мы этот узел соответственно заменяем на узел с номером N_ID. И тогда сечение реально вращается. Разобрался по этому видео.    
    • Александр1979
      Материнка такая в руководстве есть. На 0i-D я менял материнку, опции не слетели. 
    • gudstartup
      @Viktor2004 кстати конкретно модели автора в руководстве нет хотя оно последней редакции 18 года
    • Viktor2004
      конкретно на этой не менял. На каких менял, написал выше
    • gudstartup
      какие платы и на каких системах вот в чем ворос конкретно на этой возникут проблемы
    • Viktor2004
      ну да. А то что я менял платы это мои бредовые фантазии   Ну исправили в паспорте. И что?
    • gudstartup
      это догадки и гадание на кофейной гуще а япривожу документ где написано про то что прочитайте пункт 4.11 а там представляете вот что 4) Замена печатной платы может привести к изменению идентификационного номера ЧПУ. Проверьте это на Экран ЧПУ. Если оно отличается от описанного в техническом паспорте, исправьте его.  
    • Viktor2004
      я менял все платы. И на форуме наверное не я один их менял. И никто еще не писал что при этом у него слетел сертификат Возможно ID номера проверяются только в момент установки опции, а когда они уже установлены и мирно хранятся в OPRM INF возможно ти уже на ID наплевать
    • gudstartup
      для кого это написано CAUTION Before replacing a printed circuit board, be sure to read Section 4.11, “OPTION INFORMATION FILE” to confirm the procedure.  
×
×
  • Создать...