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

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > .NET > Как добраться до "бумаги", желательно через interop.

Как добраться до "бумаги", желательно через interop.

Ответ
Поиск в этой теме
Непрочитано 27.01.2019, 22:39
Как добраться до "бумаги", желательно через interop.
iskatel111
 
Регистрация: 13.06.2012
Сообщений: 98

Есть ModelSpace, с ним все понятно, оно одно. Но у документа есть еще и PaperSpace, с ним не понятно - у меня несколько листов, а свойство одно, и предлагает все тоже что и ModelSpace. Я в замешательстве, как обратиться к конкретному листу?

Ну и в догонку - мне нужно перепечатать один лист с А4 на А3. (то-есть все уже есть, нужно изменить формат)

Для этого нужно (если вручную)

1 в Page Setup Manager изменить формат с А4 на А3 (ориентация та-же)
2 увеличить viewport
3 масштабировать то, что сейчас находится во viewport в два раза
4 переместить углы viewport к углам "бумаги"

ну и собственно распечатать, принтер уже настроен.

Буду благодарен, если накидаете ф-ций, отвечающих за это.
Просмотров: 14983
 
Непрочитано 29.01.2019, 15:10
| 1 #21
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от iskatel111 Посмотреть сообщение
А так то автокад не основная у меня программа, и даже не вспомогательная... Эпизодическая. Последний раз я сталкивался с ним шесть лет назад! Тогда нужно было изменить программу для ЧПУ, которую он воспринимал в виде файла .dxf с чем-то напоминающем чертеж внутри (точнее полторы сотни таких программ). С печатью соответственно тогда я дела не имел. В этот раз нужно на готовом чертеже делать пометки / надписи и печатать в картинку. В следующий раз... а будет ли он этот следующий раз вообще? Так что изучать все "от и до" удовольствие сомнительное - это может даже никогда не пригодиться...
При таких вводных проще вручную переделать.
Цитата:
Сообщение от iskatel111 Посмотреть сообщение
Да и вопрос вроде не такой уж сложный чтоб к фрилансерам бежать.
Хм. По моей собственной 10 бальной шкале сложности я бы задачу оценил примерно на 7 из 10. Такая программа за один присест не напишется. Надо гуглить, изучать чужие похожие разработки в открытом доступе, экспериментировать... Если опыта разработки под автокад мало, то это может затянуться на месяцы. Опытный человек за недельку-другую по вечерам напишет, наверное.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Автор темы   Непрочитано 29.01.2019, 15:14
| 1 #22
iskatel111


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


Цитата:
Сообщение от Do$ Посмотреть сообщение
Опытный человек за недельку-другую по вечерам напишет, наверное.
Это стеб такой? Две недели на изменение формата листа? Или вы сын директора, потому и работаете по своему расписанию?
iskatel111 вне форума  
 
Непрочитано 29.01.2019, 15:21
| 1 #23
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


Цитата:
Сообщение от iskatel111 Посмотреть сообщение
Это стеб такой?
нет, не стёб. Вы просто не вполне осознаете с чем и как Вам придется работать. В документации к API автокада, много белых дыр и совсем не очевидных моментов. Для примера, такую простую задачу, как выключить все ВЭ в файле, ковыряли несколько дней и то, я например, так до конца во всем не разобрался. С другой стороны Do$ и Вы, видите функционал плагина каждый по своему и каждый видит свой объем хотелок...

С другой стороны, при Вашем умении работать с документацией ... может и пол года выйти...
Boxa вне форума  
 
Непрочитано 29.01.2019, 15:28
#24
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,293
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от iskatel111 Посмотреть сообщение
Две недели на изменение формата листа?
  1. прочитать все установленные в системе принтеры
  2. прочитать их CanonicalMediaName-процесс ни разу не быстрый, поэтому желательно где-то сохранить результат, в тестовый файл xml например
  3. пробежать по каталогам,
  4. и рекурсивно открывать файлы чертежей
  5. пробежать по листам чертежей, выбрать те которые удовлетворяют условиям (хз еще каким)
  6. двинуть виевпорты если требуется (если один ладно, а если несколько.. то ой))
  7. задать новый PlotConfiguration и назначить его отобранным листам либо каждому Layout индивидуально поменять настройки печати...
напоследок прикрутить к этому делу какой никакой вменяемый интерфейс
настройки надо както гдето хранить или при каждом запуске раз забивать одни и те же руками
коротенько так...
----------------------
что из перечисленного ты можешь сделать уже сейчас?
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 29.01.2019, 15:29
#25
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,000


Кстати, если вы реализуете своей алгоритм:
Цитата:
Сообщение от iskatel111 Посмотреть сообщение
1 в Page Setup Manager изменить формат с А4 на А3 (ориентация та-же)
2 увеличить viewport
3 масштабировать то, что сейчас находится во viewport в два раза
то получите ли два идентичных по содержимому чертежа?
Сергей812 вне форума  
 
Непрочитано 29.01.2019, 15:30
| 1 #26
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


А только сыновья директоров могут работать по свободному графику?
По теме. Нет, не стёб. Я уже имел дело с настройками листов в LISP и в .NET. API в этом плане не сказать, что очень дружелюбное. В добавок к этому, задачи такого плана встают нечасто, поэтому, каждый раз нужно практически с нуля всё заново изучать/вспоминать. Ну и, срок две недели - имеется в виду, что это не в рабочее время (когда надо основную работу делать), а в свободное от работы время - примерно час (максимум два) в день.
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
 
Непрочитано 29.01.2019, 15:50
#27
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,293
Отправить сообщение для doctorraz с помощью Skype™


если я ванга (а образец чертежа кода мы так и не увидели, так что вынужден)
то у ТС все 100500 форматов находятся в модели, в листах только видовые экраны на форматы.
в этом случае время на выполнение задачи может сократиться до 7 дней и одного часа
из которых 7 дней уйдет у ТС на освоение РЕВЕРС в части автоматического создания листов с заданными настройками печати из форматок расположенных в модели
и 1 час потратит РЕВЕРС, что бы эти 100500 файлов привести в нужный вид.
если ТС разберется быстрее семи дней, то у него есть шанс сэкономить двести рублей на покупке программы.
__________________
Мастерская СПДС
doctorraz вне форума  
 
Автор темы   Непрочитано 29.01.2019, 15:51
#28
iskatel111


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


Цитата:
Сообщение от doctorraz Посмотреть сообщение
прочитать все установленные в системе принтеры
прочитать их CanonicalMediaName-процесс ни разу не быстрый, поэтому желательно где-то сохранить результат, в тестовый файл xml например
пробежать по каталогам,
и рекурсивно открывать файлы чертежей
пробежать по листам чертежей, выбрать те которые удовлетворяют условиям (хз еще каким)
двинуть виевпорты если требуется (если один ладно, а если несколько.. то ой))
задать новый PlotConfiguration и назначить его отобранным листам либо каждому Layout индивидуально поменять настройки печати...
напоследок прикрутить к этому делу какой никакой вменяемый интерфейс
настройки надо както гдето хранить или при каждом запуске раз забивать одни и те же руками
1,2 вроде как и не нужно. там уже установлен adobePdf принтер, разве нельзя скопировать PlotConfiguration, или изменить в имеющемся только формат, не заполняя PlotConfiguration заново?
3,4 ну я вроде как уже 18 лет программирую. Автокад только не часто видел.
5 тот что Layout1 называется, есть сложности "пробежаться"? Это не обычная коллекция? нельзя разве как в экселе foreach worksheet in workbook.worksheets?
6 тут какие сложности? он не двигается "за углы", или "точка вставки, ширина, высота"? (он один)
7 см. п 1.

Вроде ничего особо сложного. Я только заткнулся на том, что PaperSpace как бы одно, и интуитивно искал чтото вроде свойства Items. Не нашел. Решил спросить.

Цитата:
Сообщение от Сергей812 Посмотреть сообщение
то получите ли два идентичных по содержимому чертежа?
Если вы про масштаб в 2 раза, то это решается методом подбора Мне важно чтоб вид не "уехал", т.к. он вручную выставлен

----- добавлено через ~9 мин. -----
Цитата:
Сообщение от doctorraz Посмотреть сообщение
то у ТС все 100500 форматов находятся в модели, в листах только видовые экраны на форматы.
Все еще проще, никаких форматов нет, в модели один большой чертеж, в листах просто один лист, на который натянут ViewPort, в котором выбрано нужное место чертежа. Разве только на разных листах разные слои заморожены.
iskatel111 вне форума  
 
Непрочитано 29.01.2019, 16:04
#29
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,000


