Создание объектов, их стилей и связи между ними

Для выполнения примера в репозитории предполагается наличие рабочего пространства с идентификатором «WSP».

Добавьте ссылки на системные сборки: Andy, Drawing, Metabase, Workspace.

Sub UserProc;
Var
    MB: IMetabase;
    ws: IWxWorkspace;
    Rect: IWxRectangle;
    Ellipse: IWxEllipse;
    Style: IWxStyle;
    Link: IWxLink;
Begin
    Mb := MetabaseClass.Active;
    ws := Mb.ItemById("WSP").Edit As IWxWorkspace;
    ws.BeginUpdate;
    // создание прямоугольника
    Rect := ws.CreateRectangle;
    Rect.PinPosition := New GxPointF.Create(2010);
    Rect.Text := "Прямоугольник";
    Style := ws.CreateStyle;
    Style.Id := "MyStyle";
    Style.BackgroundBrushForeColor := New GxColor.CreateRGB(153204255);
    Style.BackgroundBrushForeTransparent := 10;
    Style.ShadowBrushForeColor := GxColor.FromName("White");
    Style.ShadowBrushBackColor := New GxColor.CreateRGB(204153255);
    Style.ShadowBrushPattern := GxBrushPattern.Gradient;
    Style.TextFontSize := 9;
    Style.TextFontBrushColor := GxColor.FromName("Blue");
    Rect.Style := Style;
    // создание эллипса
    Ellipse := ws.CreateEllipse;
    Ellipse.PinPosition := New GxPointF.Create(8060);
    Ellipse.Text := "Эллипс";
    Ellipse.Style := ws.Styles.FindById("MyStyle");
    // создание связи между объектами
    Link := ws.CreateLink;
    Link.Text := "Связь";
    Link.TextVertOffset := -10;
    Style := ws.CreateStyle;
    Style.LinePenBeginWxCap := WxLineCap.ArrowRoundedFilled;
    Style.LinePenColor := New GxColor.CreateRGB(1280255);
    Style.LinePenWidth := 0.5;
    Link.Style := Style;
    ws.GlueConnectionPoints(Rect, 3, Link, 0);
    ws.GlueConnectionPoints(Ellipse, 0, Link, 1);
    ws.EndUpdate;
    (ws As IMetabaseObject).Save;
End Sub UserProc;

После выполнения примера на рабочем пространстве будут созданы прямоугольник, эллипс и связь между ними, для каждого из которых будет применен заданный стиль:

См. также:

Примеры