Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
2-1459961908
Погроммист
2016-04-06 19:58
2018.04.01
Как определить MAC адрес НУЖНОГО адаптера


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


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


2-1458549557
Signal
2016-03-21 11:39
2018.04.01
IWebBrowser2 не получается получить текст


1-1356702635
vlk32
2012-12-28 17:50
2018.04.01
Ошибка в стандартной библиотеке?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский