algorithmic modeling for Rhino
All,
I have found a python script that does something I'm trying to replicate in C# or VB but I can't figure out how to use rhinoscript in the environment.
I'm working with Vray Proxies so I can't use grasshopper geometry types. I have to get the GUID and manipulate the rhino object directly or the proxy link gets broken.
I simply want to copy, scale, rotate, and move the Proxies to some target points.
in the script there is a bunch of rs.something and those are rhinoscript functions which I didn't think you could call in C# or VB. Please help
Here is the Python Script:
import math
import rhinoscriptsyntax as rs
import scriptcontext as sc
import Rhino
sc.doc = Rhino.RhinoDoc.ActiveDoc
if activate:
rs.AddLayer('ProxyScatter')
for i in range(len(rotationAxis)):
ang=rotationAngle[i]
Proxys=proxies[i]
Refs=referencePlanes[i]
axis=rotationAxis[i]
Basepoints=basepoints[i]
print scaleValue
rotates=rs.RotateObject(Proxys,Basepoints,ang,axis, True)
ProxySc=rs.ScaleObject(rotates,Basepoints,scaleValue, False)
rs.ObjectLayer(ProxySc, 'ProxyScatter')
scatters=rs.OrientObject(ProxySc, referencePlanes, targetPlanes,1)
a= scatters
print True
else:
a=""
Tags:
I think this is going to work. I haven't tested it on proxy objects yet because I don't have vray on this machine but check it out and see if you think this will do it. It works great for meshes anyway.
if(go)
{
Random rnd = new Random();
for(int i = 0;i < pts.Count;i++)
{
Transform sc = Transform.Scale(Plane.WorldXY, X.ParameterAt(rnd.NextDouble()), Y.ParameterAt(rnd.NextDouble()), Z.ParameterAt(rnd.NextDouble()));
Transform rot = Transform.Rotation(RhinoMath.ToRadians(Rot.ParameterAt(rnd.NextDouble())), Point3d.Origin);
Transform scRot = Transform.Multiply(sc, rot);
Vector3d v = new Vector3d(pts[i] - Point3d.Origin);
Transform mv = Transform.Translation(v);
Guid id = prox[(int) Math.Floor(rnd.NextDouble() * prox.Count)];
Rhino.RhinoDoc.ActiveDoc.Objects.Transform(Rhino.RhinoDoc.ActiveDoc.Objects.Transform(id, scRot, false), mv, true);
}
}
It works. Thanks for the SDK nudge David.
Hey Andy.
Nice script! Im new to coding and I was wondering if you know how to make the proxies move onto the origin points (the points input in your C# component). I would like be able to control the region where the proxies are duplicated onto.
Regards Jeppe
If your proxies start at the origin of the file (0,0,0) then they will move the destination points you specify from outside the code. Without the proxies at the origin you'll have to specify the start point of the movement vector. This is the line doing the work:
Rhino.RhinoDoc.ActiveDoc.Objects.Transform(Rhino.RhinoDoc.ActiveDoc.Objects.Transform(id, scRot, false), mv, true);
Thanks!! This is amazing.
Im gonna learn to code now ;)
With my last proxy provider (advanced.name) such errors do not occur. Now switched to a new provider with other tariffs, there appeared a similar problem. Do you think that this may be due precisely to the provider?
Welcome to
Grasshopper
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
Added by Parametric House 0 Comments 0 Likes
© 2024 Created by Scott Davidson. Powered by