TARGETEXPRESSIONTAG_LINK??

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 08/10/2009 at 12:49, xxxxxxxx wrote:

User Information:
Cinema 4D Version:   r11 
Platform:   Windows  ;   
Language(s) :     C++  ;

---------
Hi there,

i am struggling with the following code. I found that old thread by kuroyume and updated my code accordingly, but the link field still stays empty.

anyone?

thanks for any help.
cheers,
ello

first:

> `

  
\>  BaseTag *tempTag = clone->MakeTag(Ttargetexpression);            
\>  tempTag->GetDataInstance()->SetLink(TARGETEXPRESSIONTAG_LINK,target);   
\>  

`

second:
> `

  
\>  BaseTag *tempTag = clone->MakeTag(Ttargetexpression);  
\>  AutoAlloc<BaseLink> link;  
\>  link->SetLink(target);            
\>  tempTag->SetParameter(DescID(TARGETEXPRESSIONTAG_LINK), GeData(link), NULL);  
\>  

`

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 08/10/2009 at 13:48, xxxxxxxx wrote:

First try is correct. You need to send after: tempTag->Message(MSG_UPDATE);

And, of course, the 'target' MUST be in a document. You can't set links to things not inserted into a document.

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 08/10/2009 at 13:57, xxxxxxxx wrote:

hm, that doesnt change anything. the "target" is created by the plugin earlier. maybe thats the problem?

> `

  
\>    
\>       BaseObject* target = NULL;  
\>       target = BaseObject::Alloc(Onull);  
\>       target->SetPos(targetHelper->GetPos());  
\>       target->GetDataInstance()->SetLong(NULLOBJECT_DISPLAY,NULLOBJECT_DISPLAY_POINT);  
\>       target->GetDataInstance()->SetLong(NULLOBJECT_RADIUS,20);  
\>       target->InsertUnderLast(main);  
\>  

`

anything else could be responsible??

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 08/10/2009 at 16:45, xxxxxxxx wrote:

I still can't recreate your problem. This code was substituted quickly into one of my existing Command plugins and works:

>      BaseObject\* target =     BaseObject::Alloc(Onull); \>      if (!target)               return FALSE; \>      doc->InsertObject(target, NULL, NULL, FALSE); \>      target->SetPos(Vector(100.0f)); \>      BaseContainer\*     bc =     target->GetDataInstance(); \>      bc->SetLong(NULLOBJECT_DISPLAY,     NULLOBJECT_DISPLAY_POINT); \>      bc->SetReal(NULLOBJECT_RADIUS,     20.0f); \>      //target->InsertUnderLast(main); \>      BaseObject\* source =     BaseObject::Alloc(Ocube); \>      if (!source)               return FALSE; \>      doc->InsertObject(source, NULL, NULL, FALSE); \>      BaseTag\*     tempTag =     source->MakeTag(Ttargetexpression); \>      if (!tempTag)               return FALSE; \>      tempTag->GetDataInstance()->SetLink(TARGETEXPRESSIONTAG_LINK,target); \>      EventAdd(); \>

Note that NULLOBJECT_RADIUS is a Real not a Long value. Also note EventAdd().

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 09/10/2009 at 02:22, xxxxxxxx wrote:

thanks robert,

very strange.. maybe its really because i am using it in a ObjectPlugin?? Are there any restrictions?

i'll try to find whats the reason for this..

edit: i just recognized that "target" is deleted when i convert the pluginobject ("c")

its visible as long the plugin object exists, so maybe its somehow lost.. investigating it...

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 09/10/2009 at 02:43, xxxxxxxx wrote:

ok, i got it partially working by placing the tag creating snippet after inserting the clone into the plugin...

> `

  
\>    
\>  clone->InsertUnderLast(main);  
\>  BaseTag *tempTag = clone->MakeTag(Ttargetexpression);  
\>  if (!tempTag) goto Error;  
\>            tempTag->GetDataInstance()->SetLink(TARGETEXPRESSIONTAG_LINK,(BaseList2D* )target);  
\>  

`

now its working when the object is converted, but not when the pluginobject is still there... any ideas??

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 09/10/2009 at 05:35, xxxxxxxx wrote:

The problem is you are working on a virtual object which is not yet in the document. Expressions will not work.

cheers,
Matthias

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 09/10/2009 at 06:02, xxxxxxxx wrote:

I had a sneaking suspicion that GetVirtualObjects() might be involved here. Since it is not 'directly' added to the document that makes sense. Matthias, would it still work if the target object were a real document object?

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 09/10/2009 at 06:11, xxxxxxxx wrote:

Quote: Originally posted by kuroyume0161 on 09 October 2009
>
> * * *
>
> Matthias, would it still work if the target object were a real document object?
>
>
> * * *

It doesn't seem to work.

cheers,
Matthias

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 09/10/2009 at 11:14, xxxxxxxx wrote:

yes, i already had a real object in the scene to retrieve its position and use it in my plugin.

how can i accomplish such a thing?? i know, i could calculate the facing of the objects myself, but i really like to use a tag thats already there, since this would work even if the object is converted. anything possible??

cheers,
ello

THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

On 09/10/2009 at 12:38, xxxxxxxx wrote:

ok, i solved this by calculating the facing manually in the plugin and after converting the tags are used...

thanks for all yoour inputs 🙂