Nikita, по видимому опять что то в API сломали...
Если убрать ссылку на объект узла, то параграф создается по заданным координатам.
Скрытый текст |
---|
Код |
---|
using TFlex;
using TFlex.Model;
using TFlex.Model.Model2D;
namespace Test
{
public class ParagraphBuilder
{
static readonly Document document = Application.ActiveDocument;
public static void Run()
{
if (document == null)
return;
var page = document.ActiveView.Page;
if (page == null)
return;
document.BeginChanges("");
var fn1 = new FreeNode(document, 10, 50) { Page = page };
var fn2 = new FreeNode(document, 50, 10) { Page = page };
ParagraphText txt = new ParagraphText(document)
{
HeightAction = ParagraphText.FitHeightAction.Ignore,
WidthAction = ParagraphText.FitWidthAction.Ignore
};
txt.BeginEdit();
var p1 = new ParagraphText.TextRectangle.Point { X = fn1.X.Value, Y = fn1.Y.Value };
var p2 = new ParagraphText.TextRectangle.Point { X = fn2.X.Value, Y = fn2.Y.Value };
var rect = new ParagraphText.TextRectangle(p1, p2, page, 0);
txt.AddRectangle(rect);
txt.InsertText("this is inserted paragraph text...");
txt.EndEdit();
document.EndChanges();
}
}
}
|
|
Однако, это будет не очень удобно использовать. Если я не ошибаюсь, ссылка на объект узла нужна для автоматической коррекции координат точек параграфа.
Я попробовал также привязку к узлам типа
IntersectionNode, чтобы проверить это.
Скрытый текст |
---|
Код |
---|
using TFlex;
using TFlex.Model;
using TFlex.Model.Model2D;
namespace Test
{
public class ParagraphBuilder
{
static readonly Document document = Application.ActiveDocument;
public static void Run()
{
if (document == null)
return;
var page = document.ActiveView.Page;
if (page == null)
return;
document.BeginChanges("");
var lc1 = new LineConstruction(document) { Page = page };
lc1.SetVertical(10);
var lc2 = new LineConstruction(document) { Page = page };
lc2.SetHorizontal(50);
var lc3 = new LineConstruction(document) { Page = page };
lc3.SetVertical(50);
var lc4 = new LineConstruction(document) { Page = page };
lc4.SetHorizontal(10);
var in1 = new IntersectionNode(document, lc1, lc2) { Page = page };
var in2 = new IntersectionNode(document, lc3, lc4) { Page = page };
ParagraphText txt = new ParagraphText(document)
{
HeightAction = ParagraphText.FitHeightAction.Ignore,
WidthAction = ParagraphText.FitWidthAction.Ignore
};
txt.BeginEdit();
var p1 = new ParagraphText.TextRectangle.Point { X = in1.Coordinates.X, Y = in1.Coordinates.Y, Node = in1 };
var p2 = new ParagraphText.TextRectangle.Point { X = in2.Coordinates.X, Y = in2.Coordinates.Y, Node = in2 };
var rect = new ParagraphText.TextRectangle(p1, p2, page, 0);
txt.AddRectangle(rect);
txt.InsertText("this is inserted paragraph text...");
txt.EndEdit();
document.EndChanges();
}
}
}
|
|
Но, к сожалению, результат оказался еще хуже. Проблема в том, что координаты узлов по нулям (см. вложение).В общем, как временное решение, используйте глобальные переменные для синхронизации координат узлов и точек привязки параграфа.