Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
6-71790
Blondin
2003-07-22 14:56
2003.09.22
Подтверждение получения письма


14-71897
Bel
2003-09-03 14:36
2003.09.22
Москвичи, посоветуйте провайдера


1-71683
некто
2003-09-11 12:05
2003.09.22
встроенный SMTP


1-71586
saNat
2003-09-10 02:10
2003.09.22
MainMenu


3-71496
Deniz
2003-08-29 07:46
2003.09.22
ADO + Parameters ... Null





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский