Групповое сохранение файлов в низшие версии

Автор Senior lecturer, 13.10.07, 17:46:09

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

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

Senior lecturer

Имеем большое количество файлов v.9. Нужно сохранить их в 5.11 R03. Имеется ли возможность группового пересохранения. Каждый файл долго :(

Андрей В.В.

У меня была та же проблема.
Я для себя написал скрипт на python для пакетного экспорта чертежей компас v9+
в формат 5.11R03, но исправив несколько параметров можно сохранять
документы другого типа, но только в предыдущую версию или v5.11R03(в более
ранние, кроме v5.11R03 нельзя - это ограничение API Компаса). Еще для этого
нужно установить Компас-Macro v2 (17 Мб).
Ниже будет текст скрипта, скопируйте его в текстовый файл и поменяйте
расширение на pyw. Скрипт нужно поместить в папку с файлами (которые будешь
конвертировать) и запустить его.

Текст скрипта:

# -*- coding: cp1251 -*-
#|1

import Kompas6API5 as KAPI
from win32com.client import Dispatch
import LDefin2D
import LDefin3D
import sys
sys.path.append("C:\\Python23\\Lib\\") #путь по умолчанию
import dircache
import string

iKompasObject = Dispatch('KOMPAS.Application.5')
iKompasObject = KAPI.KompasObject(iKompasObject)
iDocument2D = iKompasObject.Document2D()

script_path = sys.path[0]
script_pathname = sys.argv[0]

a = dircache.listdir(script_path)
b = []
c = 0

for i in range(len(a)):
   if string.find(string.lower(a), ".cdw") > 0:
      b.append(a)

f = open((script_pathname[0:(len(script_pathname) - 3)] + "log"), "a")
try:
   for i in range(len(b)):
      if iDocument2D.ksOpenDocument((script_path + "\\" + b), False) == True:
         if iDocument2D.ksSaveDocumentEx((script_path + "\\" + "v5.11R03_" + b), 1) == False:
            c = c + 1
            f.write(str(c) + ". Ошибка при экспорте файла " + b + "!\n")
      else:
         c = c + 1
         f.write(str(c) + ". Ошибка при открытии файла " + b + "!\n")
      if iDocument2D.ksCloseDocument() == False:
         c = c + 1
         f.write(str(c) + ". Ошибка при закрытии файла " + b + "!\n")
finally:
   f.close()

if c == 1:
    iKompasObject.ksMessage("Экспорт завершен с одной ошибкой!")
elif c > 1:
    iKompasObject.ksMessage("Экспорт завершен с " + str(c) + " ошибками!")
else:
    iKompasObject.ksMessage("Экспорт успешно завершен!")

Андрей В.В.

В конце еще добавить

iKompasObject.Quit()

А то Компас потом остается висеть в памяти.

denlex1

А будет ли данный скрипт работать в 12 КОМПАСе?
Ну или хотя бы подскажите ссылочку на КОМПАС-Маcro V2. А то я что-то не найду никак нигде.

tovarischX

неужели до сих пор не найдено решения группового пересохранения (экспорта)