Форум: "Основная";
Текущий архив: 2002.12.12;
Скачать: [xml.tar.bz2];
ВнизAcad2000 Найти похожие ветки
← →
Lord Warlock (2002-12-02 10:06) [0]
var pl: variant;
APL: AcadPolyline;
AHT: AcadHatch;
lop: Variant;
begin
pl:=VarArrayCreate([1,9],varDouble);
pl[1]:=10;
pl[2]:=10;
pl[3]:=0;
pl[4]:=20;
pl[5]:=20;
pl[6]:=0;
pl[7]:=20;
pl[8]:=0;
pl[9]:=0;
APL:=AcDoc.ModelSpace.AddPolyline(pl);
APL.Color:=acRed;
APL.Closed:=True;
Lop:=VarArrayCreate([1,1],varVariant);
Lop[1]:=APL as AcadEntity;
AHT:=AcDoc.ModelSpace.AddHatch(acHatchPatternTypePreDefined,"SOLID",True);
AHT.AppendOuterLoop(lop);//Собственно тут возникает ошибка Invalid Object Array.
Вопрос - как нужно передавать параметр
← →
Milz (2002-12-03 12:55) [1]Cорри за опоздание, срочная работа подкинулась...
У меня Д6 и акад 2002, по идее для разных версий должны быть только разные .tlb, работаем с автокадом посредством ActiveX-автоматизации, поэтому всё через IDispatch, если делать как ты напрямую то где/когда работает, а где/когда нет ...
"высвобождение" ссылок не привожу...
var
Acad : IAcadApplicationDisp;
AcadDoc : IAcadDocumentDisp;
MS : IAcadModelSpaceDisp;
procedure TForm1.Button1Click(Sender: TObject);
var pl: variant;
APL: IAcadPolylineDisp;
AHT: IAcadHatchDisp;
lop: Variant;
begin
try
Acad:=GetActiveOleObject("AutoCAD.Application") as IAcadApplicationDisp;
AcadDoc:=Acad.ActiveDocument as IAcadDocumentDisp;
MS:=AcadDoc.ModelSpace as IAcadModelSpaceDisp;
except
showmessage("Не удалось связалься с автокадом!");
exit;
end;
(AcadDoc.Utility as IAcadUtilityDisp).Prompt("Hi!");
try
pl:=VarArrayCreate([0,8],varDouble);
pl[0]:=10;
pl[1]:=10;
pl[2]:=0;
pl[3]:=20;
pl[4]:=20;
pl[5]:=0;
pl[6]:=20;
pl[7]:=0;
pl[8]:=0;
APL:=MS.AddPolyline(pl) as IAcadPolylineDisp;
APL.Color:=acRed;
APL.Closed:=True;
Lop:=VarArrayCreate([0,0],varDispatch); // т.к. передаём COM-объект
Lop[0]:=APL;
AHT:=MS.AddHatch(acHatchPatternTypePreDefined,"SOLID",True) as IAcadHatchDisp;
AHT.AppendOuterLoop(lop);
AHT.Evaluate;
Acad.Update;
except
on E: Exception do showmessage(E.Message);
end;
end;
← →
Lord Warlock (2002-12-04 09:25) [2]Благодарю!
← →
k2 (2002-12-04 10:21) [3]Или так, кому как удобнее
var
Acad : AcadApplication;
AcadDoc : AcadDocument;
MS : AcadModelSpace;
procedure TForm1.Button1Click(Sender: TObject);
type TEntType=array of AcadEntity;
var pl: OleVariant;
Apoly: AcadPolyline;
Ahatch: AcadHatch;
Autil:AcadUtility;
ent: TEntType;
begin
try
Acad:=GetActiveOleObject("AutoCAD.Application") as AcadApplication;
AcadDoc:=Acad.ActiveDocument as AcadDocument;
MS:=AcadDoc.ModelSpace as AcadModelSpace;
except
showmessage("Не удалось связалься с автокадом!");
exit;
end;
autil:=AcadDoc.Utility;
autil.Prompt("Hi!");
try
pl:=VarArrayCreate([0,8],varDouble);
pl[0]:=10; pl[1]:=10; pl[2]:=0;
pl[3]:=20; pl[4]:=20; pl[5]:=0;
pl[6]:=20; pl[7]:=0; pl[8]:=0;
Apoly:=MS.AddPolyline(pl);
Apoly.Color:=acRed;
Apoly.Closed:=True;
SetLength(ent,1);
ent[0]:=Apoly;
Ahatch:=MS.AddHatch(acHatchPatternTypePreDefined,"SOLID",True);
Ahatch.AppendOuterLoop(ent);
Ahatch.Evaluate;
Acad.Update;
except
on E: Exception do showmessage(E.Message);
end;
close;
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.12.12;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.004 c