Jump to content
Developer Wiki and Function Reference Links Read more... ×
Nebeor

How to Mirror a 2D symbol with the SDK as with the mirror tool?

Recommended Posts

Posted (edited)

I made some progress: But i'm not quite there, i changed the object variables like this:

TVariableBlock value =  TVariableBlock ((Sint16) 3);
gSDK->SetObjectVariable(*rect,  ovSymbolScaleType,value);
TVariableBlock value2 =  TVariableBlock ((Real64) -1.0);
gSDK->SetObjectVariable(*rect,  ovSymbolYScaleFactor,value2);

this does almost what I want, but unfortunately this does not work with the rectangle objects that are in my group.

I suppose this is a bug?
Apparently I need to 'Flip' this object without scale.
I'm looking forward to your reply.

Edited by Nebeor

Share this post


Link to post

apparently using scale on VWTransform is the way to go, It will keep everything 2D as long the z offset equals 0.

Share this post


Link to post
10 minutes ago, Nebeor said:

apparently using scale on VWTransform is the way to go, It will keep everything 2D as long the z offset equals 0.

 

Using a transform matrix was what I was about to recommend, but I was unsure for a 2D-Symbol, especially in VW 2015. (However, sorry, I had no time to test it, even on a newer VW.)

Share this post


Link to post

Scale has nothing to do with mirroring, either with the object variables or the transformation matrix. 

 

A mirror is a flip of the transformation matrix and an offset from the line of reflection (twice the vector from the object to the reflection axis)

 

Using matrix transformations can be a bit tricky: you can get and set an object’s transformation matrix directly, which is its location and rotation in space, as well as transform by a matrix (effectively multiply the object’s matrix by the transformation matrix). The order of applying the transformation also makes a difference

 

VWTransformationMatrix also has a method returning whether a matrix is flipped. 

Share this post


Link to post

I think the use of matrices is the only sensible way to transform objects.(sorry Vectorscript and Python)

The good part now is that I can use almost the same transform for my 2D and 3D parts (hybrid objects),

I just have to drop the Z-offfset back to 0 on the transform before applying it to the 2D part.

Share this post


Link to post

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

 

7150 Riverwood Drive, Columbia, Maryland 21046, USA   |   Contact Us:   410-290-5114

 

© 2018 Vectorworks, Inc. All Rights Reserved. Vectorworks, Inc. is part of the Nemetschek Group.

×