Создать деталь со свойствами стандартного изделия.

Автор A-Lex, 11.08.09, 21:20:05

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

A-Lex

Можно ли програмно создать деталь со свойствами стандартного изделия? Т.е. что бы при добавлении данной детали в сборку в спецификации она бы автоматически отправлялась в раздел "стандартные изделия?"+ хотелось бы что бы она автоматически подцепляла нужный атрибут с характеристиками. Буду рад помощи!

Maxagg

этой функцией я пользуюсь для создания в спецификации стандартного изделия (заполняются 2 поля наименование и обозначение.)
function createstandartspcobj(pdoc:ksdocument3D;prt:kspart;typnum:double;ssname,ccname:string):reference;
var
  i:integer;
  pspcdoc:ksspecification;
  refspcobj:reference;
  piserparam:ksuserparam;
  pitem:ksltvariant;
  parr:ksdynamicarray;
  ssp:ksSpcStyleParam;
  stsp:ksSpcTuningStyleParam; 
begin
  pspcdoc:=ksspecification(pdoc.GetSpecification);
  refspcobj:=0;
  pspcdoc.ksSpcObjectCreate(stringtoolestr('graphic.lyt'),1,25,0,typnum,0);
  piserparam:=ksuserparam(kompas.GetParamStruct(112));
  pitem:=ksltvariant(kompas.GetParamStruct(108));
  parr:=ksdynamicarray(kompas.GetDynamicArray(23));
  piserparam.Init;
  piserparam.SetUserArray(parr);
  pitem.Init;
  pitem.strVal:=stringtoolestr(ssname);
  parr.ksAddArrayItem(-1,pitem);
  pspcdoc.ksSpcChangeValue(4,1,piserparam,string_attr_type);
  pspcdoc.ksSpcVisible(4,2,1);
  pspcdoc.ksSpcVisible(5,2,1);
  parr.ksClearArray;
  pitem.Init;
  pitem.strVal:=stringtoolestr(ccname);
  parr.ksAddArrayItem(-1,pitem);
  pspcdoc.ksSpcChangeValue(5,1,piserparam,string_attr_type);
  pspcdoc.D3SpcIncludePart(prt,false);
  refspcobj:=pspcdoc.ksSpcObjectEnd;
  ssp:=ksSpcStyleParam(kompas.GetParamStruct(104));
  ssp.Init;
  stsp:=ksSpcTuningStyleParam(ssp.GetTuning);
  stsp.geometryDel:=1;
  pspcdoc.ksSetTuningSpcStyleParam(-1,ssp);
  result:=refspcobj;
end;

Иконка стандартного компонента создается
        //Признак стандартного компонента.
        Part.standardComponent:=true;
        //Интерфейс пользовательских параметров.
        iUserParam:=ksUserParam(Kompas.GetParamStruct(112));
        //Номер функции редактирования.
        iUserParam.number:=1;
        ...
        действия с компонентом
        ...
        //применяем параметры юзера
        Part.SetUserParam(iUserParam);

Плодотворной работы

A-Lex

Спасибо большое, за то что откликнулись!
Мне кажется вы меня не совсем поняли. Мне нужно создать 3D деталь-болванку, но что бы при вставке этой детали в сборку и после создания в данной сборке объекта спецификации информация о данной детали автоматически помещалась бы в стандартные изделия с оформлением согласно выбранному шаблону из библиотеки атрибутов.


A-Lex


A-Lex

Если открыть C:\Program Files\ASCON\KOMPAS-3D V10\Libs\PartLib\DATA\VAULT\Methods\kompas\3d и взять там одну из параметрических моделей, например PLib_Bolt_1_900.m3d. При создании сборки с данным файлом в спецификации он автоматически уходит в стандартные изделя, а оформления он берет из библиотеки атрибутов. Если открыть файл с помощью блокнота, то почти в самом конце крипта есть ссылки на :\Program Files\ASCON\KOMPAS-3D V9\Sys\graphic.lyt, откуда видимо он и подцепляет оформление. В ручную такой файл создать не удается...

Maxagg

:\Program Files\ASCON\KOMPAS-3D V9\Sys\graphic.lyt
стиль оформления рамки
у меня 9 компас, сохраните ваш файл для девятой версии и выложите на форум а я посмотрю

KonstrSerg

Просто так из файла детали при вставке создать объект спецификации не получится.
Можно поместить деталь в библиотеку моделей (подключать ее в Компасе не обязательно) и
из своей библиотеки контролировать процесс вставки модели из библиотеку моделей в сборку.
Также можно параллельно создать объект спецификации с нужным атрибутом и привязать геометрию.
Смотри пример Studs3d.

A-Lex