Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.12;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.021 c
3-36028
Grige
2002-11-25 11:40
2002.12.12
Печать графиков


1-36277
HardClubber
2002-12-02 15:54
2002.12.12
Цвет по составляющим r g b


1-36259
Траян
2002-11-30 23:10
2002.12.12
Как сделать чтобы поля записи занимали определенные биты?


3-36007
----
2002-11-23 17:38
2002.12.12
Как в IB6 взять BLOB-поле(текст) и выбрать из него нужные значе..


3-36030
Sergey_Elf
2002-11-25 09:13
2002.12.12
добавить программно поле в таблицу dbf Заманался уже!!!!