Что за беда, может XP или я что то не знаю?

Автор Fairytaleman, 05.01.05, 14:04:11

« предыдущая - следующая »

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

Fairytaleman

Здравствуйте!
Дело вот в чем. Собственно дело простое, но не могу понять что такое. Необходимо написать бибилиотеку которая будет рисовать 3D деталь - лаба такая. Деталь может быть хоть втултка, хоть просто круг выдавить, что угдно, главное результат, но! Плоский эскиз у меня все хорошо рисуется, а как дело доходит до выдавливания выскакивает ошибка:имя моего файла raised exception class EOleSysError with messages ’Недопустимое число параметров’.
Пишу под делфи. Вот собственно текст процедуры:
if Kompas  nil then
  begin
    if KompasApi = nil then
    begin
      KompasApi := KompasObject(Kompas.KompasAPI);
    end;
    if KompasApi  nil then
    begin
      if Kompas.ActivateKompasAPI then
      begin
         doc := ksDocument3D(kompasAPI.ActiveDocument3D);
         math:=ksMathematic2D(kompasAPI.Getmathematic2D);
         if  doc  nil then
                       begin
                           //начало вставки

                           iPart := ksPart(doc.GetPart( pNew_Part )); // новый компонент
                           if iPart  nil then
                             begin //1
                              iSketchEntity := ksEntity( iPart.NewEntity( o3d_sketch ));
                              if iSketchEntity  nil then
                                 begin //2
                                 // интерфейс свойств эскиза
                                   iSketchDef := ksSketchDefinition(iSketchEntity.GetDefinition);
                                   if iSketchDef  nil then
                                        begin //3
                                        // интерфейс плоскости XOY
                                        iPlaneEntity := ksEntity(iPart.GetDefaultEntity( o3d_planeXOY ));
                                        if iPlaneEntity  nil then
                                             begin  //4
                                             iSketchDef.SetPlane( iPlaneEntity ); // установим плоскость XOY базовой для эскиза      iSketchDef.Angle := 45; // угол поворота эскиза
                                             iSketchEntity.Create; // создадим эскиз
                                             // интерфейс редактора эскиза
                                             iSketchDocument2D := ksDocument2D(iSketchDef.BeginEdit);
                                             if iSketchDocument2D  nil then
                                                    begin //5
                                                      iSketchDocument2D.ksCircle(0,0,50,1);
                                                      iSketchDef.EndEdit; // завершение редактирования эскиза
                                                      iBaseExtrusionEntity := ksEntity(iPart.NewEntity( o3d_baseExtrusion ));
                                                      if iBaseExtrusionEntity  nil then
                                                        begin  //6
                                                        // интерфейс свойств базовой операции выдавливания
                                                         iBaseExtrusionDef := ksBaseExtrusionDefinition(iBaseExtrusionEntity.GetDefinition);
                                                         if iBaseExtrusionDef  nil then
                                                                begin //7
                                                                    iBaseExtrusionDef.DirectionType := dtNormal; // направление выдавливания
                                                                  
                                                                  iBaseExtrusionDef.SetSideParam(true,EtBlind,50,0,false); <-- вот на эту строку ошибку показывает, в общем то по хелпу  все  правильно написано.
                                                                     iBaseExtrusionDef.SetSketch( iSketchEntity ); // эскиз операции выдавливания
                                                                  iBaseExtrusionEntity.Create; // создать операцию

                                 

Sabahs

Перед строчкой iBaseExtrusionDef.SetSketch( iSketchEntity ); // эскиз операции выдавливания, вставь следующую строку iBaseExtrusionDef.SetThinParam(False,dtNormal,0,0);

Fairytaleman

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

Sabahs

  У меня все работает надеюсь, что по хелпу переведете.

  iDoc3D.drawMode:=vm_Shaded;
  iPart:=ksPart(iDoc3D.GetPart(pNew_Part));
  iPart.name:=’Ïðèìåð ïî ïðîñüáå òðóäÿùèõñÿ’;
  iPart.fixedComponent:=False;
  iPart.standardComponent:=False;
  iPart.Update;
  iEntity:=ksEntity(iPart.NewEntity(o3d_sketch));
  iSketchDefinition:=ksSketchDefinition(iEntity.GetDefinition);
  iPlane:=ksEntity(iPart.GetDefaultEntity(o3d_planeXOY));
  iSketchDefinition.SetPlane(iPlane);
  iSketchDefinition.angle:=0;
  iEntity.Create;
  iDoc2D:=ksDocument2D(iSketchDefinition.BeginEdit);
  iDoc2D.ksLineSeg(0,0,0,100,1);
  iDoc2D.ksLineSeg(0,100,100,100,1);
  iDoc2D.ksLineSeg(100,100,100,0,1);
  iDoc2D.ksLineSeg(100,0,0,0,1);
  iSketchDefinition.EndEdit;
  iBaseExtrusion:=ksEntity(iPart.NewEntity(o3d_baseExtrusion));
  iBaseExtrusionDefinition:=ksBaseExtrusionDefinition(iBaseExtrusion.GetDefinition);
  iBaseExtrusionDefinition.directionType:=dtNormal;
  iBaseExtrusionDefinition.SetSideParam(True,etBlind,35,0,True);
  iBaseExtrusionDefinition.SetThinParam(False,dtNormal,0,0);
  iBaseExtrusionDefinition.SetSketch(iEntity);
  iBaseExtrusion.Create;

Fairytaleman

увы, ошибка возникает все там же. И что характерно - та же!)))