Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2018.04.01;
Скачать: CL | DM;

Вниз

Сохранение документа 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.009 c
1-1356702635
vlk32
2012-12-28 17:50
2018.04.01
Ошибка в стандартной библиотеке?


2-1459516762
mtk
2016-04-01 16:19
2018.04.01
Отслеживание изменений в директории


15-1470954808
Kilkennycat
2016-08-12 01:33
2018.04.01
SaaS. Практические технологии (плюсы и минусы) создания?


1-1356366310
Михаил
2012-12-24 20:25
2018.04.01
Сохранение документа AutoCAD


6-1285639970
ForumReader
2010-09-28 06:12
2018.04.01
Запустить несколько TWebBrowser, чтобы куки не путались...