Масштабирование при печати в файл
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Масштабирование при печати в файл

Масштабирование при печати в файл

Ответ
Поиск в этой теме
Непрочитано 08.08.2012, 05:17 #1
Масштабирование при печати в файл
Василий Коржиков
 
Регистрация: 26.07.2012
Сообщений: 12

Пытаюсь сконвертировать файл в jpg при помощи следующих команд
Код:
[Выделить все]
  object Layouts = oDoc.GetType().InvokeMember("Layouts",BindingFlags.GetProperty,null,oDoc,null);
               int Count = (int)Layouts.GetType().InvokeMember("Count",BindingFlags.GetProperty,null,Layouts,null);
               Object[] oPar = new object[1];
                for (int i = 0; i < Count; i++)
                {
                    Thread.Sleep(1000);
                    oPar[0] = i;
                    object item=Layouts.GetType().InvokeMember("Item",BindingFlags.InvokeMethod,null,Layouts,oPar);
                    item.GetType().InvokeMember("StandardScale", BindingFlags.SetProperty, null, item, new object[] { 0 });
                    item.GetType().InvokeMember("PlotType", BindingFlags.SetProperty, null, item, new object[] { 1 });
                    string ItemName = item.GetType().InvokeMember("Name",BindingFlags.GetProperty,null,item,null).ToString();
                    if (ItemName == faName)
                    {
                        IsQuiescent();
                        string s = System.IO.Path.GetTempFileName();// System.IO.Path.GetRandomFileName();
                        string[] Names = new string[] { ItemName };
                        oRet = oDoc.GetType().InvokeMember("Plot", BindingFlags.GetProperty,
                               null, oDoc, null);
                        Thread.Sleep(1000);
                        oParams = new object[1];
                        oParams[0] = Names;
                        oRet.GetType().InvokeMember("SetLayoutsToPlot", BindingFlags.InvokeMethod, null,oRet,oParams);
                        oParams = new object[2];
                        if (faHeight.HasValue&&faWidth.HasValue)
                        {
                         oParams[0] =s.Substring(0,s.Length-3)+"jpg";
                        }
                        else
                            oParams[0]=faOutput;
                            oParams[1] = "PublishToWeb JPG.pc3";
                        oRet.GetType().InvokeMember("PlotToFile", BindingFlags.InvokeMethod,
                 null, oRet, oParams);
                        if (faHeight.HasValue&&faWidth.HasValue)
                        {
                      Bitmap b = new Bitmap(oParams[0].ToString());
                        Bitmap a = ResizeBitmap(b, faWidth.Value, faHeight.Value);
                        System.IO.File.Delete(s);
                        a.Save(faOutput);
                        }
                      //  b.Save(faOutput);
                        break;
                    }
В результате получаю следующую картину справа от рисунка белая область равная по ширине самому чертежу, при попытке экспортировать в jpg из autocad выдается окно:"Конфигурация плоттера не поддерживает формат текущего листа. выберите одну из следующих возможностей:".
1.по умолчанию
2.пользовательский
3.Использовать нестандартный формат и добавить его в конфигурацию плоттера
Выбираю 3 вариант и после этого все конвертиться удачно, как сделать тоже самое програмно
Просмотров: 3064
 
Непрочитано 08.08.2012, 11:37
#2
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Изменить конфигурацию плотера или подогнать jpg под стандартный формат.
Offtop: з.ы. Зачем позднее связывание?? - вызывать COM через C# позднее связывание это изврат полный, нужна разноверсионная совместимость - пиши на лиспе.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 08.08.2012, 11:40
#3
Василий Коржиков


 
Регистрация: 26.07.2012
Сообщений: 12


Спасибо за ответ,Дмитрий. Как изменить конфигурацию плоттера программно? Приведите пожалуйста код, заранее признателен.
Василий Коржиков вне форума  
 
Непрочитано 08.08.2012, 11:49
#4
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


Изменить в рукопашную, сохранить в свой pc3 файл и использовать его.
__________________
Когда в руках молоток все вокруг кажется гвоздями.
Дима_ вне форума  
 
Автор темы   Непрочитано 08.08.2012, 12:22
#5
Василий Коржиков


 
Регистрация: 26.07.2012
Сообщений: 12


Такой вариант не подойдет, так как объяснить десяткам клиентов из других городов что им необходимо произвести эту операцию в ручную не получиться. Любая операция из интерфейса автокада должна по идее быть выполнима из объектной модели, разве нет?
Василий Коржиков вне форума  
 
Непрочитано 08.08.2012, 13:06
#6
Дима_

Продуман
 
Регистрация: 22.02.2007
Питер
Сообщений: 2,839


1. Клиентам не надо ничего объяснять - инсталятором должен устанавливаться соответствующий pc3 файл (который Вы сделали в рукопашную).
2. Еще как нет. Я знаю несколько вещей (возможных в "рукопашную") которые никак не возможно сделать не только через Active-X (там вобще много чего нет), но и через .Net/Arx API (по сути их можно сделать только при очень глубоком копании лиспом в DXF чертежа, но это относиться только к тому что "происходит в рисунке").
Из справки Active-X по объекту Plot:
Цитата:
You cannot create a configured plotter (PC3) file using ActiveX. To create a PC3 file, use the Add-a-Plotter wizard in AutoCAD. If you want to use a PC3 file for plotting, the file should be located in the Plotters folder. For more information, see the AutoCAD user documentation.
Offtop: з.ы. не в обиду Вам, но писать для "десятков клиентов в разных городах" будучи совсем не в теме происходящего это как-то не айс.
з.з.ы Боюсь спрашивать как у Вас дальше используется jpg - а то что-то подсказывает мне (скажем так по опыту), что Вы не тем путем идете (как минимум в методе получения каринки).
__________________
Когда в руках молоток все вокруг кажется гвоздями.

Последний раз редактировалось Дима_, 08.08.2012 в 13:16.
Дима_ вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Масштабирование при печати в файл



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Восстановление *.DWG Солидворкер AutoCAD 5302 02.09.2025 12:21
область печати nekesh AutoCAD 5 10.12.2010 15:34
В русской версии AutoCAD 2010 SP1 32-bit файл Acad.PGP содержит ошибки. hwd Баги и пожелания в Autodesk 21 21.04.2010 20:27
Нужно сделать учебную рамку и подготовить файл к печати A_R_H_I_T_E_K_T_O_R AutoCAD 2 28.10.2009 15:47
Как изменить размеры файла при экспорте чертежа в файл формата WMF [AutoCad 2008]. NZ AutoCAD 3 19.08.2009 08:17