Тема: Помогите разобратся с процедурами:

Помогите разобратся с процедурами:
AcadApp.ActiveDocument.Open()
AcadApp.ActiveDocument.SaveAs();
Что подстовлять внутрь?

Re: Помогите разобратся с процедурами:

неужели в доках ничего не сказано ?
...
зы. посмотрел в доку - все написано...  :(

Re: Помогите разобратся с процедурами:

Ну дак там на VB мне на Delphi Надо..,!

Re: Помогите разобратся с процедурами:

Ты определись что ты хочешь от этих процедур... а то получается - у меня есть AutoCad и Delphi, что дальше?
Для начала Полищука почитай, в инете где-то пара глав из него была, там азы получить мона... Ну и думаю поймешь как доку для VB юзать под Delphi...
Best regards

Re: Помогите разобратся с процедурами:

Что я хочу:
Предположим у меня открыт документ!
мне нужно сохронить  этот активный  документ и Дельфы
тоесть запускаем процедуру
AcadApp.ActiveDocument.SaveAs();
там три параметра
1. FullName: Widestring;
2. SaveasType:OleVariant;
3. vsecurityParams: OleVariant;
НУ с первым параметром всё  конечно понятно - это путь
а вот что подстовлять во второй и третий я незнаю..!
теперь про другую функцию..!
AcadApp.ActiveDocument.Open()
Там два параметра
1. Fullname: WideString;
2. Password: OleVariant;
Ну первый это тоже естественно путь а вот что за пароль такой хитрый я незнаю.,,!
Просили я по подробней написал.,! Ваша очередь писать по подробней!!!

Re: Помогите разобратся с процедурами:

ну как можно поподробнее писать если ты не назвал своих инструментов разработки.... какой Acad ?, какой Delphi ?
.
у меня, например, Acad 2002  и у него в доке описан метод документа SaveAs() с 2-мя параметрами (FileName, FileType), а не с 3-мя   :(
.
зы. по-поводу FileType посмотрел в импортированную библиотеку типов, там есть такие строки:

// Constants for enum AcSaveAsType
type
  AcSaveAsType = TOleEnum;
const
  acUnknown = $FFFFFFFF;
  acR12_dxf = $00000001;
  acR13_dwg = $00000004;
  acR13_dxf = $00000005;
  acR14_dwg = $00000008;
  acR14_dxf = $00000009;
  acR15_dwg = $0000000C;
  acR15_dxf = $0000000D;
  acR15_Template = $0000000E;
  acNative = $0000000C;

я думаю тут все ясно что мне подставлять в качестве второго параметра.

Re: Помогите разобратся с процедурами:

У меня тока AutoCad 2000 поэтому тоже только 2 параметра
Имхо vsecurityParams: OleVariant и Password: OleVariant - необязательные параметры... в отличие от FileName и FileType.
PS: и если дале будешь

Просили я по подробней написал.,! Ваша очередь писать по подробней!!!

- RTFM получишь... wink

Re: Помогите разобратся с процедурами:

У меня ACAD 2004 и Delphi 7 сразу возник попутный вопрос как вобще написать прогу чтоб с любым автокадом работала?

Re: Помогите разобратся с процедурами:

Как понять необязательный параметр не могу же я написать к примеру вот так:
AcadApp.ActiveDocument.SaveAs('c:\test.dwg',acUnknown) естественно так работать не будет!!! Напишет нехватает парметров.,!

Re: Помогите разобратся с процедурами:

Интересный факт: Интересный факт в AutoCAD_TLB.pas описано аш три процедуры:

procedure TAcadDocument.SaveAs(const FullFileName: WideString);
begin
  DefaultInterface.SaveAs(FullFileName, EmptyParam, EmptyParam);
end;
procedure TAcadDocument.SaveAs(const FullFileName: WideString; SaveAsType: OleVariant);
begin
  DefaultInterface.SaveAs(FullFileName, SaveAsType, EmptyParam);
end;
procedure TAcadDocument.SaveAs(const FullFileName: WideString; SaveAsType: OleVariant;
                               vSecurityParams: OleVariant);
begin
  DefaultInterface.SaveAs(FullFileName, SaveAsType, vSecurityParams);
end;

Как видите в превой нужен только путь, в второй путь и FileType в третей нужны все три параметра.,! ДАк почемуже у меня дельфа ругается что нехватает парметров когда я например пишу просто AcadApp.ActiveDocument.SaveAs ???????('c:\test.dwg',acUnknown)

Re: Помогите разобратся с процедурами:

НУ без знаков вопросов конечно это опечатка..!

Re: Помогите разобратся с процедурами:

И ещё вопрос как преключатся между двумя открытыми чертежами в процессе работы программы?

Re: Помогите разобратся с процедурами:

Имхо так... необязательный параметр задаешь свободным...
AcadApp.ActiveDocument.SaveAs('c:\test.dwg', EmptyParam)
smile

Re: Помогите разобратся с процедурами:

У меня такие вещи реализованы примерно так

.....
  Try
    v := GetActiveOleObject('AutoCAD.Application');
    AcadDoc.ConnectTo((IDispatch(v) as  AcadApplication).ActiveDocument);
  Except
  .....
....
AcadDoc.SaveAs('c:\test.dwg', EmptyParam); 

Имхо, также мона попробовать и с переключением между файлами работать. (только я бы еще таймер прицепил для надежности...)

Re: Помогите разобратся с процедурами:

Хе первый раз вижу такую структуру!
AcadDoc.ConnectTo((IDispatch(v) as AcadApplication).ActiveDocument);
чем она отличается от:
v:= CreateOleObject('AutoCAD.Application');
Result := IDispatch(v) as IAcadApplication;

Re: Помогите разобратся с процедурами:

ОО сработало наконецто..! Спасибо огромное за содействие..!
Ту что нибуть знаешь как вставить блок ?

Re: Помогите разобратся с процедурами:

smile С блоками сложнее, поэтому пока не занимался ими, имхо, проще базу создать и выбирать из базы набор примитивов по какому нить признаку... я по крайней мере это так реализовываю...

Re: Помогите разобратся с процедурами:

Ну я так и собираюсь сделать! Будет база с блоками название блока уникально поэтому выбирать просто..!

Re: Помогите разобратся с процедурами:

4sergey
MyICQ: 241312415
тафай выходи - обсудим...