A
alexey
При работе с autocad 2000-2004 через OLE столкнулся со следующей проблемой: автокад отказывается принимать вызов на создание размера типа Leader через OLE, в то время как все остальные размеры спокойно создаются. При решении данной проблемы я попробовал множество вариантов но результата так и не получил. ПРи создании выноски ей требуется ссылка на обьект MText, сам MText создается без проблем,но вот вызов создания leader при передаче в него mtext срывается с ошибкой - не тот формат входных данных, попытка заменить Mtext на что-то другое, вроде Null,emptyparam не привела к каким-ибо результатам.
Один из вариантов(DElphi 5)
Result:=ModelSpace.AddLeader(v,MText,LeaderType);
где MText уже создан, тип - OleVariant;
LeaderType
TAutoLeaderType=
(acLineNoArrow,acLineWithArrow,acSplineNoArrow,acSplineWithArrow);
v- координаты, получены следующей функцией:
function AutoGetOlePointsCoord(points:TAutoPointArray):OleVariant;
var
i:integer;
begin
Result:=VarArrayCreate([0,3*Length(points)-1],VarDouble);
for i:=0 to High(points) do
begin
Result[i+0]:=points.x;
Result[i+1]:=points.y;
Result[i+2]:=points.z;
end;
end;
впрочем с координатами проблем нет, они работают всегда и везде
MText создается следующей функцией
function AutoAddMText(ModelSpace:OleVariant;
point:TAutoPoint;
width:double;
text:string;
TextSize:double;
Color:Byte):OleVariant;
begin
Result:=ModelSpace.AddMText(AutoGetOlePointCoord(point),
width,
text);
Result.Color:=color;
Result.Height:=TextSize;
end;
после своего создания MText появляется на экране и является вполне работоспособным,
Может кто сталкивался с подобной проблемой?
Один из вариантов(DElphi 5)
Result:=ModelSpace.AddLeader(v,MText,LeaderType);
где MText уже создан, тип - OleVariant;
LeaderType
TAutoLeaderType=
(acLineNoArrow,acLineWithArrow,acSplineNoArrow,acSplineWithArrow);
v- координаты, получены следующей функцией:
function AutoGetOlePointsCoord(points:TAutoPointArray):OleVariant;
var
i:integer;
begin
Result:=VarArrayCreate([0,3*Length(points)-1],VarDouble);
for i:=0 to High(points) do
begin
Result[i+0]:=points.x;
Result[i+1]:=points.y;
Result[i+2]:=points.z;
end;
end;
впрочем с координатами проблем нет, они работают всегда и везде
MText создается следующей функцией
function AutoAddMText(ModelSpace:OleVariant;
point:TAutoPoint;
width:double;
text:string;
TextSize:double;
Color:Byte):OleVariant;
begin
Result:=ModelSpace.AddMText(AutoGetOlePointCoord(point),
width,
text);
Result.Color:=color;
Result.Height:=TextSize;
end;
после своего создания MText появляется на экране и является вполне работоспособным,
Может кто сталкивался с подобной проблемой?