Цитата:
Сообщение от iskatel111 Посмотреть сообщение
разве нельзя скопировать PlotConfiguration, или изменить в имеющемся только формат, не заполняя PlotConfiguration заново?
Из этой фразы следует - что предыдущие посты хотя бы с начала этого дня вы не читали или прочитали по диагонали, ища готовое решение.
Цитата:
Сообщение от iskatel111 Посмотреть сообщение
3,4 ну я вроде как уже 18 лет программирую. Автокад только не часто видел.
за 18 лет не научиться пользоваться справкой и искать информацию в инете...
Цитата:
Сообщение от iskatel111 Посмотреть сообщение
Если вы про масштаб в 2 раза, то это решается методом подбора
это решается вычислением соответствующего коэффициента по отношению сторон масштабов - какой подбор?
Сергей812 вне форума  
 
Автор темы   Непрочитано 29.01.2019, 16:09
#30
iskatel111


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
Из этой фразы следует - что предыдущие посты хотя бы с начала этого дня вы не читали
Да, я писал об этом в #20 и писал почему, мы это по кругу выяснять будем?

Цитата:
Сообщение от Сергей812 Посмотреть сообщение
это решается вычислением соответствующего коэффициента по отношению сторон масштабов - какой подбор?
Вот этого коэффициента и подбор. Я ж поставил смайлик...

----- добавлено через ~7 мин. -----
Кстати A4 это же половина А3, что-то я туплю - почему 2 не подойдет?
iskatel111 вне форума  
 
Непрочитано 29.01.2019, 16:21
#31
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,000


Цитата:
Сообщение от iskatel111 Посмотреть сообщение
Да, я писал об этом в #20 и писал почему, мы это по кругу выяснять будем?
ну сейчас вам информации достаточно, надеюсь?

Цитата:
Сообщение от iskatel111 Посмотреть сообщение
Кстати A4 это же половина А3, что-то я туплю - почему 2 не подойдет?
если при
Цитата:
Сообщение от iskatel111 Посмотреть сообщение
(ориентация та-же)
то нет
Сергей812 вне форума  
 
Автор темы   Непрочитано 29.01.2019, 16:27
#32
iskatel111


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
ну сейчас вам информации достаточно, надеюсь?
Сам надеюсь, но проверять буду позже...

Забавная кстати ситуация - если б не аврал, я бы спокойно сам все нашел и здесь не написал. Но вот написал, и теперь каждый стремится обозвать меня мудураком, за то что я сам не нашел. Что с форумами стало...
iskatel111 вне форума  
 
Непрочитано 29.01.2019, 16:48
| 1 #33
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,000


Цитата:
Сообщение от iskatel111 Посмотреть сообщение
Но вот написал, и теперь каждый стремится обозвать меня мудураком, за то что я сам не нашел. Что с форумами стало...
Что-то не заметил в первых постах, чтобы кто-то кого-то обзывал. А потом вы начали высказывать какие то непонятные притензии типа:
Цитата:
Сообщение от iskatel111 Посмотреть сообщение
в других ветках людям отвечают даже примерами с кодом, я спросил всего-лишь названия ф-ций и был послан в справку
хотя если открыть ссылки - то там названия функций, и каждое название ведет на страницу с подробным описанием и даже порою с примером. По этим примерам нагуглить примеры рабочих кодов нельзя только в одном случае - если даже не пытаться делать этого... Думайте, пишите свой код и что не получается - подскажут при наличии возможности. А аврал у вас, лень вам или что-то еще - ну кого это интересует тут...
Сергей812 вне форума  
 
Автор темы   Непрочитано 29.01.2019, 17:08
#34
iskatel111


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


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
А потом вы начали высказывать какие то непонятные притензии
Да не претензии это, шутить пытался, даже смайликов поставил...

Цитата:
Сообщение от Сергей812 Посмотреть сообщение
ну кого это интересует тут...
С одной стороны верно, но с другой... Если вопрос задан значит он кому-то нужен. Не хотите отвечать, чтож, может кто другой ответит. Но все чаще на вопрос "сколько времени" предлагают инструкцию по сборке часов. Причем я заметил, что чем проще вопрос задаешь - тем сложнее получить ответ. Люди почему-то готовы учить тех, кто не понимает даже что и зачем делают, разжевывают им, код пишут. А тебе то нужна всего-лишь подсказка - так нет, гугли...
iskatel111 вне форума  
 
Непрочитано 29.01.2019, 18:22
#35
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,293
Отправить сообщение для doctorraz с помощью Skype™


