Кодировка деталей

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

Кодировка деталей

Сообщение Алек(андр » 27 сен 2012 16:54

Ручей писал(а):Кто-нибудь решал такой вопрос.
Прототип шкафа каждой детали даёт имя и коды.
Допустим в стандарте есть шкаф 600 и 800. Обзовём, к примеру, такие горизонты для шкафа 600 "гор60", для шкафа 800 "гор80"
Если построить шкаф 700, то горизонты уже должны именоваться иначе.
Каким образом сделать проверку всех параметром шкафа, согласно которым будут даваться коды деталям?
Комбинация может быть много. В зависимости от них деталь либо попадёт под стандартное имя или нет.
Первая мысль была создания таблицы БД со всеми параметрами и именами для деталей, которые выбираются при совпадении всех параметров.
Получается, что прежде чем дать имя детали, должна произойти проверка прототипа по всем таблицам.
Но это сложный вариант.
Ведь такое наверняка уже решали?

Ручей, этот вопрос не для темы флуд. Я решал этот вопрос путем присвоения Хешкода деталям которые считаются стандартными. Детали хранятся в справочнике. При создании панели например можно получить хешкод этой панели на основе ее свойств, но при этом пренебречь какими то отдельными свойствами. Например не учитывать конкретный материал, а только толщину панели. Хешкод формируется при выгрузке базы в таблице TElems поле HashCode. Настройка по которой формируется хешкод делается в пользовательских параметрах. вот :arrow: здесь мы уже обсуждали вопрос по хешкоду.
Аватара пользователя
Алек(андр
 
Сообщения: 1208
Зарегистрирован: 17 ноя 2008 10:16
Откуда: Московская область

Re: Кодировка деталей

Сообщение Ручей » 28 сен 2012 08:40

Рассмотрим корпус в720ш800г500 с одной полкой.
Стандартная стойка будет иметь код по чертежу ШН05.101
В данном случаи ширина корпуса не повлияет на стандартность стойки.
Если мы поставим вторую полку или изменим глубину первой полки, как стойка узнает, что у ней примыкает деталь, для которой будет делаться иная сверловка?
Параметры самой панели можно получить и крепёж, а проверить сверловку на пласти как?
Ручей
 
Сообщения: 887
Зарегистрирован: 15 июл 2011 19:55

Re: Кодировка деталей

Сообщение Алек(андр » 28 сен 2012 09:40

Я могу предложить два способа.

Первый я применял в версии 5.5.

Я выполнял реальную сверловку с помощью булевой операции в панели. То бишь панель выглядела, как реальная. Помещал панель в Гск серединой заднего торца и вычислял статические моменты инерции твердого тела. Таким образом удавалось находить зеркальные и повернутые на 90 град панели . А уж одинаковые и подавно. Если Сдвигалось хоть одно отверстие на 0,1 мм то панель уже получалась другая. Приложив к этому еще списки ID материалов и кромок можно получить четкое описание панели.

Второй способ.

Дело в том что с какой то из 6-х версий панель знает все пятна контакта и получает информацию по ответным сверловкам,что и как в ней просверлено. Эта инфа учитывается в ХЕШ коде. Вся эта информация есть в базе выгрузки MebelBase. В настоящий момент в TELEMS.HashCode формируется хешкод по всем критериям и не настраивается. Но можно написать параллельно анализатор свойств панели и самому формировать хешкод по списку параметров только тех которые нужны. Сформировав несколько хешкодов можно получить списки заготовок и списки панелей на присадку и на раскрой.
Аватара пользователя
Алек(андр
 
Сообщения: 1208
Зарегистрирован: 17 ноя 2008 10:16
Откуда: Московская область

Re: Кодировка деталей

Сообщение Алек(андр » 28 сен 2012 09:52

Ручей писал(а):.... как стойка узнает, что у ней примыкает деталь, для которой будет делаться иная сверловка?
Параметры самой панели можно получить и крепёж, а проверить сверловку на пласти как?

39. 11. 7 Поиск пятен контакта (K3MACRO_71)
FindSpots, FindSpotPan

в 6-ке то же работали
пример использования
Код: Выделить всё
defarr arr[1000],arr2[100];
numc=10;
Tolerance=0.1;

//-- Можно раскоментировать
goto secc;  //-- А это - будем искать пятно контакта, на которое мышкой указали

objident : hobj ;
//-- Это - найти все пятна контакта, лежащие на панели
num=FindSpots(hobj,Tolerance,arr);
putmsg("Пятен контакта: "+str(num),0);
if (num<1)
{
  exit;
}
i=0;
NULLOUT=getsnap();
setucs lcs hobj;
color 10;
onerror loop;
loop:
line arr[i*numc+1], arr[i*numc+2], arr[i*numc+3]
     arr[i*numc+4], arr[i*numc+5], arr[i*numc+6] done;
hpanel=arr[i*numc+8];
chprop color hpanel done i;
i=i+1;
if (i<num)
{
  goto loop;
}
offerror;
color 0;
NULLOUT=resnap();
exit;
//INT FindSpotPan(OBJECT <Panel>, INT <IDPoly>, INT <IDLine>, DOUBLE <Tolerance>, Array <Arr>)
//Функция находит панель, с которыми элемент <IDLine> контура <IDPoly> панели <Panel> имеет пятно контакта
//Панели заносятся в массив <Arr>
//Массив <Arr> должен быть предварительно объявлен и его размер должен быть достаточен для информации
//Функция возвращает количестов найденных панелей.
//В дальнейшем панели из массива <Arr> могут быть обработаны функцией FindSpots
secc:
#obj mbget "Укажите сторону панели, на которой нужно найти пятно"
  Panel idpoly idline band :
qqq=findSpotPan(obj,idpoly,idline,Tolerance,arr2);
putmsg("У этой панели контактных панелей: "+str(qqq),0);
if (qqq==0)
{
  exit;
}
ss=0;
looo:
ss=ss+1;
num=FindSpots(arr2[ss],Tolerance,arr);
putmsg("У этой стороны панели пятен контакта: "+str(num),0);

if (num<1)
{
  exit;
}
i=0;
NULLOUT=getsnap();
setucs lcs arr2[ss];
color 10;
onerror loop1;
loop1:
if ((arr[i*numc+9]==idpoly)&&(arr[i*numc+10]==idline)&&(compareobj(arr[i*numc+8],obj)==1))
{
//  [1],[2],[3] - координаты начала средней линии пятна контакта
//  [4],[5],[6] - координаты конца средней линии пятна контакта
//  [7] - ширина пятна контакта
//  [8] - панель, с которой образовано пятно контакта
//  [9],[10] - ID контура и ID элемента контура панели, которое образовало пятно контакта
  //;line arr[i*numc+1]  0  arr[i*numc+3]  arr[i*numc+1], min(arr[i*numc+2],arr[i*numc+5]), arr[i*numc+3] done ;
  //chprop color last 1  done 12;
  line arr[i*numc+1], arr[i*numc+2], arr[i*numc+3]
     arr[i*numc+4], arr[i*numc+5], arr[i*numc+6] done;
  hpanel=arr[i*numc+8];
  chprop color hpanel done i;

}
i=i+1;
if (i<num)
{
  goto loop1;
}
if ss<qqq
{
   goto looo;
}
offerror;
color 0;
NULLOUT=resnap();
exit;

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


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

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

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