Grasshopper

algorithmic modeling for Rhino

Hi,

I want to make toggle component by scripting C#in VisualStudio2015.

I found tutorial to make massagebox when push the button.

However, I don't know how to make toggle button and to output parameter when toggle is 'true' or 'false' in C#.

Does anyone know how to make parameters when toggle is true or false?

Here attached is image, my VS .cs file and buid .gha file.

Sorry for my poor English and knowledge.

Best,

shimpei

----------------------------------------------------------------------------------------------

ublic class SpecialComponent : GH_Component
{
public SpecialComponent() : base("test", "test", "toggletest", "special", "special") { }
public override void CreateAttributes()
{
m_attributes = new Attributes_Custom(this);
}
protected override void RegisterInputParams(GH_Component.GH_InputParamManager pManager)
{
pManager.AddIntegerParameter("x", "x", "Input", GH_ParamAccess.item, 1);
}
protected override void RegisterOutputParams(GH_Component.GH_OutputParamManager pManager)
{
pManager.AddTextParameter("Output", "A", "Output", GH_ParamAccess.item);
}
protected override void SolveInstance(IGH_DataAccess DA)
{

}
public override System.Guid ComponentGuid
{
get { return new Guid("{DE314B90-AA73-4793-AB1C-051659B486E9}"); }
}
}

