Your browser does not seem to support JavaScript. As a result, your viewing experience will be diminished, and you have been placed in read-only mode.
Please download a browser that supports JavaScript, or enable it if it's disabled (i.e. NoScript).
On 31/05/2015 at 04:41, xxxxxxxx wrote:
Hi All,
regarding the softselection tag, trying to call GetAllHighlevelData() as stated at VariableTag.GetAllHighlevelData() I receive an error message:
VariableTag.GetAllHighlevelData
TypeError: Unknown data of variable tag type.
I managed to work around with LowlevelData see code below:
But I don´t understand the ByteSeq.\__add\_\_( other ) function. What are we supposed to add at offset? It seems to have no influence on the buffer. Has anyone an idea how we should use it?
ByteSeq.\__add\_\_
Thanks in advance Martin
LowlevelDataAddress:
import c4d, array def mSetAllHighlevelData(variableTag, values) : #pack 32 bit float b = array.array('f',values) buff = b.tostring() wdata = variableTag.GetLowlevelDataAddressW() if len(wdata)==len(buff) : wdata[0:len(buff)] = buff return def mGetAllHighlevelData(variableTag) : #unpack 32 bit float data = variableTag.GetLowlevelDataAddressR() a = array.array('f') a.fromstring(data) weightarray = a.tolist() return weightarray def main() : tags = op.GetTags() for ta in tags: if ta.GetType()== c4d.Tsoftselection: print "____________________________" print "Softselection" #set up a list dcount = ta.GetDataCount() values = [1] * dcount weightarray = mGetAllHighlevelData(ta) print weightarray, "before" mSetAllHighlevelData(ta, values) weightarray = mGetAllHighlevelData(ta) print weightarray, "after" c4d.EventAdd() if __name__=='__main__': main()
On 01/06/2015 at 07:58, xxxxxxxx wrote:
Hi Martin,
VariableTag.GetAllHighlevelData() doesn't support softselection tag (Tsoftselection). This is why you get the error "Unknown data of variable tag type." In fact, VariableTag.GetAllHighlevelData() is just a wrapper around VariableTag.GetLowlevelDataAddressR(). It currently supports Tpoint, Ttangent, Tline, Tpolygon, Tsegment, Tvertexmap, Tnormal and Tuvw tag types.
ByteSeq.__add__() defines the "+" operator and does the same as ByteSeq.GetOffset():
seq = data + 4 seq = data.GetOffset(4)
ByteSeq.__add__() doesn't modify the ByteSeq object, it returns a new ByteSeq object at the given offset.
On 01/06/2015 at 11:43, xxxxxxxx wrote:
Hi Yannick,
Thanks for the reply ! Still, it might be good to write a small note in brackets into the sdk "not implemented yet" or something else. It was a little confusing at the beginning. (I know it´s not supported yet, too, but it might be more consistent to write the sitckytexture tag data in 32 bit ,too, like the uv tag and not in double 64 bit, I´m not sure, there could be good reasons to do so.)
For
newdata = data.__add__(5)
I receive an error message: "NotImplemented" for
newdata = data + 5
I receive an error message: TypeError: unsupported operand type(s) for +: 'c4d.storage.ByteSeq' and 'int'
I assume it´s not supported, too.
Best wishes Martin
On 02/06/2015 at 02:34, xxxxxxxx wrote:
There seem to have an issue with ByteSeq.__add__()/+ operator. Sorry I had not tested it before. ByteSeq.GetOffset() does exactly the same so please use it instead.
On 09/06/2015 at 01:21, xxxxxxxx wrote:
thanks for the confirmation.