[C#] KOMPAS API7 Создание отрезка

Автор IbraM, 26.03.11, 19:36:11

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

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

IbraM

26.03.11, 19:36:11 Последнее редактирование: 26.03.11, 19:49:02 от IbraM
Приветствую всех. Появилось задание на шарпе с использованием АПИ7 КОМПАСа. Пытаюсь вот разобраться как это все дело работает. Убил много времени, не все, конечно же, понял. Просьба исправить мой пример, чтобы я попытался понять как идет работа с АПИ7. По примерам шарповским налепил некоторый код, который и надо подправить. Начать хочу с создания чертежа и отрезка на нем. Мой код успешно создает новый чертеж, а никакого отрезка не появляется.
Вот сам код. Методы не относящиеся к построениям опустил за ненадобностью.


using System;
using System.Runtime.InteropServices;
using System.Text;
using System.Windows.Forms;
using Microsoft.Win32;

using kAPI7;
using Kompas6Constants;

namespace IbraM
{
public partial class Kompas
{
public void ExternalRunCommand([In] short command, [In] short mode, [In, MarshalAs(UnmanagedType.IDispatch)] object kompas_)
{
IKompasAPIObject ko = (IKompasAPIObject)kompas_;
IApplication app = (IApplication)ko.Application;
IKompasDocument2D doc = (IKompasDocument2D)app.Documents.Add(DocumentTypeEnum.ksDocumentDrawing, true);

//До этого момента все ок и создается чистый чертежик в компасе. Далее тишина.
ILineSegments lines = (ILineSegments)doc.ViewsAndLayersManager.Views.ActiveView;
ILineSegment ls = lines.Add();
ls.X1 = 50;
ls.Y1 = 50;
ls.X2 = 100;
ls.Y2 = 100;
ls.Update();
}
}
}


Все, разобрался. Посмотрев еще раз схему интерфейсов АПИ7, увидел, что линии, отрезки и прочая лабуда вызывается от IDrawingContainer. Модифицировав код, получил нужный результат. Уважаемые модераторы, прошу удалить тему, так как не нашел где это можно сделать самому.

IDrawingContainer box = (IDrawingContainer)doc.ViewsAndLayersManager.Views.ActiveView;
ILineSegments lines = box.LineSegments;
ILineSegment ls = lines.Add();
ls.X1 = 50;
ls.Y1 = 50;
ls.X2 = 100;
ls.Y2 = 100;
ls.Update();