You could definitely write through python and read through CPP. You can also read binary / ascii file on disk from CPP using streams if you want.
I think your problem lies in reading the value in context of a CPP operator. The way to access data from the input port is where you are having a glitch, at least that's what I think. I am not near a machine right now so I cannot provide you with a specific code. But I will do so later today or tomorrow in case somebody does not answer before that. Sent from my iPhone > On Feb 4, 2014, at 14:29, Tyler Fox <[email protected]> wrote: > > HI there, > I'm the Tyler that Jeremie was talking about in the original post. > > Writing the data generation in c++ is gonna be a really tough sell due to > time/knowledge/expertise constraints on this end. It's been a LONG time since > I've written any c++, and I'm doing some not easily portable stuff in the > python code. > > Would a possible workaround be to write a custom command that reads a file on > disk, builds my class structure using that data, and send that over to my > custom operator? > > Which leads to the question, is an operator's userData saved with the file? > > ~T.Fox > > > > > >> On Tue, Feb 4, 2014 at 10:31 AM, Matt Lind <[email protected]> wrote: >> Write it in CPP. >> >> >> >> If your data requirements are small, you can use a userdatablob template to >> store basic values to make them language agnostic (mostly). A template is >> essentially a customparamset applied to the object and flagged to be read by >> a userdatablob. Templates also exist for userdatamaps. >> >> >> >> >> >> Matt >> >> >> >> >> >> >> >> From: [email protected] >> [mailto:[email protected]] On Behalf Of Jeremie >> Passerin >> Sent: Tuesday, February 04, 2014 10:28 AM >> To: softimage >> Subject: Re: [C++] Reading UserDataBlob as JSON String >> >> >> >> Thanks for the inputs guys. This is where I am wrong assuming that assuming >> I can write Cpp just like I write Python. >> >> >> >> So let me explain you the root of the problem so maybe someone has an idea >> how to solve it with another way. >> >> >> >> We have a solver in Cpp (for optimization purpose). This solver needs to be >> initialized with some values that only need to be computed once. We did a >> prototype in Python and it works just fine. The init values is just a bunch >> of list of strings, integers and floats. Nothing weird. >> >> Rather than rewriting this whole initial computation in Cpp, which would >> take us a lot of time (and is using some external python libraries), we >> though we could just do the init in Python store the result in a datablob >> and read this from the Cpp solver. >> >> >> >> What would be the best way to ready array of strings, integers and floats >> stored somewhere in the scene from a Cpp solver ? >> >> >> >> thanks for your help ! >> >> >> >> Jeremie >> >> >> >> >> >> >> >> On 3 February 2014 18:25, Alok Gandhi <[email protected]> wrote: >> >> I'd side with exactly what Matt and Oleg are saying, the data stored in a >> user data blob through C++ is essentially binary. That might be the cause of >> the issue. I wrote some plugin for userdatablob using c++ but I was writing >> the data instead of reading it. You can probably do the inverse of what I >> did. >> >> >> >> Here is the code from my plugin: >> >> ---------------------------------------------------------------------------------------------------------- >> >> struct DataForBlob >> >> { >> >> const char* blobVal; >> >> } ; >> >> >> >> DataForBlob blobData; blobData.blobVal = >> CString(L"MSVDATA").GetAsciiString(); UserDataBlob blob ; >> agentModel.AddProperty( L"UserDataBlob", false, L"msvResource", blob); >> blob.PutValue((unsigned char*)&blobData, sizeof(blobData)) ; >> blob.SetLock(siLockLevelAll); >> >> >> >> -------------------------------------------------------------------------------------------------------- >> >> >> >> On Mon, Feb 3, 2014 at 9:15 PM, Oleg Bliznuk <[email protected]> wrote: >> >> casting from char* to CString* is unsafe as you dont know how CString is >> implemented. It can be even not null-terminated ( and most likely this is >> true as its responsible to hold both wide and non-wide characters ) inside >> and in such case the "LogMEssage" internally may call something like >> "GetLength() {return m_Length;}" but physically there is only >> null-terminated char buffer or whatever JSON stuff can holds. First check if >> the "x" is not NULL after GetVall call and then try to create CString >> stringObj ( x ) and log it. >> >> >> >> >> >> >> -- >

