![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сохранение документа AutoCAD [D7, WinXP]
Михаил © (2012-12-24 20:25:00)Здравствуйте уважаемые мастера!!!
Есть OLE объект:
AcadApp: OleVariant;
...
AcadApp := GetActiveOleObject('AutoCAD.Application');
Нужна такая команда, которой можно сохранить текущий документ, при этом чтоб он (документ) остался текущим.
Т.е. нужен след. алгоритм
1. Открыт документ Чертеж1.dwg
2. Сохранить документ Чертеж1.dwg как D:\test.dwg
3. Появляется файл D:\test.dwg
4. В автокаде активным остается Чертеж1.dwg
.........
Что я пробовал:
1. Есть команда СОХРАНИТЬКАК, она же _SAVEAS. Делает то что надо, но после ее выполнения в автокаде открывается сохраненный документ, а тот который был открыт закрывается.
2. Есть команда -ПБЛОК. Она сохраняет не все листы открытого чертежа, а только тот кусок чертежа, который текущий.
Помогите пожалуйста...
Михаил (2012-12-31 10:52:00) [1]
> А AutoCAD блокирует открытый файл?
>
> Если нет, то Save и копировать.
В посте номер 2 я написал, что тек. документ должен остаться несохраненным
Будь проще, Люк (2012-12-30 21:38:00) [2]А AutoCAD блокирует открытый файл?
Если нет, то Save и копировать.
Михаил (2012-12-30 20:42:00) [3]
> Копируем Чертеж1.dwg в D:\test.dwg
> Открываем в автокаде Чертеж1.dwg
>
>
Пользователь не должен ничего заметить. Он должен работать себе спокойно. А тут бах и чертеж закрылся и открылся. И место где он что то чертил уже будет сброшено ну и вообще все. Это не вариант.
Будь проще, Люк (2012-12-30 19:54:00) [4]Копируем Чертеж1.dwg в D:\test.dwg
Открываем в автокаде Чертеж1.dwg
Dimka Maslov (2012-12-27 13:28:00) [5]При помощи .NET можно через сохранение базы данных чертежа. Но в Automation другая объектная модель и объект Database метода SaveAs не имеет.
Михаил (2012-12-26 15:25:00) [6]Блин. А нельзя все таки как то сразу экспортировать файл в DWG ?
Потому-что открытие нового автокада и пересохранение экспортированного DXF в DWG это очень медленно, особенно если файлы от 5 МБ и больше...
Михаил (2012-12-25 14:40:00) [7]
> Dimka Maslov © (25.12.12 11:10) [4]
Спасибо! Отлично работает. Правда размер файла в формате dxf примерно в 4 раза больше, чем исходный файл в формате dwg.
Ну как вариант можно создать свой объект AcadApp в невидимом режиме, загрузить в него dxf и выполнить команду SAVEAS в формате dwg. Как то через одно место получается правда((
Dimka Maslov (2012-12-25 11:10:00) [8]Вот пример, он всё делает как надо, но такой подход позволяет сохранить документ в dxf
procedure TForm3.Button2Click(Sender: TObject);
var
Unk: IUnknown;
Disp: IDispatch;
App, Doc, Sel: Variant;
Cls: TGUID;
begin
Cls := ProgIDToClassID('AutoCAD.Application');
if not Succeeded(GetActiveObject(Cls, nil, Unk)) then
raise Exception.Create('Cannot connect to AutoCAD.Application');
Unk.QueryInterface(IDispatch, Disp);
App := Disp;
try
Doc := App.ActiveDocument;
try
Sel := Doc.SelectionSets.Add('_TEMP_' + IntToStr(GetTickCount));
try
Doc.Export('d:\111', 'dxf', Sel);
finally
Sel := Unassigned;
end;
finally
Doc := Unassigned;
end;
finally
App := Unassigned;
end;
end;
Думаю потом можно отдельно открыть dxf и пересохранить в dwg...
Dimka Maslov (2012-12-25 09:41:00) [9]Мне кажется, что на специализированных форумах по автокаду знающих предмет вопроса куда как больши и подобные задачи они решали. В любом случае можно посоветовать смотреть в сторону такого действа как EXPORT
Михаил (2012-12-25 05:06:00) [10]
> Dimka Maslov © (24.12.12 23:55) [1]
Нужно чтобы текущий документ остался не сохраненным. Т.е. нужно текущий документ сохранить в другой файл, а текущий файл чтобы остался как есть.
Dimka Maslov (2012-12-24 23:55:00) [11]1. Делаем команду QSAVE
2. Получаем имя активного документа
3. Переименовываем во что хотим.