Форум: "Основная";
Текущий архив: 2003.09.22;
Скачать: [xml.tar.bz2];
ВнизСново Акад... Найти похожие ветки
← →
syte_ser78 (2003-09-10 12:19) [0]Акад 2004
Проблемы с выполнением кода
---------------------
var
Acad, AcadDoc, SelSet: OleVariant;
function AcadConnect: boolean;
begin
try
Acad:=GetActiveOleObject("AutoCAD.Application");
AcadDoc:=Acad.ActiveDocument;
Result:=true;
except
Result:=false;
showmessage(Error");
end;
end;
------------
Строка AcadDoc:=Acad.ActiveDocument;
вылетает с ошибкой - ошибка загрузки библиотеки...
← →
k2 (2003-09-10 12:22) [1]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
comobj, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
Button2: TButton;
Button3: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
function AcadConnect: boolean;
implementation
{$R *.DFM}
var Acad, AcadDoc, SelSet: OleVariant;// IAcadApplication;
//AcadDoc: IAcadDocument;
//SelSet: IAcadSelectionSet;
// выбор метода зависит от типа объекта: например AcadBlock доступен только
// через AcadDocument, большинство остальных - через ActiveDocument.ModelSpace
//******************************************************************************
function AcadConnect: boolean;
begin
try
Acad:=GetActiveOleObject("AutoCAD.Application");//as IAcadApplication;
AcadDoc:=Acad.ActiveDocument;
Result:=true;
except
Result:=false;
showmessage("Связь с AutoCAD не установлена.");
end;
end;
//******************************************************************************
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
ent, bref: OleVariant;//IAcadEntity;
//bref: IAcadBlockReference;
begin
Application.Minimize;
try AcadDoc.SelectionSets.Item("MySels").Delete; except end;
AcadDoc.SelectionSets.Add("MySels");
// методы выбора объектов:
// Select, SelectAtPoint, SelectByPolygon, SelectOnScreen
// параметры методов - смотрим AutoCAD_TLB.pas
AcadDoc.SelectionSets.Item("MySels").SelectOnScreen;//(EmptyParam,EmptyParam);
Memo1.Lines.Add("******** Через SelectionSet ****************");
for i:=0 to AcadDoc.SelectionSets.Item("MySels").Count-1 do
begin
ent:=AcadDoc.SelectionSets.Item("MySels").Item(i);//as IAcadEntity;
Memo1.Lines.Add("EntityName="+ent.EntityName);
Memo1.Lines.Add("EntityType="+IntToHex(ent.EntityType,8));
Memo1.Lines.Add("Handle="+ent.handle);
Memo1.Lines.Add("ObjectID="+IntToStr(ent.ObjectID));
if ent.EntityType=$00000007{acBlockReference} then
begin
bref:=ent;// as IAcadBlockReference;
Memo1.Lines.Add("BlockName="+bref.Name);
end;
Memo1.Lines.Add("");
end;
Application.Restore;
end;
//******************************************************************************
procedure TForm1.Button2Click(Sender: TObject);
var i,j: integer;
block, ent: OleVariant;//IAcadBlock;
//ent: IAcadEntity;
begin
Memo1.Lines.Add("************ Перебором AcadDocument ****************");
for i:=0 to AcadDoc.Blocks.Count-1 do
begin
block:=AcadDoc.Blocks.Item(i);
Memo1.Lines.Add(IntToStr(i)+" "+block.Name);
Memo1.Lines.Add("Примитивы: ");
for j:=0 to block.count-1 do
begin
ent:=block.Item(j);
Memo1.Lines.Add(" "+ent.EntityName);
end;
Memo1.Lines.Add("");
end;
end;
//******************************************************************************
procedure TForm1.Button3Click(Sender: TObject);
var autil: OleVariant;//IAcadUtility;
obj: IDispatch;
ent: OleVariant;//IAcadEntity;
pp,matr,cdata: OleVariant;
begin
Application.Minimize;
Memo1.Lines.Add("************ Через AcadUtility ****************");
autil:=AcadDoc.Utility;
try
autil.GetEntity(obj,pp,"Выберите объект на чертеже :");
ent:=obj;// as IAcadEntity;
Memo1.Lines.Add(ent.EntityName);
except
showmessage("Ничего не выбрано");
end;
try
autil.GetSubEntity(obj,pp,matr,cdata,"Выберите примитив в блоке :");
ent:=obj;// as IAcadEntity;
ent.Color:=acRed; //взорви блок для проверки што достучались
Memo1.Lines.Add(ent.EntityName);
except
showmessage("Ничего не выбрано");
end;
Application.Restore;
end;
//******************************************************************************
end.
проверила под 2004, если остается проблема - не знаю :((
← →
syte_ser78 (2003-09-10 14:59) [2]Огромный сенькс!
Все работает чудестно!
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.09.22;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.01 c