• Добро пожаловать на Форум пользователей ПО АСКОН. Пожалуйста, авторизуйтесь.
 

Уважаемые пользователи,

Хотим проинформировать вас о режиме работы регистрации на нашем сайте.

Зарегистрироваться возможно в рабочие дни, с 8:00 до 20:00 (мск).

Если у вас возникнут вопросы или потребуется дополнительная информация, не стесняйтесь обращаться к нашей службе поддержки. Вы можете связаться с нами по указанным контактным данным на нашем сайте.

Благодарим вас за понимание и сотрудничество. Мы ценим ваше терпение и стремимся предоставить вам лучший опыт использования нашего сервиса.

С уважением,
Команда Ascon

Как установить свойство onlyThinLine? Не срабатывает.

Автор biomotor, 06.06.22, 09:32:55

« назад - далее »

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

Михаил88

я знаю, я тоже попробовал

Вы должны через него распечатать, тогда должно быть нормально. Но печать через тот же Microsoft Print to PDF это вообще очень странное решение, когда есть конвертер.
Вы попробуйте не в автоматическом, а в ручном режиме проделать то что хотите, чтобы проделала программа и поймете. что нужно пользоваться конвертером. Тем более я Вам уже всю инфу дал, как это делать.

biomotor


Михаил88


biomotor

Цитата: Михаил88 от 06.06.22, 13:53:45не пробовал

нет.
Screenshot_8.jpg

SDK пишет Тип данных: BOOL
поставил true получил это:
Screenshot_10.jpg

Михаил88

plotToFile = iPrintJob_OutputParameters.PlotToFile
print(plotToFile)

Screenshot_5.png

тип данных BOOL, а не строка

Михаил88


biomotor

Цитата: Михаил88 от 06.06.22, 14:02:44True
поставил 1 переменная поставилась, но не напечатало.
напрашивается команда execute. почему-то результат FALSE

Михаил88

Цитата: biomotor от 06.06.22, 14:07:05поставил 1 переменная поставилась, но не напечатало.
напрашивается команда execute. почему-то результат FALSE

print_job = application.PrintJob
print(print_job)
iPrintJob_OutputParameters = kompas_api7_module.IPrintJob_OutputParameters(print_job)
print(iPrintJob_OutputParameters)
iPrintJob_OutputParameters.OnlyThinLines = 0
print(iPrintJob_OutputParameters.OnlyThinLines)
print_job.AddSheets(r'C:\Users\root\Desktop\Чертеж.cdw', None, 0)
print(print_job.Execute(''))

вот рабочий вариант, но таким способом сохранять pdf ни кто не будет. Попробуйте и сами поймете. У себя в настройках принтера нужно выставить принтер для печати pdf или его прописать в print_job.Execute('') вместо пустой строки

P.S. тут еще надо будет настройки делать, но в принципе и так понятно, как это работает.

biomotor

Цитата: Михаил88 от 06.06.22, 14:16:55print_job = application.PrintJob
print(print_job)
iPrintJob_OutputParameters = kompas_api7_module.IPrintJob_OutputParameters(print_job)
print(iPrintJob_OutputParameters)
iPrintJob_OutputParameters.OnlyThinLines = 0
print(iPrintJob_OutputParameters.OnlyThinLines)
print_job.AddSheets(r'C:\Users\root\Desktop\Чертеж.cdw', None, 0)
print(print_job.Execute(''))

вот рабочий вариант, но таким способом сохранять pdf ни кто не будет. Попробуйте и сами поймете. У себя в настройках принтера нужно выставить принтер для печати pdf или его прописать в print_job.Execute('') вместо пустой строки

P.S. тут еще надо будет настройки делать, но в принципе и так понятно, как это работает.

Да.
я чуть по-другому:
print_job.AddSheets('', None, 0) # Текущий активный документ
print_job.Execute('') # на текущий принтер
Параметр OnlyThinLines True/False работает. но это именно печать, а не сохранение в файл, попробовал подставить имя файла, 1.pdf, вроде сохранил, но не открывает, видимо задание на печать.

Михаил88

Цитата: biomotor от 06.06.22, 14:23:50Да.
я чуть по-другому:
print_job.AddSheets('', None, 0) # Текущий активный документ
print_job.Execute('') # на текущий принтер
Параметр OnlyThinLines True/False работает. но это именно печать, а не сохранение в файл.

Я по этому в #20 сообщении и писал проделать ручками тогда и придёт понимание, что это дорога не туда.

biomotor

Цитата: Михаил88 от 06.06.22, 14:27:01Я по этому в #20 сообщении и писал проделать ручками тогда и придёт понимание, что это дорога не туда.

просмотрел сообщение.

biomotor

Цитата: Михаил88 от 06.06.22, 12:46:33# -*- coding: utf-8 -*-
import pythoncom
from win32com.client import Dispatch, gencache

#  Подключим описание интерфейсов API7
kompas_api7_module = gencache.EnsureModule("{69AC2981-37C0-4379-84FD-5DD2F3C0A520}", 0, 1, 0)
application = kompas_api7_module.IApplication(
    Dispatch("Kompas.Application.7")._oleobj_.QueryInterface(kompas_api7_module.IApplication.CLSID,
                                                            pythoncom.IID_IDispatch))

library_manager = application.LibraryManager
# Список библиотек
procedures_libraries = library_manager.ProceduresLibraries
count = len(procedures_libraries)

for i in range(0, count):
    # Получаем библиотеку по индексу
    library = procedures_libraries.Item(i)
    # print(library)
    # Получаем название библиотеки
    name = library.Name
    # print(name)
    # Имя файла библиотеки
    path_name = library.PathName
    # print(path_name)
    if name == 'Библиотека экспорта в PDF':
        print(path_name)

А есть покороче способ?
типа:
import os
os.path = %KOMPAS_SDK%
cd ..
cd bin

Вот так вроде сработало:
            import os
            print(os.environ['KOMPAS_SDK'][0:-4]+"Bin\\Pdf2d.dll")

Михаил88

Цитата: Михаил88 от 06.06.22, 11:31:56Converter = application.Converter('C:\\Program Files\\ASCON\\KOMPAS-3D v18\\Bin\\Pdf2d.dll')

вот очень короткий способ :)

biomotor


biomotor

Цитата: Михаил88 от 06.06.22, 11:31:56# -*- coding: utf-8 -*-
from win32com.client import Dispatch

application = Dispatch('Kompas.Application.7')

Converter = application.Converter('C:\\Program Files\\ASCON\\KOMPAS-3D v18\\Bin\\Pdf2d.dll')
pPdf2dParam = Converter.ConverterParameters(0)
pPdf2dParam.OnlyThinLine = 0
Converter.Convert('', r'C:\Users\root\Desktop\Новая папка\Чертеж.pdf', 0, False)

Странно, почему то так не срабатывает больше.
Заработало....

Михаил88


biomotor

Цитата: Михаил88 от 06.06.22, 14:50:17Вы сразу в 3 компасах работаете?
Нет, но я при изменении версии должен в код лезть?

Михаил88

У нас на предприятии каждый год Компас не обновляют. У меня таких проблем нет. Да залезть в код при переходе на новую версию Компас не будет лишним. Да и вообще залезть в код своей программы через какой то промежуток времени не будет лишним многое интересное можно увидеть.
А так пользовался приведенными выше 2 способами и меня это полностью устраивает.