сохранить в формат DXF версии 2000

Автор EKosarev, 23.12.20, 15:49:23

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

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

#20
Цитата: EKosarev от 15.01.21, 13:59:59iConverterParameters
AcadFileVersion
я не могу к этим вещам обратится может какой то библиотеки не хватает или что
Проблема.
SaveDXF.png

EKosarev

Ого, огромное спасибо, на многое открыли мне глаза, особенно по приведению к классу через оператор AS
И вот это для меня крутая фишкаi:=Length(fname);
        if i>3 then fSaveName:=Copy(fname,1,i-3)+'dxf';


сколько же мне еще учится

Петрович-47

Только с этой "крутой фишкой" надо быть на стопроцентов уверенным что расширение у fname ЕСТЬ и что оно состоит из ТРЁХ символов.
А то мы имеем в семнадцатом компасе "крутой косяк" в диалоге "Сохранить как..." который СТП уже третий год исправлять не желает... и тоже наверняка в нём такой же подход без проверок...

Для этого фильтр есть, какие файлы открывать.
Filter.png

Петрович-47

Я имел ввиду не конкретно К, а то что в программировании такой прямолинейный подход без предварительной проверки, может применяться только если Вы на стопроцентов ЗНАЕТЕ... иначе кто-нибудь обязательно Вам подложит грабли - как я уже привёл пример диалога "Сохранить как..." - при разных настройках ОС и результат разный...

lavgirb

Цитата: Вират Лакх от 24.12.20, 06:21:20AutoCAD = {2000:4, 2004:5, 2007:6, 2010:7, 2013:8, 2018:9} # Поддерживаемые версии DXF/DWG
iConverter = iApplication.Converter(KompasObject.ksSystemPath(1) + '\\ImpExp\\dwgdxfExp.rtw') # Конвертер файлов КОМПАС
iConverterParameters = iConverter.ConverterParameters(1) # Получить интерфейс параметров конвертирования (для dxf: command = 1)
currentAcadFileVersion = iConverterParameters.AcadFileVersion # Сохранить текущую версию формата dxf
iConverterParameters.AcadFileVersion = AutoCAD[2000] # Версия AutoCAD, в которую осуществляем запись
iConverter.Convert('', fullpath, 1, False): # Процесс конвертации (файл или текущий документ, новый файл, номер команды, диалог)
iConverterParameters.AcadFileVersion = currentAcadFileVersion # Вернуть текущую версию формата dxf
Спасибо.
Вират Лакх, не подскажете, где посмотреть другие настройки при экспорте в DWG (кроме версии AutoCAD)? Если они есть.

Nipal


feron

Цитата: Nipal от 04.11.23, 13:34:36Тут, я плохо показал, где почитать?

не работает - что то не хватает коду видимо каких то еще параметров.

https://forum.ascon.ru/index.php?topic=38269.0

lavgirb

Цитата: Nipal от 04.11.23, 13:34:36Тут, я плохо показал, где почитать?
Показали хорошо.
Я просил, кроме версии AutoCAD.
Хотелось бы, чтоб вот эта галка была снята на момент конвертации.
Если она не снята, в AutoCADе шрифт КОМПАСа у меня ломается.

Тексты.JPG

lavgirb

Цитата: feron от 04.11.23, 14:32:52не работает - что то не хватает коду видимо каких то еще параметров.
На VB6 нормально работает. Но пришлось поэкспериментировать кое с чем )

Nipal

Цитата: lavgirb от 04.11.23, 15:43:56Показали хорошо.
Я просил, кроме версии AutoCAD.
Хотелось бы, чтоб вот эта галка была снята на момент конвертации.
Если она не снята, в AutoCADе шрифт КОМПАСа у меня ломается.

Тексты.JPG
Вызовете настройки перед конвертацией и снимите галку или читайте.
Agad.png
+ Благодарностей: 2

Вират Лакх

Проще всего прочитать все свойства интерфейса
def printprop(i): # i - интерфейс
for _ in sorted(i._prop_map_get_):
print(_, getattr(i, _))

printprop(iConverterParameters)

lavgirb

А, понял. Спасибо, Nipal.

Цитата: Вират Лакх от 04.11.23, 18:02:57Проще всего прочитать все свойства интерфейса
def printprop(i): # i - интерфейс
for _ in sorted(i._prop_map_get_):
print(_, getattr(i, _))

printprop(iConverterParameters)
Для меня это сложно

Вират Лакх

Что тут сложного. После получения интерфейса iConverterParameters = iConverter.ConverterParameters(1) вставьте приведенный код (описание функции и её вызов).

feron

#34
Тут наверно надо вешать хук на К. и посмотреть как он обращается к библиотеке - скорее всего у конечной не ведется сохранение умолчательных параметров.

Traceback (most recent call last):
  File "g:\...\CDW to dwg.py", line 75, in <module>
    printprop(iConverterParameters)
  File "g:\...\CDW to dwg.py", line 22, in printprop
    for _ in sorted(i._prop_map_get_):
  File "C:\Python_3.9.7x64\Lib\site-packages\win32com\client\dynamic.py", line 576, in __getattr__
    raise AttributeError(attr)
AttributeError: _prop_map_get_

Михаил88

#35
Цитата: lavgirb от 04.11.23, 15:50:16На VB6 нормально работает. Но пришлось поэкспериментировать кое с чем )

На python тоже работает нормально.


Screenshot_1.bmp

lavgirb

Цитата: Михаил88 от 05.11.23, 10:56:41На python тоже работает нормально.


Screenshot_1.bmp
Если в конвертере можно системный путь не указывать к dwgdxfExp.rtw, то это удобно. Опробую.
Код удобнее читать, когда он вставлен по специальной кнопке Код"[code[]/code]"

Nipal

Цитата: lavgirb от 05.11.23, 12:49:11Если в конвертере можно системный путь не указывать к dwgdxfExp.rtw, то это удобно. Опробую.
Код удобнее читать, когда он вставлен по специальной кнопке Код"[code[]/code]"
По правильному он с реестра читается, тут я включил лентяя.
PS. По поводу "[code[]/code]", я люблю картинки кода, там всё правильно, перепишете в голове кое-что останется.