Массив компонентов-по концентрической сетке

Автор Dmitrich, 24.04.09, 00:40:06

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

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

Dmitrich

подскажите пожалуйста как создать ось по пересечениям 2х плоскостей в сборке, это нужно для того что бы ее использовать в массиве компонентов. Сейчас пробую использовать ось  из детали , не получается :%:
Delphi 2007; Kompas V8 Plus.

circiPartArray1:=ksEntity(ipart6.NewEntity(o3d_circPartArray ));
CircularArray1:=ksCircularPartArrayDefinition(circiPartArray1.GetDefinition);
if CircularArray1<> nil then begin
CircularArray1.count1:=1;
CircularArray1.count2:=N;
CircularArray1.step1:=1;
CircularArray1.step2:=360;
CircularArray1.factor1:=false;
CircularArray1.factor2:=true;
CircularArray1.inverce:=false;
Collection1:=ksPartCollection(CircularArray1.PartArray);
Collection1.Add(ipart2);   //пластинка 1
Collection1.Add(ipart3);   // пластинка 2
Collection1.Add(ipart4);    // винт1
Collection1.Add(ipart5);    //винт 2
iEntityCollection2:= ksEntityCollection(ipart1.EntityCollection(o3d_axis2Planes));   // вот так пробую из детали 1 - корпус (тело вращения) использовать ось.

if (iEntityCollection2 <> nil) and
(iEntityCollection2.SelectByPoint(5, 0, 0)) and    
(iEntityCollection2.GetCount > 0 ) then begin    

CircularArray1.SetAxis(iEntityCollection2.GetByIndex(0));
circiPartArray1.name:='Массив по сетке(Крепление деталей)';
circiPartArray1.Create;


Буду рад любому совету.

yarikv

если в детали есть цилиндрическая грань может ее получится использовать в качестве оси?

Dmitrich

Цилиндрическая грань не подойдет, нужно именно в сборке сделать вспомогательную ось...
Есть знатоки?

Sheiker

iPlaneEntity2 := ksEntity(Part.GetDefaultEntity(o3d_planeXOZ));
iPlaneEntity3 := ksEntity(Part.GetDefaultEntity(o3d_planeYOZ));

iAxis := ksEntity(iPart.NewEntity(o3d_axis2Planes));
      if (iAxis <> nil) then
        begin
           // интерфейс параметров вспомогательной оси
           // на пересечении плоскостей
          iAxis2PlDef := ksAxis2PlanesDefinition(iAxis.GetDefinition);
          if (iAxis2PlDef <> nil) then
            begin
              // задаем плоскости
              iAxis2PlDef.SetPlane(1, iPlaneEntity3);
              iAxis2PlDef.SetPlane(2, iPlaneEntity2);
              // делаем ось невидимой
              iAxis.hidden := false;
              // создаем вспомогательную ось
              iAxis.Create;
            end;
        end;

вот так, Тока блин ось создается , а вот массив нет(((((((((
помогите с массивом...  чет там не так!!! (на верху)

// Масив по концентрической сетке
     iDetaley:=ksEntity(iPartSborka.NewEntity(o3d_circPartArray));
     CopySetka:=ksCircularPartArrayDefinition(iDetaley.GetDefinition);
     CopySetka.SetAxis(EntityAxisOperation2);
     PartCollection2:=ksPartCollection(CopySetka.PartArray);
     PartCollection2.Add(ksPart(iDoc3DSborka.GetPart(2)));
     CopySetka.SetCopyParamAlongDir(V[Index].SK,360,true,False);
     iDetaley.Create;

Sheiker

оооо ОГРОМНОЕ , ОГРОМНОЕ спасибо)))
Все получилось.
хочу лишь добавить (для таких как я) , что iPartSborka должен быть главным компонентом. (pTop_Part)