Получение текста с колонок штампа в Python

Автор Poltava, 22.01.11, 17:00:04

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

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

Poltava

Помогите кто нибудь а то сам с программированием почти не сталкивался но вот понадобилось сильно разбираться некогда если кто может подскажите это часть кода записанного библиотекой компас макро и немного переработана пока нужно было только менять текст проблем не возникало но когда понадобилось получить содержимое и сравнить его с образцом для определения нужна замена или нет возникла проблема ну не знаю я как получить содержимое скажем колонки наименование или номер или разработчик по сути не важно какой колонки
помогите получить для любой колонки дальше думаю разберусь


    if str (listnames [3]) != '-' :
        iStamp.ksColumnNumber(112)
        iTextLineParam = KAPI.ksTextLineParam(iKompasObject.GetParamStruct(LDefin2D.ko_TextLineParam))
        iTextLineParam.Init()
        iTextLineParam.style = 32768
       
        iTextItemArray = KAPI.ksDynamicArray(iKompasObject.GetDynamicArray(4))
           
        iTextItemParam = KAPI.ksTextItemParam(iKompasObject.GetParamStruct(LDefin2D.ko_TextItemParam))
        iTextItemParam.Init()
        iTextItemParam.iSNumb = 0
        iTextItemParam.s = str (listnames [3])
        iTextItemParam.type = 0
       
        iTextItemFontParam = KAPI.ksTextItemFont(iTextItemParam.GetItemFont())
        iTextItemFontParam.Init()
        iTextItemFontParam.bitVector = 4096
        iTextItemFontParam.color = 0
        iTextItemFontParam.fontName = "GOST type A"
        iTextItemFontParam.height = 3.5
        iTextItemFontParam.ksu = 1.0
       
        iTextItemArray.ksAddArrayItem(-1, iTextItemParam)
       
        iTextItemParam = KAPI.ksTextItemParam(iKompasObject.GetParamStruct(LDefin2D.ko_TextItemParam))
        iTextItemParam.Init()
        iTextItemParam.iSNumb = 0
        iTextItemParam.s = ""
        iTextItemParam.type = 0
       
        iTextItemFontParam = KAPI.ksTextItemFont(iTextItemParam.GetItemFont())
        iTextItemFontParam.Init()
        iTextItemFontParam.bitVector = 0
        iTextItemFontParam.color = 0
        iTextItemFontParam.fontName = "GOST type A"
        iTextItemFontParam.height = 3.5
        iTextItemFontParam.ksu = 1.0
       
        iTextItemArray.ksAddArrayItem(-1, iTextItemParam)
       
        iTextLineParam.SetTextItemArr(iTextItemArray)
        iStamp.ksTextLine(iTextLineParam)

Poltava

Мда много комментариев Может я задачу не верно изложил ну да ладно попробую еще раз попросить люд кто нибудь может помочь
напишите пожалуйста как в Python получить текст из какой нибудь ячейки штампа по сути неважно из какой просто пример по примеру думаю както разберусь. Ну или напишите что нельзя а то слабо вериться что никто не знает как. Заранее спасибо!

Sergey

Пример на С++

CString CK3DProcess::GetStampColumnText(KompasObjectPtr ptrKompas, ksDocument2DPtr ptrDoc2D, long lColumn)
{
   CString sResult(_T(""));
   ksStampPtr ptrStamp = ptrDoc2D->GetStamp();
   if(ptrStamp == NULL)
      return sResult;
   ptrStamp->ksOpenStamp();
   
   ksTextLineParamPtr ptrLineText(ptrKompas->GetParamStruct(ko_TextLineParam));
   if(ptrLineText == NULL)
      return sResult;
   ptrLineText->Init();

   ksTextItemParamPtr ptrItemText(ptrKompas->GetParamStruct(ko_TextItemParam));
   if(ptrItemText == NULL)
      return sResult;
   ptrItemText->Init();

   ptrStamp->ksColumnNumber(lColumn);
   long lNumb(0);
   ksDynamicArrayPtr ptrArrLineText(ptrStamp->ksGetStampColumnText(&lNumb));
   if(ptrArrLineText == NULL)
      return sResult;
   long lSizeLine = ptrArrLineText->ksGetArrayCount();
   CString str(_T(""));
   for(int i=0;i<lSizeLine;i++)
   {
      ptrArrLineText->ksGetArrayItem(i,ptrLineText);
      ksDynamicArrayPtr ptrArrItemText(ptrLineText->GetTextItemArr());

      if(ptrArrItemText == NULL)
         return sResult;

      long lSizeItem = ptrArrItemText->ksGetArrayCount();
      for(int j=0;j<lSizeItem;j++)
      {
         ptrArrItemText->ksGetArrayItem(j,ptrItemText);
         str += (LPCTSTR)ptrItemText->Gets();
      }
      ptrArrItemText->ksDeleteArray();
   }
   ptrArrLineText->ksDeleteArray();      
   ptrStamp->ksCloseStamp();
   sResult = str;
   return sResult;
}

Slaviation

#3
Цитироватьнапишите пожалуйста как в Python получить текст из какой нибудь ячейки штампа
Строчку 3 (import pythoncom) можно убрать - лишняя.
+ Благодарностей: 2

Poltava

ААААААААААААААА ЗАРАБОТАЛО как все было просто ОГРОМНОЕ человеческое спасибо ну и конечно +1 мог бы поставить больше одного влепил бы но правила есть правила


Алхимик

#6
Использовал макрос выше для чтения масштаба с основной надписи.
Получаю вот такой итог:

1. Что это за тип данных?
2. Что как его преобразовать в нормальный вид для дальнейших манипуляций?

Где то уже встречал на форуме( пол обеда потратил и не нашел :(((

Могу конечно сраз взять, но если нет ссылки на масштаб, то там получаем строку "1:1".