<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic WriteDataToStream not return IStream* in Inventor Programming - iLogic, Macros, AddIns &amp; Apprentice</title>
    <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/writedatatostream-not-return-istream/m-p/5971172#M60650</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I can't get IStream pointer from AttributeSets.&lt;/P&gt;&lt;P&gt;Method WriteDataToFile work correctly.&lt;/P&gt;&lt;P&gt;Any Idea?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The native C++ code:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;#include "stdafx.h"
#include &amp;lt;atlbase.h&amp;gt;
#import &amp;lt;RxInventor.tlb&amp;gt; \
rename_namespace("InventorNative") \
named_guids raw_dispinterfaces \
high_method_prefix("Method") \
rename("DeleteFile", "APIDeleteFile") \
rename("CopyFile", "APICopyFile") \
rename("MoveFile", "APIMoveFile") \
rename("SetEnvironmentVariable", "APISetEnvironmentVariable") \
rename("GetObject", "APIGetObject") \
exclude("_FILETIME", "IStream","ISequentialStream", \
"_LARGE_INTEGER", "_ULARGE_INTEGER", "tagSTATSTG", \
"IEnumUnknown","IPersistFile", "IPersist", "IPictureDisp")

using namespace InventorNative;

int main()
{
	::CoInitialize(NULL);

	HRESULT Result = NOERROR;
	//Получение идентификатора Inventor
	CLSID InvAppClsid;
	Result = CLSIDFromProgID(L"Inventor.Application", &amp;amp;InvAppClsid);
	//Получение смарт-указателя на IUnknown
	CComPtr&amp;lt;IUnknown&amp;gt; pInvAppUnk;
	Result = ::GetActiveObject(InvAppClsid, __nullptr, &amp;amp;pInvAppUnk);

	CComPtr&amp;lt;Application&amp;gt; pInvApp;
	//Запрос интерфейса Inventor
	Result = pInvAppUnk-&amp;gt;QueryInterface(__uuidof(Application), (void **)&amp;amp;pInvApp);


	IStream *IS = nullptr;

	_bstr_t xml("XML");
	//Result = pInvApp-&amp;gt;ActiveDocument-&amp;gt;AttributeSets-&amp;gt;DataIO-&amp;gt;MethodWriteDataToFile(xml, L"D:\\1.txt");
	Result = pInvApp-&amp;gt;ActiveDocument-&amp;gt;AttributeSets-&amp;gt;DataIO-&amp;gt;raw_WriteDataToStream(xml, reinterpret_cast&amp;lt;IUnknown**&amp;gt;( &amp;amp;IS));
	::CoUninitialize();
	return 0;
}&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 04 Jan 2016 04:07:35 GMT</pubDate>
    <dc:creator>mikazakov</dc:creator>
    <dc:date>2016-01-04T04:07:35Z</dc:date>
    <item>
      <title>WriteDataToStream not return IStream*</title>
      <link>https://forums.autodesk.com/t5/inventor-programming-ilogic/writedatatostream-not-return-istream/m-p/5971172#M60650</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I can't get IStream pointer from AttributeSets.&lt;/P&gt;&lt;P&gt;Method WriteDataToFile work correctly.&lt;/P&gt;&lt;P&gt;Any Idea?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;The native C++ code:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;#include "stdafx.h"
#include &amp;lt;atlbase.h&amp;gt;
#import &amp;lt;RxInventor.tlb&amp;gt; \
rename_namespace("InventorNative") \
named_guids raw_dispinterfaces \
high_method_prefix("Method") \
rename("DeleteFile", "APIDeleteFile") \
rename("CopyFile", "APICopyFile") \
rename("MoveFile", "APIMoveFile") \
rename("SetEnvironmentVariable", "APISetEnvironmentVariable") \
rename("GetObject", "APIGetObject") \
exclude("_FILETIME", "IStream","ISequentialStream", \
"_LARGE_INTEGER", "_ULARGE_INTEGER", "tagSTATSTG", \
"IEnumUnknown","IPersistFile", "IPersist", "IPictureDisp")

using namespace InventorNative;

int main()
{
	::CoInitialize(NULL);

	HRESULT Result = NOERROR;
	//Получение идентификатора Inventor
	CLSID InvAppClsid;
	Result = CLSIDFromProgID(L"Inventor.Application", &amp;amp;InvAppClsid);
	//Получение смарт-указателя на IUnknown
	CComPtr&amp;lt;IUnknown&amp;gt; pInvAppUnk;
	Result = ::GetActiveObject(InvAppClsid, __nullptr, &amp;amp;pInvAppUnk);

	CComPtr&amp;lt;Application&amp;gt; pInvApp;
	//Запрос интерфейса Inventor
	Result = pInvAppUnk-&amp;gt;QueryInterface(__uuidof(Application), (void **)&amp;amp;pInvApp);


	IStream *IS = nullptr;

	_bstr_t xml("XML");
	//Result = pInvApp-&amp;gt;ActiveDocument-&amp;gt;AttributeSets-&amp;gt;DataIO-&amp;gt;MethodWriteDataToFile(xml, L"D:\\1.txt");
	Result = pInvApp-&amp;gt;ActiveDocument-&amp;gt;AttributeSets-&amp;gt;DataIO-&amp;gt;raw_WriteDataToStream(xml, reinterpret_cast&amp;lt;IUnknown**&amp;gt;( &amp;amp;IS));
	::CoUninitialize();
	return 0;
}&lt;/PRE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 04 Jan 2016 04:07:35 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/inventor-programming-ilogic/writedatatostream-not-return-istream/m-p/5971172#M60650</guid>
      <dc:creator>mikazakov</dc:creator>
      <dc:date>2016-01-04T04:07:35Z</dc:date>
    </item>
  </channel>
</rss>