Собственно ответ на вопрос топа из справки кстате)))
по CanonicalMediaName в справке ищется
Цитата:
Сообщение от iskatel111 Посмотреть сообщение
Как добраться до "бумаги"
Код:
[Выделить все]
Sub Example_CanonicalMediaName()
    ' This example finds the name of the media for the active layout
    
    Dim MediaName As String
    MediaName = ThisDrawing.ActiveLayout.CanonicalMediaName
    
    If MediaName = "" Then
        MsgBox "There is no media set for the active layout."
    Else
        MsgBox "The media for the active layout is: " & MediaName
    End If
End Sub
только вот добраться до "бумаги" и изменить "бумагу", это немного разное, о чем тебе выше непрозрачно намекали.
там надо сперва добраться до принтеров и их бумаги...
но это потом....
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 29.01.2019, 19:01
1 | 1 #36
Boxa

КЖ; C#
 
Регистрация: 03.11.2005
Санкт-Петербург
Сообщений: 2,588


ДА оставьте вы человека в покое, он получил то, что хотел и если считает, что там все просто и понятно и он успеет разобраться с вопросом когда будет в цейтноте... ну здорово, значит вопрос решен. О чем тут еще говорить? Подождем, посмотрим как будет развиваться ситуация....
Boxa вне форума  
 
Непрочитано 29.01.2019, 20:33
#37
trir


 
Регистрация: 18.12.2010
Сообщений: 5,047


я такое делал много лет назад, на форуме тот код выкладывали, там всё есть - искать лень, надо - ищи
нашёл
я всё забыл
trir на форуме  
 
Автор темы   Непрочитано 02.02.2019, 00:01
#38
iskatel111


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


Всем спасибо, кто помогал. В общем такой код делает то что мне нужно. Даже масштабировать ничего не пришлось - оно само, если "натягивать" viewport находясь в MSpace

ЗЫ. так и не понял накой перебирать принтеры, и что тут делать две недели... У меня полчасика ушло разобраться.

Код:
[Выделить все]
  AcadApplication app = (AcadApplication)Marshal.GetActiveObject("Autocad.Application");
            AcadDocument doc = app.ActiveDocument;

            foreach (AcadLayout item in doc.Layouts)
            {
                if (item.Name == "Layout1")
                {
                    doc.ActiveLayout = item;
                    doc.ActiveLayout.CanonicalMediaName = "A3";
                    break;
                }
            }

            doc.MSpace = true;
            doc.ActivePViewport.Center = new double[] { 148.5, 210, 0 };
            doc.ActivePViewport.Height = 420;
            doc.ActivePViewport.Width = 297;
            doc.MSpace = false;

            doc.Plot.PlotToDevice();
iskatel111 вне форума  
 
Непрочитано 02.02.2019, 00:30
| 1 #39
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,000


Цитата:
Сообщение от iskatel111 Посмотреть сообщение
так и не понял накой перебирать принтеры, и что тут делать две недели... У меня полчасика ушло разобраться.
у вас один частный случай, и если бы не помогали - неизвестно бы сколько сидели бы)
Сергей812 вне форума  
 
Непрочитано 05.02.2019, 11:33
#40
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
у вас один частный случай
Согласен, частнее некуда.
Цитата:
Сообщение от iskatel111 Посмотреть сообщение
В общем такой код делает то что мне нужно.
Ну раз это работает как надо, можно только порадоваться за Вас
Цитата:
Сообщение от iskatel111 Посмотреть сообщение
ЗЫ. так и не понял накой перебирать принтеры, и что тут делать две недели... У меня полчасика ушло разобраться.
Вот так - достаточно хорошо мотивировать человека, чтобы он сам выделил наконец полчасика и разобрался со своей задачей
__________________
Толковый выбор приходит с опытом, а к нему приводит выбор бестолковый. (The Mechanic)
Do$ вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > .NET > Как добраться до "бумаги", желательно через interop.

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли эвакуироваться через помещение в коридор, ведущий к наружному выходу? snair Пожарная безопасность 2 12.12.2018 08:57
Запрет на проезд локомотивов через эстакаду, какие меры предпринять? Swarka Автомобильные и железные дороги, мосты, тоннели и организация движения 7 01.06.2018 15:21
Изменение масштаба блока при вставке через буфер Immortal_6666 AutoCAD 6 08.05.2018 12:57
Как сделать что бы открывать и сохранять файлы можно было как обычно через мышку, а не через командную строку? beslan AutoCAD 1 17.10.2011 11:43
Через 25 лет стоимость эксплуатации превышает стоимость строительства ? Tyhig Архитектура 41 24.08.2011 11:00