ПЖ
Павел Журавский

Программаирование для Компас 3д

Вылазиет ошибка "Невозможно привести COM-объект типа "System.__ComObject" к интерфейсному типу "Kompas6API5.ksBaseExtrusionDefinition". Операция завершилась со сбоем, поскольку вызов QueryInterface COM-компонента для интерфейса с IID "{DEEFEFE1-C3E2-11D6-8734-00C0262CDD2C}" возвратил следующую ошибку: Интерфейс не поддерживается (Исключение из HRESULT: 0x80004002 (E_NOINTERFACE))."

Вот код, там обозначена строка, где вылазиет ошибка
using Kompas6Constants;
using KompasAPI7;
using Kompas6Constants3D;
using KGAXLib;
using Kompas6API5;
using System.Runtime;
using System.Runtime.InteropServices;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace komps
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
Kompas = (KompasObject)Activator.CreateInstance(Type.GetTypeFromProgID("KOMPAS.Application.5"));

((KompasObject)Kompas).Visible = true;
ksDocument3D = (ksDocument3D)Kompas.Document3D();
ksDocumentParam = (ksDocumentParam)Kompas.GetParamStruct(35);
ksDocumentParam.Init();
ksDocument3D.Create(false, true);

}

private void button2_Click(object sender, EventArgs e)
{
int a = 250;
int b = 75;
int c = 90;
int d = 25;
int r = 25;

iPart = (ksPart)ksDocument3D.GetPart(-1);
iSketchEntity = (ksEntity)iPart.NewEntity(5);
iSketchDef = (ksSketchDefinition)iSketchEntity.GetDefinition();
iPlaneEntity = (ksEntity)iPart.GetDefaultEntity(1);
iSketchDef.SetPlane(iPlaneEntity);
iSketchEntity.Create();
iSketchDocument2D = (ksDocument2D)iSketchDef.BeginEdit();
iSketchDocument2D.ksLineSeg(0, 0, c, 0, 1);
iSketchDocument2D.ksLineSeg(c, 0, c, b, 1);
iSketchDocument2D.ksLineSeg(c, b, c + d, b, 1);
iSketchDocument2D.ksLineSeg(c + d, b, c + d, a, 1);
iSketchDocument2D.ksLineSeg(c + d, a, 0, a, 1);
iSketchDocument2D.ksLineSeg(0, 0, 0, a / 2 - r, 1);
iSketchDocument2D.ksLineSeg(0, a, 0, a / 2 + r, 1);
iSketchDocument2D.ksArcByPoint(0, a / 2, r, 0, a / 2 - r, 0, a / 2 + r, 1, 1);
iSketchDef.EndEdit();
iBaseExtrusionEntity = (ksEntity)iPart.NewEntity(18);

if (iBaseExtrusionEntity != null)
{
iBaseExtrusionDef = (ksBaseExtrusionDefinition)iSketchEntity.GetDefinition(); \\\ОШИБКА
iBaseExtrusionDef.directionType = 0;
iBaseExtrusionDef.SetSideParam(true, 0, 10, 0, false);
iBaseExtrusionDef.SetSketch(iSketchEntity);
iBaseExtrusionEntity.Create();
}
}

private void Form1_Load(object sender, EventArgs e)
{

}
}
}

помогите пожалуйста!

объявление Kompas в отдельном модуле, там все переменные.. .
public KompasObject Kompas;
public object ksDocument2D;
public ksDocument3D ksDocument3D;
public ksPart iPart;
public int newpart;
public ksEntity iSketchEntity;
public ksSketchDefinition iSketchDef;
public ksEntity iPlaneEntity;
public ksDocument2D iSketchDocument2D;
public ksEntity iBaseExtrusionEntity;
public ksBaseExtrusionDefinition iBaseExtrusionDef;
public ksPlaneTangentToSurfaceDefinition iPTSD;
public object mp;
public ksDocumentParam ksDocumentParam;

НУ
Наталья Усачёва

Не вижу у вас обьявления Kompas. Оно где?

Похожие вопросы
Помогите сделать в компас 3д изображение
Как в компасе 3д в12 показать отверстие наискось?
Не удается удалить Компас-3Д.
Помогите разобраться с прог компас 3Д и чертежом
Возможно ли восстановить документ компас 3д 12?
компас-3д, вставить шайбу
Как переместить окружность в компас 3Д v14?
Компас 3Д помогите сделать фигуру в программе в 3д
Здравствуйте, нужна сборка в программе компас 3д
Народ, подскажите как в компасе 3д в 14 версии