Главная страница
    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.013 c
1-71721
krotik
2003-09-10 15:26
2003.09.22
Цвет компонента


14-71929
Soft
2003-09-03 16:42
2003.09.22
Пингвин против Терминатора...


14-71946
Dmitriy O.
2003-09-02 16:28
2003.09.22
Как можно получить палитру 256 цветов Виндовс


1-71610
mfender
2003-09-09 04:05
2003.09.22
TIME_ZONE, или как определить сторону света.


6-71818
DimaK
2003-07-16 12:02
2003.09.22
Определить имя рабочей группы





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский