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

Вниз

Сново Акад...   Найти похожие ветки 

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

Наверх




Память: 0.47 MB
Время: 0.017 c
14-71839
Карелин Артем
2003-09-01 13:35
2003.09.22
Перепись. Ненормальная.


3-71542
grusty
2003-08-29 17:34
2003.09.22
Проблема с Locate в ADO...


1-71661
AlexVM
2003-09-11 11:42
2003.09.22
Хранение форм в базе данных


1-71737
bon
2003-09-10 14:07
2003.09.22
вопрос


11-71568
Puke Zero
2003-01-16 23:29
2003.09.22
PopupMenu