/// Component Visual//
public class Attributes_Custom : GH_ComponentAttributes
{
public Attributes_Custom(GH_Component owner) : base(owner) { }
protected override void Layout()
{
base.Layout();

Rectangle rec0 = GH_Convert.ToRectangle(Bounds);

rec0.Height += 42;


Rectangle rec1 = rec0;
rec1.X = rec0.Left+2 ;
rec1.Y = rec0.Bottom - 42;
rec1.Width =(rec0.Width)/3;
rec1.Height = 22;
rec1.Inflate(-2, -2);

Rectangle rec2 = rec0;
rec2.X = rec1.Right;
rec2.Y = rec0.Bottom - 42;
rec2.Width = (rec0.Width) / 3;
rec2.Height = 22;
rec2.Inflate(-2, -2);

Rectangle rec3 = rec0;
rec3.X = rec2.Right;
rec3.Y = rec0.Bottom - 42;
rec3.Width = (rec0.Width) / 3;
rec3.Height = 22;
rec3.Inflate(-2, -2);

Rectangle rec4 = rec0;
rec4.X = rec0.Left+2;
rec4.Y = rec0.Bottom - 22;
rec4.Width = (rec0.Width) / 3;
rec4.Height = 22;
rec4.Inflate(-2, -2);

Rectangle rec5 = rec0;
rec5.X = rec4.Right;
rec5.Y = rec0.Bottom - 22;
rec5.Width = (rec0.Width) / 3;
rec5.Height = 22;
rec5.Inflate(-2, -2);

Rectangle rec6 = rec0;
rec6.X = rec5.Right;
rec6.Y = rec0.Bottom - 22;
rec6.Width = (rec0.Width)/3;
rec6.Height = 22;
rec6.Inflate(-2, -2);

Bounds = rec0;
ButtonBounds = rec1;
ButtonBounds2 = rec2;
ButtonBounds3 = rec3;
ButtonBounds4 = rec4;
ButtonBounds5 = rec5;
ButtonBounds6 = rec6;
}
private Rectangle ButtonBounds { get; set; }
private Rectangle ButtonBounds2 { get; set; }
private Rectangle ButtonBounds3 { get; set; }
private Rectangle ButtonBounds4 { get; set; }
private Rectangle ButtonBounds5 { get; set; }
private Rectangle ButtonBounds6 { get; set; }

protected override void Render(GH_Canvas canvas, Graphics graphics, GH_CanvasChannel channel)
{
base.Render(canvas, graphics, channel);
if (channel == GH_CanvasChannel.Objects)
{
GH_Capsule button = GH_Capsule.CreateTextCapsule(ButtonBounds, ButtonBounds, GH_Palette.Blue, "X", 2, 0);
button.Render(graphics, Selected, Owner.Locked, false);
button.Dispose();

}
if (channel == GH_CanvasChannel.Objects)
{
GH_Capsule button2 = GH_Capsule.CreateTextCapsule(ButtonBounds2, ButtonBounds2, GH_Palette.Black, "Y", 2, 0);
button2.Render(graphics, Selected, Owner.Locked, false);
button2.Dispose();
}
if (channel == GH_CanvasChannel.Objects)
{
GH_Capsule button3 = GH_Capsule.CreateTextCapsule(ButtonBounds3, ButtonBounds3, GH_Palette.Pink, "Z", 2, 0);
button3.Render(graphics, Selected, Owner.Locked, false);
button3.Dispose();
}
if (channel == GH_CanvasChannel.Objects)
{
GH_Capsule button4 = GH_Capsule.CreateTextCapsule(ButtonBounds4, ButtonBounds4, GH_Palette.White, "u", 2, 0);
button4.Render(graphics, Selected, Owner.Locked, false);
button4.Dispose();
}
if (channel == GH_CanvasChannel.Objects)
{
GH_Capsule button5 = GH_Capsule.CreateTextCapsule(ButtonBounds5, ButtonBounds5, GH_Palette.Grey, "v", 2, 0);
button5.Render(graphics, Selected, Owner.Locked, false);
button5.Dispose();
}
if (channel == GH_CanvasChannel.Objects)
{
GH_Capsule button6 = GH_Capsule.CreateTextCapsule(ButtonBounds6, ButtonBounds6, GH_Palette.Error, "w", 2, 0);
button6.Render(graphics, Selected, Owner.Locked, false);
button6.Dispose();
}
}

public override GH_ObjectResponse RespondToMouseDown(GH_Canvas sender, GH_CanvasMouseEvent e)
{
if (e.Button == MouseButtons.Left)
{
RectangleF rec = ButtonBounds;
if (rec.Contains(e.CanvasLocation))
{
MessageBox.Show("x", "x", MessageBoxButtons.OK);
return GH_ObjectResponse.Handled;
}
}

if (e.Button == MouseButtons.Left)
{
RectangleF rec = ButtonBounds2;
if (rec.Contains(e.CanvasLocation))
{
MessageBox.Show("y", "y", MessageBoxButtons.OK);
return GH_ObjectResponse.Handled;
}
}
if (e.Button == MouseButtons.Left)
{
RectangleF rec = ButtonBounds3;
if (rec.Contains(e.CanvasLocation))
{
MessageBox.Show("z", "z", MessageBoxButtons.OK);
return GH_ObjectResponse.Handled;
}
}
if (e.Button == MouseButtons.Left)
{
RectangleF rec = ButtonBounds4;
if (rec.Contains(e.CanvasLocation))
{
MessageBox.Show("u", "u", MessageBoxButtons.OK);
return GH_ObjectResponse.Handled;
}
}
if (e.Button == MouseButtons.Left)
{
RectangleF rec = ButtonBounds5;
if (rec.Contains(e.CanvasLocation))
{
MessageBox.Show("v", "v", MessageBoxButtons.OK);
return GH_ObjectResponse.Handled;
}
}
if (e.Button == MouseButtons.Left)
{
RectangleF rec = ButtonBounds6;
if (rec.Contains(e.CanvasLocation))
{
MessageBox.Show("w", "w", MessageBoxButtons.OK);
return GH_ObjectResponse.Handled;
}
}
return base.RespondToMouseDown(sender, e);
}
}

-------------------------------------------------------------------------------------------

Views: 874

Attachments:

About

Translate

Search

Videos

  • Add Videos
  • View All

© 2024   Created by Scott Davidson.   Powered by

Badges  |  Report an Issue  |  Terms of Service