Тема: Помогите разобратся с процедурами:
Помогите разобратся с процедурами:
AcadApp.ActiveDocument.Open()
AcadApp.ActiveDocument.SaveAs();
Что подстовлять внутрь?
Информационный портал для профессионалов в области САПР
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Форумы CADUser → Программирование → Delphi → Помогите разобратся с процедурами:
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Помогите разобратся с процедурами:
AcadApp.ActiveDocument.Open()
AcadApp.ActiveDocument.SaveAs();
Что подстовлять внутрь?
неужели в доках ничего не сказано ?
...
зы. посмотрел в доку - все написано... :(
Ну дак там на VB мне на Delphi Надо..,!
Ты определись что ты хочешь от этих процедур... а то получается - у меня есть AutoCad и Delphi, что дальше?
Для начала Полищука почитай, в инете где-то пара глав из него была, там азы получить мона... Ну и думаю поймешь как доку для VB юзать под Delphi...
Best regards
Что я хочу:
Предположим у меня открыт документ!
мне нужно сохронить этот активный документ и Дельфы
тоесть запускаем процедуру
AcadApp.ActiveDocument.SaveAs();
там три параметра
1. FullName: Widestring;
2. SaveasType:OleVariant;
3. vsecurityParams: OleVariant;
НУ с первым параметром всё конечно понятно - это путь
а вот что подстовлять во второй и третий я незнаю..!
теперь про другую функцию..!
AcadApp.ActiveDocument.Open()
Там два параметра
1. Fullname: WideString;
2. Password: OleVariant;
Ну первый это тоже естественно путь а вот что за пароль такой хитрый я незнаю.,,!
Просили я по подробней написал.,! Ваша очередь писать по подробней!!!
ну как можно поподробнее писать если ты не назвал своих инструментов разработки.... какой 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;
я думаю тут все ясно что мне подставлять в качестве второго параметра.
У меня тока AutoCad 2000 поэтому тоже только 2 параметра
Имхо vsecurityParams: OleVariant и Password: OleVariant - необязательные параметры... в отличие от FileName и FileType.
PS: и если дале будешь
Просили я по подробней написал.,! Ваша очередь писать по подробней!!!
- RTFM получишь...
У меня ACAD 2004 и Delphi 7 сразу возник попутный вопрос как вобще написать прогу чтоб с любым автокадом работала?
Как понять необязательный параметр не могу же я написать к примеру вот так:
AcadApp.ActiveDocument.SaveAs('c:\test.dwg',acUnknown) естественно так работать не будет!!! Напишет нехватает парметров.,!
Интересный факт: Интересный факт в 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)
НУ без знаков вопросов конечно это опечатка..!
И ещё вопрос как преключатся между двумя открытыми чертежами в процессе работы программы?
Имхо так... необязательный параметр задаешь свободным...
AcadApp.ActiveDocument.SaveAs('c:\test.dwg', EmptyParam)
У меня такие вещи реализованы примерно так
..... Try v := GetActiveOleObject('AutoCAD.Application'); AcadDoc.ConnectTo((IDispatch(v) as AcadApplication).ActiveDocument); Except ..... .... AcadDoc.SaveAs('c:\test.dwg', EmptyParam);
Имхо, также мона попробовать и с переключением между файлами работать. (только я бы еще таймер прицепил для надежности...)
Хе первый раз вижу такую структуру!
AcadDoc.ConnectTo((IDispatch(v) as AcadApplication).ActiveDocument);
чем она отличается от:
v:= CreateOleObject('AutoCAD.Application');
Result := IDispatch(v) as IAcadApplication;
ОО сработало наконецто..! Спасибо огромное за содействие..!
Ту что нибуть знаешь как вставить блок ?
С блоками сложнее, поэтому пока не занимался ими, имхо, проще базу создать и выбирать из базы набор примитивов по какому нить признаку... я по крайней мере это так реализовываю...
Ну я так и собираюсь сделать! Будет база с блоками название блока уникально поэтому выбирать просто..!
4sergey
MyICQ: 241312415
тафай выходи - обсудим...
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Форумы CADUser → Программирование → Delphi → Помогите разобратся с процедурами:
Форум работает на PunBB, при поддержке Informer Technologies, Inc