Проблема при печати различных форматов листа из пространства модели

Автор Тема: Проблема при печати различных форматов листа из пространства модели  (Прочитано 14049 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн brainstormАвтор темы

  • ADN OPEN
  • Сообщений: 13
  • Карма: 0
Разобрался с предыдущими вопросами. Теперь код корректно обрабатывает файлы, если название чертежа на латинице.
Если название файла на русском, то не может считать корректно параметры для печати.
PS: у меня тут прям монолог получается ).

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13877
  • Карма: 1785
  • Рыцарь ObjectARX
  • Skype: rivilis
Если название файла на русском, то не может считать корректно параметры для печати.
Проверь в какой кодировке записывается файл DSD. Скорее всего нужно указать правильную кодировку при создании экземпляра System.IO.StreamWriter.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн brainstormАвтор темы

  • ADN OPEN
  • Сообщений: 13
  • Карма: 0
Да, проблема с кодировкой, так как первоначально файл пишется через "dsdData.WriteDsd(dsdFile);" из этого участка кода:
Код - C# [Выбрать]
  1.                     DsdData dsdData = new DsdData
  2.                     {
  3.                         SheetType = SheetType.MultiPdf,
  4.                         ProjectPath = dwgPath,              
  5.                         PromptForDwfName = false,
  6.                         DestinationName = fileName
  7.                     };
  8.  
  9.                     if (System.IO.File.Exists(dsdData.DestinationName))
  10.  
  11.                         System.IO.File.Delete(dsdData.DestinationName);
  12.  
  13.                     dsdData.SetDsdEntryCollection(collection);
  14.  
  15.                     string dsdFile = dsdData.ProjectPath + dwgFileName + ".dsd";
  16.  
  17.                     dsdData.WriteDsd(dsdFile);
  18.  
У dsdData.WriteDsd не нашел способа указать необходимую кодировку.
Пытался решить через StreamWriter,
Код - C# [Выбрать]
  1. System.IO.StreamWriter
  2. sw = new StreamWriter(dsdFile, false, Encoding.GetEncoding(1251));
  3. sw.Write(dsdData);
  4. sw.Close();
  5.  
               
но сходу не нашел как передать всю информацию из списка.
Можно, конечно, снова пытаться решить проблему заменой строк, но если есть способ удобнее и правильнее, буду рад услышать.
PS: Ошибочка, походу это StreamReader без указания явной кодировки не справляется. Проверяю
Глупость сморозил
« Последнее редактирование: 08-02-2023, 19:38:44 от brainstorm »

Оффлайн brainstormАвтор темы

  • ADN OPEN
  • Сообщений: 13
  • Карма: 0
Все, задача решена. Пока отделался банальной заменой строки, но буду рад услышать как это все-таки правильно сделать.
Итоговый код печати рамок из пространства модели, выполненных полилинией на определенном слое, нужен кому? Естественно для этого должны быть подготовлены сначала настройки печати для каждой страницы и нужно эти настройки печати привязать к текущему Layout (в данном случае, пространство модели).

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13877
  • Карма: 1785
  • Рыцарь ObjectARX
  • Skype: rivilis
brainstorm,
Альтернативный вариант - использовать печать в pdf-файл для каждой из рамок, а затем объединить pdf-файлы в один (необходима стороння библиотека работы с pdf-файлами). В этом случае нет необходимости подготавливать отдельные именованные настройки печати.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн brainstormАвтор темы

  • ADN OPEN
  • Сообщений: 13
  • Карма: 0
Александр Ривилис, изначально так и делал, печатая на принтер pdfFactory, причем у меня на двух компьютерах все происходило достаточно быстро и без ошибок. Однако, на компьютере у сотрудника организации, возрастало время печати, а также появлялись проблемы с логикой работы программы, когда на печать выводился только один лист. Поэтому и решил копать в сторону использования встроенного в Autocad инструмента.
Ну и главное не забыть подчистить именованные настройки печати, после публикации, чтобы чертеж пользователю не загаживать.
« Последнее редактирование: 09-02-2023, 08:46:50 от brainstorm »