Форум: "Основная";
Текущий архив: 2018.04.01;
Скачать: [xml.tar.bz2];
ВнизСохранение документа AutoCAD Найти похожие ветки
← →
Михаил (2012-12-24 20:25) [0]Здравствуйте уважаемые мастера!!!
Есть 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. Есть команда -ПБЛОК. Она сохраняет не все листы открытого чертежа, а только тот кусок чертежа, который текущий.
Помогите пожалуйста...
← →
Dimka Maslov © (2012-12-24 23:55) [1]1. Делаем команду QSAVE
2. Получаем имя активного документа
3. Переименовываем во что хотим.
← →
Михаил (2012-12-25 05:06) [2]
> Dimka Maslov © (24.12.12 23:55) [1]
Нужно чтобы текущий документ остался не сохраненным. Т.е. нужно текущий документ сохранить в другой файл, а текущий файл чтобы остался как есть.
← →
Dimka Maslov © (2012-12-25 09:41) [3]Мне кажется, что на специализированных форумах по автокаду знающих предмет вопроса куда как больши и подобные задачи они решали. В любом случае можно посоветовать смотреть в сторону такого действа как EXPORT
← →
Dimka Maslov © (2012-12-25 11:10) [4]Вот пример, он всё делает как надо, но такой подход позволяет сохранить документ в 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...
← →
Михаил (2012-12-25 14:40) [5]
> Dimka Maslov © (25.12.12 11:10) [4]
Спасибо! Отлично работает. Правда размер файла в формате dxf примерно в 4 раза больше, чем исходный файл в формате dwg.
Ну как вариант можно создать свой объект AcadApp в невидимом режиме, загрузить в него dxf и выполнить команду SAVEAS в формате dwg. Как то через одно место получается правда((
← →
Михаил (2012-12-26 15:25) [6]Блин. А нельзя все таки как то сразу экспортировать файл в DWG ?
Потому-что открытие нового автокада и пересохранение экспортированного DXF в DWG это очень медленно, особенно если файлы от 5 МБ и больше...
← →
Dimka Maslov © (2012-12-27 13:28) [7]При помощи .NET можно через сохранение базы данных чертежа. Но в Automation другая объектная модель и объект Database метода SaveAs не имеет.
← →
Будь проще, Люк (2012-12-30 19:54) [8]Копируем Чертеж1.dwg в D:\test.dwg
Открываем в автокаде Чертеж1.dwg
← →
Михаил (2012-12-30 20:42) [9]
> Копируем Чертеж1.dwg в D:\test.dwg
> Открываем в автокаде Чертеж1.dwg
>
>
Пользователь не должен ничего заметить. Он должен работать себе спокойно. А тут бах и чертеж закрылся и открылся. И место где он что то чертил уже будет сброшено ну и вообще все. Это не вариант.
← →
Будь проще, Люк (2012-12-30 21:38) [10]А AutoCAD блокирует открытый файл?
Если нет, то Save и копировать.
← →
Михаил (2012-12-31 10:52) [11]
> А AutoCAD блокирует открытый файл?
>
> Если нет, то Save и копировать.
В посте номер 2 я написал, что тек. документ должен остаться несохраненным
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2018.04.01;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.001 c