На главную страницу
Русский English
 


Поддержка
Форум
Техподдержка
Закрытый разделПерсональная

Авторизация

Запомнить меня на этом компьютере
  Забыли свой пароль?
  Регистрация



Поиск по сайту


Подписка

Изменение параметров

Hits 62525125
43413
Hosts 3103258
3632
Visitors 49203433
42400

111


Главная / Поддержка / Форумы / Макро

Форум «Макро»

Версия для печати Версия для печати

Список форумов
Новые темы
Список тем
Поиск по форумам
Помощь
Войти
Регистрация


Тема: «Rastr и python , работа с Rastr в python » в форуме: Макро   Просмотров: 4517
 
Иван Ведерников
Посетитель
 
Всего сообщений: 26
Дата регистрации: 06.11.2018
Создано: 08.12.2021 07:48:08
 
 
Добрый день!

Подскажите как записать значения в таблицы Rastr используя python?

Код

x = rastr.tables("node").cols­.Item("ny").Z(0)  # работает

rastr.tables("node").cols­.Item("ny").Z(0) = 5   # не работает
# SyntaxError: cannot assign to function call here.

rastr.tables("node").cols­.Item("ny").Z[0] = 5   # не работает
# TypeError: 'method' object does not support item assignment
 
Профиль
Наверх
Станислав Богданов
Модератор
 
Всего сообщений: 60
Дата регистрации: 11.10.2012
Создано: 08.12.2021 10:10:23
 
 
Примерно так:
Код

column = table.Cols(column)
column.SetZ(row­_id, value) # вместо column.Z(row_id) = value
 
Профиль
Наверх
Иван Ведерников
Посетитель
 
Всего сообщений: 26
Дата регистрации: 06.11.2018
Создано: 08.12.2021 10:56:52
 
 
Благодарю, работает!
 
Профиль
Наверх
Иван
Постоянный посетитель
 
Всего сообщений: 231
Дата регистрации: 03.05.2011
Создано: 09.12.2021 09:49:20
 
 
А как подключить объекты растра в python?
 
Профиль
Наверх
Иван Ведерников
Посетитель
 
Всего сообщений: 26
Дата регистрации: 06.11.2018
Создано: 09.12.2021 10:20:27
 
 
установить модуль pywin32
Код

import win32com.client

rastr = win32com.client.Dispatch(­"Astra.Rastr")
 
Профиль
Наверх
Евгений Машалов
Администратор

 
Всего сообщений: 1000
Дата регистрации: 23.04.2007
Создано: 09.12.2021 15:42:17
 
 
Я прям вижу флотилию Парусов на горизонте С улыбкой
Пользователь добавил изображение
 
Профиль
Наверх
Иван
Постоянный посетитель
 
Всего сообщений: 231
Дата регистрации: 03.05.2011
Создано: 10.12.2021 23:28:00
 
 
Спасибо!
Есть у него какие-то очевидные преимущества относительно обычного vbs?
 
Профиль
Наверх
Иван Ведерников
Посетитель
 
Всего сообщений: 26
Дата регистрации: 06.11.2018
Создано: 13.12.2021 10:40:59
 
 
Если простая программка или она должна работать в загруженном файле растр, то vbs, если программа посложнее то писать, отлаживать , делать графический интерфейс лучше в python. Там очень много возможностей
 
Профиль
Наверх
Nick_A
Посетитель
 
Всего сообщений: 40
Дата регистрации: 30.09.2021
Создано: 21.12.2022 11:01:54
 
 
Добрый день. А может кто-то показать какой-то пример макро на python. Чтобы начать было проще. Как происходит загрузка файлов, таблиц в них, сохранение, добавление строк, изменение параметров и прочее. Заранее благодарю
 
Профиль
Наверх
Александр Александров
Администратор
 
Всего сообщений: 642
Дата регистрации: 31.05.2008
Создано: 21.12.2022 13:35:04
 
 
Здравствуйте!

макрос загружает файлы из директорий и считает оптимизацию

Код

import os
import win32com.client as c32

def GetPathToScanDir():
    return r'D:VmsSHARAcrossesODU_SB­2022_11_18_archmup'
def GetPathToScanDir7z():
    return r'D:VmsSHARAcrossesODU_SB­2022_11_18_archm'
def GetCentr():
    return 45000
def GetCentrs():
    return (15000,)
def GetScnaFName():
    return 'roc_debug_before_OC'
def Get_RG_REPL():
    return 1
def GetMaxOtv():
    return 18
def Get_max_otv(tables):
    table_node = tables('node')
    node_col_sta = table_node.Cols('sta')
    node_col_ny = table_node.Cols('ny')
    node_col_otv = table_node.Cols('otv')
    table_node.SetSel('sta=0'­)
    max_otv = 0
    max_otv_node_num = -1000
    curent_row_node = table_node.FindNextSel(-1­)
    while curent_row_node != -1:
        sta = node_col_sta.Z(curent_row­_node)
        ny = node_col_ny.Z(curent_row_­node)
        otv = node_col_otv.Z(curent_row­_node)
        if abs(max_otv) < abs(otv):
            max_otv = otv
            max_otv_node_num = ny
        #print('sta= '+str(sta)+ ' dv='+str(otv))
        curent_row_node = table_node.FindNextSel(cu­rent_row_node)
    return (max_otv, max_otv_node_num)
def rfile_analyze(rastr,path_­rfile,centr):
    rastr.Load(Get_RG_REPL(),­ path_rfile, '')
    try:
        tables = rastr.Tables
        table_com_opf = tables('com_opf')
        com_opf_col_centr = table_com_opf.Cols('centr­')
        res1 = rastr.opf('s')
        (max_otv1, max_otv_node_num1) = Get_max_otv(tables)
        com_opf_col_centr.SetZ(0,­centr)
        res2 = rastr.opf('s')
        rastr.rgm('')
        (max_otv2, max_otv_node_num2) = Get_max_otv(tables)
        str_res1 = ''
        str_res2 = ''
        if(abs(max_otv1) > GetMaxOtv() ) : str_res1 = "FAIL1"
        if(abs(max_otv2) > GetMaxOtv() ) : str_res2 = "FAIL2"
        print (str(path_rfile)+ ' : ' + str(res1) + ' - ' + str(res2) +'  '+ ' max_otv1= '+ str(max_otv1)+ ' max_otv2= '+ str(max_otv2)  + ' <> '+ str_res1 + ' - '+ str_res2  
        + ' : ny1=' + str(max_otv_node_num1)+ '  ny2=' + str(max_otv_node_num2) )
    except OSError as err:
        print("OS error:", err)
    except ValueError:
        print("Could not convert data to an integer.")
    except Exception as ex:
        print('type{type(ex)}')
    except :
        print('xz')
def scan_dir(path_2_scan_dir)­:
    #app = c32.gencache.EnsureDispat­ch('astra.rastr')
    rastr=c32.Dispatch('astra­.rastr')      
    print(rastr.__module__)  
    print( 'scan-> ' + path_2_scan_dir )
    folder_names = os.listdir(path_2_scan_di­r)
    #print(folder_names)
    for centr in GetCentrs() :
        print(centr)
        print('------------------­--------- '+str(centr)+' -------------------------­----------')
        for folder_name in folder_names:
            path_2_folder = path_2_scan_dir+'\'+ folder_name
            #print(path_2_folder)
            if os.path.isdir(path_2_fold­er):
                #print(path_2_folder)
                path_2_file = path_2_folder+ '\'+GetScnaFName()
                if os.path.isfile(path_2_fil­e) :
                    #print (path_2_file)
                    rfile_analyze(rastr,path_­2_file,centr)
                    continue
                else:
                    print ( f'no file: {path_2_file}' )

scan_dir( r'D:VmsSHARAcrossesODU_SB­2022_11_18_archmup')
 
Профиль
Наверх
Nick_A
Посетитель
 
Всего сообщений: 40
Дата регистрации: 30.09.2021
Создано: 21.12.2022 15:01:06
 
 
Спасибо. В бОльшей части всё понятно... Кроме главного - при создании объекта rastrt возникает исключение (и даже при обработке первого исключения возникает второе... исключение в квадрате)

Код

Traceback (most recent call last):
  File "C:UsersBruckij-Stempkovs­kijAppDataRoamingPythonPy­thon310site-packageswin32­comclientdynamic.py", line 86, in _GetGoodDispatch
    IDispatch = pythoncom.connect(IDispat­ch)
pywintypes.com_error: (-2147221021, 'Операция недоступна', None, None)
During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "D:RastrНовая схемаМакросыОбработка моделейОбновление топологииopen.py", line 4, in <module>
    rastr = c32.Dispatch('astra.rastr­')
  File "C:UsersBruckij-Stempkovs­kijAppDataRoamingPythonPy­thon310site-packageswin32­comclient__init__.py", line 117, in Dispatch
    dispatch, userName = dynamic._GetGoodDispatchA­ndUserName(dispatch, userName, clsctx)
  File "C:UsersBruckij-Stempkovs­kijAppDataRoamingPythonPy­thon310site-packageswin32­comclientdynamic.py", line 106, in _GetGoodDispatchAndUserNa­me
    return (_GetGoodDispatch(IDispat­ch, clsctx), userName)
  File "C:UsersBruckij-Stempkovs­kijAppDataRoamingPythonPy­thon310site-packageswin32­comclientdynamic.py", line 88, in _GetGoodDispatch
    IDispatch = pythoncom.CoCreateInstanc­e(
pywintypes.com_error: (-2147221164, 'Класс не зарегистрирован', None, None)
 
Профиль
Наверх
Александр Александров
Администратор
 
Всего сообщений: 642
Дата регистрации: 31.05.2008
Создано: 21.12.2022 15:56:23
 
 
наверное у вас Растр 32 бита а Питон 64 или наоборот
 
Профиль
Наверх



Читают тему
гостей: 1, пользователей: 0, из них скрытых: 0


Список форумов
Новые темы
Список тем
Поиск по форумам
Помощь
Войти
Регистрация







Программный комплекс «RasrWin»
Программный комплекс «RastrWin»
© «RastrWin», 1988-2019