<?xml version="1.0" encoding="windows-1251"?>
<rss version="2.0">
	<channel>
		<title>liraland.ua [тема: Ошибка при взаимодействии с LiraResAPI через python]</title>
		<link>http://www.liraland.ua</link>
		<description>Нове в темі Ошибка при взаимодействии с LiraResAPI через python форума  на сайті liraland.ua [www.liraland.ua]</description>
		<language>ua</language>
		<docs>http://backend.userland.com/rss2</docs>
		<pubDate>Sat, 18 Apr 2026 20:10:16 +0300</pubDate>
		<item>
			<title>Ошибка при взаимодействии с LiraResAPI через python</title>
			<description><![CDATA[<b><a href="http://www.liraland.ua/forum/messages/forum9/topic2666/message17186/">Ошибка при взаимодействии с LiraResAPI через python</a></b> у форумі <a href="http://www.liraland.ua/forum/forum9/">Работа программы (lira)</a>. <br />
			Здравствуйте, возникла проблема с генерацией рамы по примеру из документации. Помогите пожалуйста с решением.
====code====
<pre>#! usr/bin/env python
# -*- coding: utf-8 -*-

import comtypes
from comtypes.client import GetModule, CreateObject
GetModule(r'C:&#92;Program Files (x86)&#92;LIRA SAPR&#92;LIRA SAPR 2024&#92;Bin&#92;x64&#92;LiraSapr.exe')
GetModule(r'C:&#92;Program Files (x86)&#92;LIRA SAPR&#92;LIRA SAPR 2024&#92;Bin&#92;x64&#92;LiraResAPI.dll')
from comtypes.gen import LiraSapr
from comtypes.gen import LiraSaprRes

app = CreateObject(LiraSapr.LiraApplication)
app = app.QueryInterface(LiraSapr.ILiraApplication)
doc = app.CreateNewDocument('Test_frame')
doc = doc.QueryInterface(LiraSapr.ILiraDocument)

Nodes = doc.AllTables.CreateNewItem(LiraSapr.LiraTableEnum.kLiraTable_Nodes_Coordinates)
Nodes = Nodes.QueryInterface(LiraSapr.ILiraTable)
NodesCoords = &#91;&#91;1, 0.0, 0.0, 0.0 &#93;, &#91;2, 6.0, 0.0, 0.0 &#93;, &#91;3, 0.0, 0.0, 3.0 &#93;, &#91;4, 6.0, 0.0, 3.0 &#93;&#93;

def gen_tab_str(list_):
&nbsp;&nbsp;&nbsp;&nbsp;# возвращает строки, разделенные табуляцией на основе списка
&nbsp;&nbsp;&nbsp;&nbsp;res = ''
&nbsp;&nbsp;&nbsp;&nbsp;for row in list_:
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;s = '&#92;t'.join(str(i) for i in row) + '&#92;n'
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;res += s
&nbsp;&nbsp;&nbsp;&nbsp;return res

NodesCoords_str = gen_tab_str(NodesCoords)
Nodes.SetContents(NodesCoords_str)
Els = doc.AllTables.CreateNewItem(LiraSapr.LiraTableEnum.kLiraTable_Elements_TypeAndNodes)
Els = Els.QueryInterface(LiraSapr.ILiraTable)
ElTypeNodes = &#91;&#91;1, 10, "1, 3"&#93;, &#91;2, 10, "2, 4"&#93;, &#91;3, 10, "3, 4"&#93;&#93;
ElTypeNodes_str = gen_tab_str(ElTypeNodes)
Els.SetContents(ElTypeNodes_str)

Nodes.Apply()
Els.Apply()</pre>
=============
Возникает следующая ошибка<br />
====code====
<pre>Traceback (most recent call last):
&nbsp;&nbsp;File "C:&#92;Users&#92;ZimnitskiiAV&#92;Desktop&#92;lirapythonAPI&#92;frame_test.py", line 36, in &#60;module&#62;
&nbsp;&nbsp;&nbsp;&nbsp;Nodes.Apply()
ctypes.ArgumentError: argument 1: TypeError: expected LP_BSTR instance instead of str</pre>
=============
При этом таблица создается в файле, но почему то не применяется через API(собственно ошибка и возникает при выполнении метода Apply). Но ее можно применить через окно Таблиц ввода.<br /><br />Подскажите пожалуйста в чем может быть проблема. ЛИРА САПР 2024 R2.3 x64 <br />
			<i>02.04.2025 16:42:26, ak1m.</i>]]></description>
			<link>http://www.liraland.ua/forum/messages/forum9/topic2666/message17186/</link>
			<guid>http://www.liraland.ua/forum/messages/forum9/topic2666/message17186/</guid>
			<pubDate>Wed, 02 Apr 2025 16:42:26 +0300</pubDate>
			<category>Работа программы (lira)</category>
		</item>
		<item>
			<title>Ошибка при взаимодействии с LiraResAPI через python</title>
			<description><![CDATA[<b><a href="http://www.liraland.ua/forum/messages/forum9/topic2666/message17168/">Ошибка при взаимодействии с LiraResAPI через python</a></b> у форумі <a href="http://www.liraland.ua/forum/forum9/">Работа программы (lira)</a>. <br />
			В общем все оказалось проще. Этот указатель передается автоматически. Все работает.<br />Дописал код, чтобы анализировал только выбранные узлы. Спасибо за помощь. <img src="http://www.liraland.ua/bitrix/images/main/smiles/5/icon_smile.gif" border="0" data-code=":)" data-definition="SD" alt=":)" style="width:16px;height:16px;" title="" class="bx-smile" /> &nbsp;
====code====
<pre>#! usr/bin/env python
 # -*- coding: utf-8 -*-
 
 from comtypes.client import GetModule, CreateObject
 GetModule(r'C:&#92;Program Files (x86)&#92;LIRA SAPR&#92;LIRA SAPR 2024 DEMO&#92;Bin&#92;x64&#92;LiraSapr.exe')
 GetModule(r'C:&#92;Program Files (x86)&#92;LIRA SAPR&#92;LIRA SAPR 2024 DEMO&#92;Bin&#92;x64&#92;LiraResAPI.dll')
 from comtypes.gen import LiraSapr
 from comtypes.gen import LiraSaprRes
 
 
 app = CreateObject(LiraSapr.LiraApplication)
 app = app.QueryInterface(LiraSapr.ILiraApplication)
 doc = app.ActiveDocument
 doc = doc.QueryInterface(LiraSapr.ILiraDocument)
 print(doc.PathName)
 
 
 selected_nodes = doc.GetSelection(Subj = LiraSapr.LiraSelEnum.kLiraSel_Ns)
 selected_elems = doc.GetSelection(Subj = LiraSapr.LiraSelEnum.kLiraSel_Els)
 selected_nodes_str = ','.join(str(i) for i in selected_nodes)
 selected_elems_str = ','.join(str(i) for i in selected_elems)
 
 print(f'Выбраны узлы: {selected_nodes_str}')
 print(f'Выбраны элементы: {selected_elems_str}')
 
 ##help(LiraSapr)
 
 result = CreateObject(LiraSaprRes.LiraResultsAccess)
 result = result.QueryInterface(LiraSaprRes.ILiraResultsAccess)
 request = result.CreateNewRequest(LiraSaprRes.LiraRequestEnum.kLiraRequest_LoadCaseDisplacement)
 request = request.QueryInterface(LiraSaprRes.ILiraLoadCaseDisplacementsRequest)
 
 request.DocumentName = doc.Title
 request.Nodes.AddFromString(selected_nodes_str)
 
 response = result.LoadCaseDisplacements(request)
 
 
 lc = 1
 
 for i in range(request.Nodes.Count):
&nbsp;&nbsp;&nbsp;&nbsp; node = request.Nodes.Item&#91;i&#93;
&nbsp;&nbsp;&nbsp;&nbsp; x = response.GetNodeX(node, lc)
&nbsp;&nbsp;&nbsp;&nbsp; y = response.GetNodeY(node, lc)
&nbsp;&nbsp;&nbsp;&nbsp; z = response.GetNodeZ(node, lc)
 
&nbsp;&nbsp;&nbsp;&nbsp; print(f'Node:{node}')
&nbsp;&nbsp;&nbsp;&nbsp; print(f'X:{x}')
&nbsp;&nbsp;&nbsp;&nbsp; print(f'Y:{y}')
&nbsp;&nbsp;&nbsp;&nbsp; print(f'Z:{z}&#92;n')</pre>
============= <br />
			<i>07.12.2024 00:08:47, ak1m.</i>]]></description>
			<link>http://www.liraland.ua/forum/messages/forum9/topic2666/message17168/</link>
			<guid>http://www.liraland.ua/forum/messages/forum9/topic2666/message17168/</guid>
			<pubDate>Sat, 07 Dec 2024 00:08:47 +0200</pubDate>
			<category>Работа программы (lira)</category>
		</item>
		<item>
			<title>Ошибка при взаимодействии с LiraResAPI через python</title>
			<description><![CDATA[<b><a href="http://www.liraland.ua/forum/messages/forum9/topic2666/message17167/">Ошибка при взаимодействии с LiraResAPI через python</a></b> у форумі <a href="http://www.liraland.ua/forum/forum9/">Работа программы (lira)</a>. <br />
			Спасибо. Дописал пример. Вдруг будет кому-нибудь полезно.<br />
====code====
<pre>from comtypes.client import GetModule, CreateObject
from comtypes.gen import LiraSaprRes

GetModule(r"C:&#92;Program Files (x86)&#92;LIRA SAPR&#92;LIRA SAPR 2024&#92;Bin&#92;x64&#92;LiraResAPI.dll")

result = CreateObject(LiraSaprRes.LiraResultsAccess)
result = result.QueryInterface(LiraSaprRes.ILiraResultsAccess)
request = result.CreateNewRequest(LiraSaprRes.LiraRequestEnum.kLiraRequest_LoadCaseDisplacement)
request = request.QueryInterface(LiraSaprRes.ILiraLoadCaseDisplacementsRequest)

request.DocumentName = "test_file"
request.Nodes.AddFromString("1-5")

response = result.LoadCaseDisplacements(request)

lc = 1

for i in range(request.Nodes.Count):
&nbsp;&nbsp;&nbsp;&nbsp;node = request.Nodes.Item&#91;i&#93;
&nbsp;&nbsp;&nbsp;&nbsp;x = response.GetNodeX(node, lc)
&nbsp;&nbsp;&nbsp;&nbsp;y = response.GetNodeY(node, lc)
&nbsp;&nbsp;&nbsp;&nbsp;z = response.GetNodeZ(node, lc)

&nbsp;&nbsp;&nbsp;&nbsp;print(f'Node:{node}')
&nbsp;&nbsp;&nbsp;&nbsp;print(f'X:{x}')
&nbsp;&nbsp;&nbsp;&nbsp;print(f'Y:{y}')
&nbsp;&nbsp;&nbsp;&nbsp;print(f'Z:{z}&#92;n')</pre>
=============
<p><B>alekstish, </B>напишите пожалуйста пример использования метода GetSelection. Судя по описанию он принимает в качестве первого аргумента указатель pNumbers. Что под ним подразумевается?</p><p></p> <br />
			<i>06.12.2024 12:24:35, ak1m.</i>]]></description>
			<link>http://www.liraland.ua/forum/messages/forum9/topic2666/message17167/</link>
			<guid>http://www.liraland.ua/forum/messages/forum9/topic2666/message17167/</guid>
			<pubDate>Fri, 06 Dec 2024 12:24:35 +0200</pubDate>
			<category>Работа программы (lira)</category>
		</item>
		<item>
			<title>Ошибка при взаимодействии с LiraResAPI через python</title>
			<description><![CDATA[<b><a href="http://www.liraland.ua/forum/messages/forum9/topic2666/message17166/">Ошибка при взаимодействии с LiraResAPI через python</a></b> у форумі <a href="http://www.liraland.ua/forum/forum9/">Работа программы (lira)</a>. <br />
			Дополнение<br /><br />====quote====<br /> как можно через API получить список узлов, которые сейчас выделены в модели?<br />=============<br /><br />У объекта LiraDocument есть метод GetSelection<br /><br />С уважением, Алексей Тищенко <br />
			<i>06.12.2024 12:02:44, alekstish.</i>]]></description>
			<link>http://www.liraland.ua/forum/messages/forum9/topic2666/message17166/</link>
			<guid>http://www.liraland.ua/forum/messages/forum9/topic2666/message17166/</guid>
			<pubDate>Fri, 06 Dec 2024 12:02:44 +0200</pubDate>
			<category>Работа программы (lira)</category>
		</item>
		<item>
			<title>Ошибка при взаимодействии с LiraResAPI через python</title>
			<description><![CDATA[<b><a href="http://www.liraland.ua/forum/messages/forum9/topic2666/message17165/">Ошибка при взаимодействии с LiraResAPI через python</a></b> у форумі <a href="http://www.liraland.ua/forum/forum9/">Работа программы (lira)</a>. <br />
			Добрый день, <B>ak1m</B><br /><br />Исправленный текст программы, см. ниже<br /><br />from comtypes.client import GetModule, CreateObject<br />from comtypes.gen import LiraFemRes &nbsp;<br /><br />GetModule(r"C:\Program Files (x86)\LIRALAND\LIRA-FEM 2025\Bin\x64\LiraResAPI.dll")<br /><br />result = CreateObject(LiraFemRes.LiraResultsAccess)<br /><br />iresult = result.QueryInterface(LiraFemRes.ILiraResultsAccess)<br />request = iresult.CreateNewRequest(LiraFemRes.LiraRequestEnum.kLiraRequest_LoadCaseDisplacement)<br /><br />С уважением, Алексей Тищенко <br />
			<i>06.12.2024 11:54:13, alekstish.</i>]]></description>
			<link>http://www.liraland.ua/forum/messages/forum9/topic2666/message17165/</link>
			<guid>http://www.liraland.ua/forum/messages/forum9/topic2666/message17165/</guid>
			<pubDate>Fri, 06 Dec 2024 11:54:13 +0200</pubDate>
			<category>Работа программы (lira)</category>
		</item>
		<item>
			<title>Ошибка при взаимодействии с LiraResAPI через python</title>
			<description><![CDATA[<b><a href="http://www.liraland.ua/forum/messages/forum9/topic2666/message17164/">Ошибка при взаимодействии с LiraResAPI через python</a></b> у форумі <a href="http://www.liraland.ua/forum/forum9/">Работа программы (lira)</a>. <br />
			Добрый день.<br />Пытаюсь подключится к API с помощью модуля comtypes.<br />Для начала хочу реализовать пример1 из документации. Но при вызове метода CreateNewRequest всплывает ошибка.<br />
====code====
<pre>import comtypes
import comtypes.client

LiraSaprRes = comtypes.client.GetModule(r"C:&#92;Program Files (x86)&#92;LIRA SAPR&#92;LIRA SAPR 2024&#92;Bin&#92;x64&#92;LiraResAPI.dll")
result = LiraSaprRes.LiraResultsAccess()
iresult = result.QueryInterface(LiraSaprRes.ILiraResultsAccess)
request = iresult.CreateNewRequest(LiraSaprRes.LiraRequestEnum.kLiraRequest_LoadCaseDisplacement)
</pre>
=============
<p></p><p></p><p></p>Ошибка следующая
====code====
<pre>Traceback (most recent call last):
&nbsp;&nbsp;File "C:/lirapythonAPI/com_lira_sapr_res5.py", line 11, in &#60;module&#62;
&nbsp;&nbsp;&nbsp;&nbsp;request = iresult.CreateNewRequest(LiraSaprRes.LiraRequestEnum.kLiraRequest_LoadCaseDisplacement)
_ctypes.COMError: (-2147467263, 'Не поддерживается', (None, None, None, 0, None)</pre>
=============
<p>У кого-нибудь есть идеи, что я делаю неправильно? Сделал реализацию и на Excel VBA, там все работает.</p><p></p>При этом в python все классы, интерфейсы и прочее из DLL импортируются нормально, я могу создавать экземпляры и т.д. Но ошибки возникают, когда пытаюсь вызвать методы классов. <br />
			<i>05.12.2024 10:38:37, ak1m.</i>]]></description>
			<link>http://www.liraland.ua/forum/messages/forum9/topic2666/message17164/</link>
			<guid>http://www.liraland.ua/forum/messages/forum9/topic2666/message17164/</guid>
			<pubDate>Thu, 05 Dec 2024 10:38:37 +0200</pubDate>
			<category>Работа программы (lira)</category>
		</item>
	</channel>
</rss>
