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

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

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

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

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

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

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

Вставка позиций и количества исполнений из Excel в спецификацию Компаса

Автор bionorica2015, 18.10.21, 19:50:24

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

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

bionorica2015

Здравствуйте!
Усовершенствую код Сергея Кузьмина (ютубера).
Хочу осуществить вставку позиций и количества исполнений из Excel в спецификацию Компаса через программный код.
Вот мой код который вставляет Наименование и Обозначение по условию (если Код раздела = 20 , открывает раздел Детали и вставляет строки через цикл):
```
...
#  Получим активный документ
kompas_document = application.ActiveDocument
kompas_document_spc = kompas_api7_module.ISpecificationDocument(kompas_document)
iDocumentSpc = kompas_object.SpcActiveDocument()
###
import os
put=os.getcwd()
print (put)

import win32com.client
Excel=win32com.client.Dispatch('Excel.Application')
ex=Excel.Workbooks.Open(put+'\SP.xlsx')

listEx=ex.ActiveSheet
stroka1=0
stroka2=90


while stroka1<stroka2:
    stroka1=stroka1+1
    razdel=listEx.Cells(stroka1,7).value
    vivod2=listEx.Cells(stroka1,2).value
    vivod2=listEx.Cells(stroka1,2).value
    if vivod==None:
        break
    else:
        print (vivod, vivod2)
        iSpc = iDocumentSpc.GetSpecification()
        iSpc.ksSpcObjectCreate("", 0, razdel, 0, 0, 0)
        obj = iSpc.ksSpcObjectEnd()


        iSpcObjParam = kompas6_api5_module.ksSpcObjParam(kompas_object.GetParamStruct(kompas6_constants.ko_SpcObjParam))
        iSpc.ksSpcObjectEdit(obj)

        iDocumentSpc.ksGetObjParam(obj, iSpcObjParam, LDefin2D.ALLPARAM)
        '''
        iSpcObjParam.blockNumber = 2
        iSpcObjParam.draw = 1
        iSpcObjParam.firstOnSheet = 0
        iSpcObjParam.ispoln = 0
        iSpcObjParam.posInc = 0
        iSpcObjParam.posInc = 0
        '''
        iDocumentSpc.ksSetObjParam(obj, iSpcObjParam, LDefin2D.ALLPARAM)
        iTextLineArray = kompas_object.GetDynamicArray(LDefin2D.TEXT_LINE_ARR)

        iTextLineParam = kompas6_api5_module.ksTextLineParam(kompas_object.GetParamStruct(kompas6_constants.ko_TextLineParam))
        iTextLineParam.Init()
        iTextLineParam.style = 0
        iTextItemArray = kompas_object.GetDynamicArray(LDefin2D.TEXT_ITEM_ARR)
        iTextItemParam = kompas6_api5_module.ksTextItemParam(kompas_object.GetParamStruct(kompas6_constants.ko_TextItemParam))
        iTextItemParam.Init()
        iTextItemParam.iSNumb = 0
        iTextItemParam.s = ""
        iTextItemParam.type = 0
        iTextItemFont = kompas6_api5_module.ksTextItemFont(iTextItemParam.GetItemFont())
        iTextItemFont.Init()
        iTextItemFont.bitVector = 4096
        iTextItemFont.color = 0
        iTextItemFont.fontName = "GOST type A"
        iTextItemFont.height = 5
        iTextItemFont.ksu = 1
        iTextItemArray.ksAddArrayItem(-1, iTextItemParam)
        iTextLineParam.SetTextItemArr(iTextItemArray)

        iTextLineArray.ksAddArrayItem(-1, iTextLineParam)
        iSpc.ksSetSpcObjectColumnTextEx(1, 1, 0, iTextLineArray)
        iTextLineArray = kompas_object.GetDynamicArray(LDefin2D.TEXT_LINE_ARR)
...
1.JPG
```
Таблица на рисунке
Наименования фейковые-учебные- не обращать внимания.
Как можно вставить позиций и количества исполнений из Excel в спецификацию Компаса таким же циклом?
Пожалуйста, хотя бы помогите любой подсказкой. Полностью не нужно код за меня писать.