ЧПУ и K3

Модераторы: Лабутин Сергей Евгеньевич, Алек(андр

Re: ЧПУ и K3

Сообщение Алек(андр » 06 мар 2017 11:14

alter писал(а):Кто-нибудь сможет пояснить как в данном коде определяется сторона панели?
У меня пропадают некоторые отверстия из за неопределенной стороны панели. Причем могут пропадать отверстия принадлежащие одной стороне панели. Крепеж не под углом.

Код: Выделить всё
  if (abs(beta)<eps_d or abs(beta-vpi)<eps_d):  # отверстие в пласти
    if z>=t or z<=eps_d and z+h+eps_d>=t:
      return "A"
    elif z<=eps_d and h+z+eps_d < t :
      return "F"
    else:
      return "XX"     
  if (abs(alpha)<eps_d):
    return "B"
  if (abs(alpha-vpi)<eps_d):
    return "C"
  if (abs(alpha-vpi/2)<eps_d):
    return "D"
  if (abs(alpha-3*vpi/2)<eps_d):
    return "E"
  return "X"


beta - угол наклона оси отверстия в вертикальной плоскости XOZ.
alpha - угол наклона оси отверстия в горизонтальной плоскости XOY.
vpi -число Pi vpi=3.1415926535897932384626433832795 # число Pi
eps_d -допустимая малая величина

(abs(beta)<eps_d or abs(beta-vpi)<eps_d) - проверка на то, что ось расположена перпендикулярно пласти, что означает угол близкий к 0 (eps_d = 0.001 # допустимое отклонение) или к Pi
Первая возможная причина
Отверстия у вас пропадают скорее всего из за наклона оси больше eps_d = 0.001 (радиан)

Сталкивался с этим как то. На терминальных шкафах .

Еще эти две проверки
Код: Выделить всё
    if z>=t or z<=eps_d and z+h+eps_d>=t:
      return "A"
    elif z<=eps_d and h+z+eps_d < t :
      return "F"

Анализ глубины и вектора направления оси отверстия
z-координата отверстия по оси z
t-толщина панели
h-глубина отверстия

Другой вариант пропажи отверстий ошибка в векторе сверловки.
Как то сталкивался с отрезком формируюшиим отверстие в саморезе направленном наооборот. Начальная точка на острие а конечная в шляпке. То-же может быть причиной.
Аватара пользователя
Алек(андр
 
Сообщения: 1157
Зарегистрирован: 17 ноя 2008 10:16
Откуда: Московская область

Re: ЧПУ и K3

Сообщение alter » 06 мар 2017 16:23

Александр, спасибо, за подробный ответ. Чуть позже проанализирую.
Похоже проблема с расстановкой сквозного крепежа, в моем случае, с конфирматом. Он или вылазиет за боковину, либо утоплен в неё.
И не понятно от чего это зависит. Для одного и того же крепежа(конфирмат), расставленного по одному и тому же правилу, получается его разное расположение по глубине в пласти панели.
Вот что вышло на команду print(SIDE, d.diameter, d.depth, beta, z, h):

A 7.0 16.0 3.141592653589793 16.0 16.0 - отверстия принадлежат
XX 7.0 16.0 3.141592653589793 15.999999999999996 16.0 одной детали

A 7.0 16.0 3.141592653589793 16.000000000000004 16.0
XX 7.0 16.0 3.141592653589793 15.999999999999996 16.0

A 7.0 16.0 3.141592653589793 16.000000000000004 16.0
A 7.0 16.0 3.141592653589793 16.0 16.0

И еще такой баг. Если сверху панели, редактированной командой "изменить тип полки на съемную", поставить полку с конфирматами, то она будет равной ширине съемной полки, т.е. на 1 мм чем надо, в следствии чего конфирматы притапливаются и отверстия не попадают в УП. Если полку ставить снизу, то все нормально. Надеюсь понятно изложил.
alter
 
Сообщения: 29
Зарегистрирован: 10 окт 2012 10:47

Re: ЧПУ и K3

Сообщение Алек(андр » 06 мар 2017 17:44

Вот тут

A 7.0 16.0 3.141592653589793 16.0 16.0 - отверстия принадлежат
XX 7.0 16.0 3.141592653589793 15.999999999999996 16.0 одной детали

A 7.0 16.0 3.141592653589793 16.000000000000004 16.0
XX 7.0 16.0 3.141592653589793 15.999999999999996 16.0

xx быть не должно . Во всяком случае из за таких отклонений по z

точность допуска 0,001, а тут 4-ка в 15-ом знаке после запятой.

Хотя , да!

if z>=t or z<=eps_d and z+h+eps_d>=t:

Надо бы по другому.
Код: Выделить всё
if abs(z-t)<=eps_d or (abs(z)<=eps_d and h+abs(z)+eps_d>=t):


Вот так! вместо жесткого сравнения координаты и толщины
тут z>=t мы получаем
16.000000000000004>= 16.0 ИСТИНА
15.999999999999996>= 16.0 ЛОЖЬ даже 1*10-15 даст такой результат

теперь будем сравнивать абсолютную разницу с величиной погрешности.
Должно работать!
Аватара пользователя
Алек(андр
 
Сообщения: 1157
Зарегистрирован: 17 ноя 2008 10:16
Откуда: Московская область

Re: ЧПУ и K3

Сообщение Алек(андр » 07 мар 2017 10:10

alter писал(а):.....

И еще такой баг. Если сверху панели, редактированной командой "изменить тип полки на съемную", поставить полку с конфирматами, то она будет равной ширине съемной полки, т.е. на 1 мм чем надо, в следствии чего конфирматы притапливаются и отверстия не попадают в УП. Если полку ставить снизу, то все нормально. Надеюсь понятно изложил.


Это как бы #небаг :) Но имеет место быть и выглядит #какбаг :) . Сам нарывался на такое поведение.

Когда мы определяем нишу по одной точке , то сканируем пространство ширина ниши определяется по минимальной панели или по расстоянию между боковыми панелями. В вашем случае это панель - полка. Она является определяющей для ширины ниши.

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

Вы описываете случай для определения ниши по одной точке и полка вносит свои коррективы в это определение. Это надо помнить.

Однако! Я тут, как бы, неожиданно заметил В 7,4 появились опци с учетом подрезок и без учета подрезок

Изображение
Аватара пользователя
Алек(андр
 
Сообщения: 1157
Зарегистрирован: 17 ноя 2008 10:16
Откуда: Московская область

Re: ЧПУ и K3

Сообщение alter » 07 мар 2017 12:07

Алек(андр писал(а):
Код: Выделить всё
if abs(z-t)<=eps_d or (abs(z)<=eps_d and h+abs(z)+eps_d>=t):

теперь будем сравнивать абсолютную разницу с величиной погрешности.
Должно работать!

Да, работает для сквозных отверстий. Теперь глухие пропали.
alter
 
Сообщения: 29
Зарегистрирован: 10 окт 2012 10:47

Re: ЧПУ и K3

Сообщение Алек(андр » 07 мар 2017 12:11

alter писал(а):
Алек(андр писал(а):
Код: Выделить всё
if abs(z-t)<=eps_d or (abs(z)<=eps_d and h+abs(z)+eps_d>=t):

теперь будем сравнивать абсолютную разницу с величиной погрешности.
Должно работать!

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


Э! Значит поторопился я.

Вот эта часть виновата or (abs(z)<=eps_d and h+abs(z)+eps_d>=t)
Аватара пользователя
Алек(андр
 
Сообщения: 1157
Зарегистрирован: 17 ноя 2008 10:16
Откуда: Московская область

Re: ЧПУ и K3

Сообщение Алек(андр » 07 мар 2017 12:28

Что то проверяю и вроде все нормально...
условие работает и для глухих и для сквозных.

Код: Выделить всё
3.3.5 (v3.3.5:62cf4e77f785, Mar  9 2014, 10:37:12) [MSC v.1600 32 bit (Intel)]
Python Type "help", "copyright", "credits" or "license" for more information.
>>> # -*- coding: utf-8 -*-
... def f(z, t=16., h=16.):
...     return z>=t or z<=eps_d and z+h+eps_d>=t
...
... def ff(z, t=16., h=16.):
...     return abs(z-t)<=eps_d or (abs(z)<=eps_d and h+abs(z)+eps_d>=t)
...
...
...
... eps_d = 0.001
... print(f(15.999999999999996))
... print(ff(15.999999999999996))
... print('------------------------')
... print(f(16.000000000000004 ))
... print(ff(16.000000000000004 ))
... print('------------------------')
... print(f(15.999999999999996, h=13.))
... print(ff(15.999999999999996, h=13.))
... print('------------------------')
... print(f(16.000000000000004 , h=13.))
... print(ff(16.000000000000004 , h=13.))
... print('------------------------')
...
False
True
------------------------
True
True
------------------------
False
True
------------------------
True
True
------------------------

Аватара пользователя
Алек(андр
 
Сообщения: 1157
Зарегистрирован: 17 ноя 2008 10:16
Откуда: Московская область

Re: ЧПУ и K3

Сообщение alter » 07 мар 2017 12:42

Ну не знаю, я специально откатился до исходников.
if d.diameter==5 and d.depth==8:
print(z, h, t)
18.0 8.0 16.0
Исходя из этих данных условия не выполняются.
Если убрать это условие abs(z)<=eps_d , то все работает.
alter
 
Сообщения: 29
Зарегистрирован: 10 окт 2012 10:47

Re: ЧПУ и K3

Сообщение Алек(андр » 07 мар 2017 13:28

У вас z=18
да при этом вернуло None поскольку разница больше ,001

Получается, что так нельзя
Аватара пользователя
Алек(андр
 
Сообщения: 1157
Зарегистрирован: 17 ноя 2008 10:16
Откуда: Московская область

Re: ЧПУ и K3

Сообщение Алек(андр » 07 мар 2017 13:44

Вариант, который работает

Код: Выделить всё
    if (z-eps_d<=0 and h+abs(z)>=t or z+eps_d>=t):
        return "A"
    else:
        return "F"


Этот вариант z-eps_d<=0 and h+abs(z)>=t нужен для длинных сквозных отверстий, когда панели соединяются по пласти общим цилиндром сверловки. Например надо стянуть 3 панели шпилькой с гайками.


Код: Выделить всё
>>> # -*- coding: utf-8 -*-
...
... def side(z, t=16., h=16.):
...     if (z-eps_d<=0 and h+abs(z)>=t or z+eps_d>=t):
...         return "A"
...     else:
...         return "F"
...
... eps_d = 0.001
...
... print(side(15.999999999999996))
... print('------------------------')
...
... print(side(16.000000000000004))
... print('------------------------')
...
... print(side(15.999999999999996, h=13.))
... print('------------------------')
...
...
...
... print(side(18 , h=8.))
... print('------------------------')
...
... print(side(-0.000000000000004 , h=13.))
... print('------------------------')
...
... print(side(0.000000000000004 , h=13.))
... print('------------------------')
...
A
------------------------
A
------------------------
A
------------------------
A
------------------------
F
------------------------
F
------------------------


-> Измененная функция GetDrillPlane
Аватара пользователя
Алек(андр
 
Сообщения: 1157
Зарегистрирован: 17 ноя 2008 10:16
Откуда: Московская область

Re: ЧПУ и K3

Сообщение alter » 10 мар 2017 15:28

Александр, для отверстий стенок ящика и лобовой перепутаны координаты X, Y. Где копать?
Изображение
И в выгрузку не попадают панели с присадкой только в торцах, стоит какое то ограничение?
alter
 
Сообщения: 29
Зарегистрирован: 10 окт 2012 10:47

Re: ЧПУ и K3

Сообщение Алек(андр » 10 мар 2017 16:17

Я так понял , что панель у вас повернута на 90 градусов, а сверловка нет.

Может у вас базовые углы для заготовки и отверстий разные?

Вы говорите , что проблема только со стенками. Там по умолчанию текстура вертикально. А панель похоже оптимизировала свое положение. :) Только про сверловку забыла.
Тут с ходу не подскажу покумекать надЫть.

Вы которым из пунктов пользуетесь ?

Изображение
Аватара пользователя
Алек(андр
 
Сообщения: 1157
Зарегистрирован: 17 ноя 2008 10:16
Откуда: Московская область

Re: ЧПУ и K3

Сообщение Алек(андр » 10 мар 2017 16:29

Разница очень большая между моим вариантом и тем, что в штатном дистрибутиве.

Изображение

Такое поведение я припоминаю, но очень давно это было. Пока разбираться будем я бы вам посоветовал текстуру повернуть на 90 градусов. Думаю, должно помочь.
Аватара пользователя
Алек(андр
 
Сообщения: 1157
Зарегистрирован: 17 ноя 2008 10:16
Откуда: Московская область

Re: ЧПУ и K3

Сообщение alter » 10 мар 2017 16:33

BiesseWorksBpp
Текстуру сменил на "вдоль длины", присадка с панелью совпала, но сама панель ориентирована неверно, т.е. её надо повернуть на 90 гр.
alter
 
Сообщения: 29
Зарегистрирован: 10 окт 2012 10:47

Re: ЧПУ и K3

Сообщение Алек(андр » 10 мар 2017 16:42

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

У себя то я всю эту оптимизацию делаю, но только так, как надо на моем производстве.

Вообщето, поворот то панели был выполнен почему сверловка не повернулась - непонятно.
Аватара пользователя
Алек(андр
 
Сообщения: 1157
Зарегистрирован: 17 ноя 2008 10:16
Откуда: Московская область

Пред.След.

Вернуться в К3-Мебель. Программа для производства и продажи мебели.

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron