protected override void OnDynamicDraw(GetPointDrawEventArgs e) { IAction action = Core.Instance.Actions.CurrentAction; if (action != null) { PreviewParameters pParam; if (SelectionPoints == null) { Point3d basePt; TryGetBasePoint(out basePt); pParam = new PreviewParameters(true, null, FromRC.Convert(e.CurrentPoint), FromRC.Convert(basePt)); } else { IList <Vector> sPts = new List <Vector>(); foreach (Vector pt in SelectionPoints) { sPts.Add(pt); // Draw points: e.Display.DrawPoint(ToRC.Convert(pt), PointStyle.X, 3, System.Drawing.Color.Orange); } sPts.Add(FromRC.Convert(e.CurrentPoint)); pParam = new PreviewParameters(true, null, sPts); } DisplayLayer previewLayer = action.PreviewLayer(pParam); if (previewLayer != null) { var rParam = new RhinoRenderingParameters(e); previewLayer.Draw(rParam); } } base.OnDynamicDraw(e); }
public override bool Draw(RenderingParameters parameters) { if (parameters is RhinoRenderingParameters && RenderCurve != null) { RhinoRenderingParameters rParams = (RhinoRenderingParameters)parameters; if (RenderCurve is RC.LineCurve && Dotted) //? { RC.Line line = ((RC.LineCurve)RenderCurve).Line; if (Dotted) { rParams.Display.DrawDottedLine(line, Material.Diffuse); } else { rParams.Display.DrawLine(line, Material.Diffuse); } } else { rParams.Display.DrawCurve(RenderCurve, Material.Diffuse, 3); } double arrS = ToRC.Convert(0.3); if (ArrowStart) { rParams.Display.DrawArrowHead(RenderCurve.PointAtStart - arrS * RenderCurve.TangentAtStart, -RenderCurve.TangentAtStart, Material.Diffuse, 0, arrS); } if (ArrowEnd) { rParams.Display.DrawArrowHead(RenderCurve.PointAtEnd + arrS * RenderCurve.TangentAtEnd, RenderCurve.TangentAtEnd, Material.Diffuse, 0, arrS); } return(true); } return(false); }
public override bool CastTo <Q>(ref Q target) { if (typeof(Q).IsAssignableFrom(typeof(GH_Point))) { target = (Q)((object)new GH_Point(ToRC.Convert(Value.Position))); return(true); } return(base.CastTo <Q>(ref target)); }
public void DrawViewportWires(GH_PreviewWireArgs args) { if (Value != null) { args.Pipeline.DrawPoint(ToRC.Convert(Value.Position), RD.PointStyle.X, 8, args.Color); /*Mesh mesh = SupportMesh; * if (mesh != null) args.Pipeline.DrawMeshWires(mesh, args.Color);*/ } }
public override bool Draw(RenderingParameters parameters) { if (parameters is RhinoRenderingParameters && _Label != null) { RhinoRenderingParameters rParams = (RhinoRenderingParameters)parameters; var scrPt = rParams.Display.Viewport.WorldToClient(ToRC.Convert(_Label.Position)); scrPt.X += 2; scrPt.Y -= 2; rParams.Display.Draw2dText(_Label.Text, System.Drawing.Color.GhostWhite, scrPt, !_Label.HorizontalSetOut.IsEdge()); return(true); } return(false); }
public override bool Draw(RenderingParameters parameters) { if (parameters is RhinoRenderingParameters && _CoordinateSystem != null) { RhinoRenderingParameters rParams = (RhinoRenderingParameters)parameters; if (_CoordinateSystem is CartesianCoordinateSystem) { CartesianCoordinateSystem cSystem = (CartesianCoordinateSystem)_CoordinateSystem; rParams.Display.DrawDirectionArrow(ToRC.Convert(cSystem.Origin), ToRC.ConvertVector(cSystem.X), System.Drawing.Color.LightGray); rParams.Display.DrawDirectionArrow(ToRC.Convert(cSystem.Origin), ToRC.ConvertVector(cSystem.Y), System.Drawing.Color.Gray); rParams.Display.DrawDirectionArrow(ToRC.Convert(cSystem.Origin), ToRC.ConvertVector(cSystem.Z), System.Drawing.Color.Orange); } return(true); } return(false); }
public void DrawViewportWires(GH_PreviewWireArgs args) { if (Value?.Geometry != null) { if (Value.Geometry is FB.Line) { args.Pipeline.DrawLine( new Line(ToRC.Convert(Value.Geometry.StartPoint), ToRC.Convert(Value.Geometry.EndPoint)), args.Color); } else if (Value.Geometry is FB.Arc) { args.Pipeline.DrawArc( new Arc(ToRC.Convert(Value.Geometry.StartPoint), ToRC.Convert(Value.Geometry.PointAt(0.5)), ToRC.Convert(Value.Geometry.EndPoint)), args.Color); } args.Pipeline.DrawMeshWires(SectionMesh, args.Color); } }
public override bool CastTo <Q>(ref Q target) { if (typeof(Q).IsAssignableFrom(typeof(ElementGoo))) { target = (Q)(object)new ElementGoo(Value); return(true); } else if (typeof(Q).IsAssignableFrom(typeof(GH_Curve))) { target = (Q)((object)new GH_Curve(ToRC.Convert(Value.Geometry))); return(true); } else if (typeof(Q).IsAssignableFrom(typeof(GH_Line))) { if (Value.Geometry is FB.Line) { target = (Q)((object)new GH_Line(ToRC.ConvertToLine((FB.Line)Value.Geometry))); return(true); } } else if (typeof(Q).IsAssignableFrom(typeof(GH_Mesh))) { if (SectionMesh != null) { target = (Q)((object)new GH_Mesh(SectionMesh)); return(true); } } else if (typeof(Q).IsAssignableFrom(typeof(GH_Surface))) { var surface = ToRC.ConvertToExtrusion(Value); target = (Q)(object)new GH_Surface(surface); return(surface != null); } else if (typeof(Q).IsAssignableFrom(typeof(GH_Brep))) { target = (Q)(object)new GH_Brep(ToRC.ConvertToBrep(Value)); return(true); } return(base.CastTo <Q>(ref target)); }
public override bool CastTo <Q>(ref Q target) { if (typeof(Q).IsAssignableFrom(typeof(ElementGoo))) { target = (Q)(object)new ElementGoo(Value); return(true); } else if (typeof(Q).IsAssignableFrom(typeof(GH_Surface))) { var surface = ToRC.Convert(Value.Geometry) as Surface; target = (Q)(object)new GH_Surface(surface); return(surface != null); } else if (typeof(Q).IsAssignableFrom(typeof(GH_Brep))) { var surface = ToRC.Convert(Value.Geometry) as Brep; target = (Q)(object)new GH_Brep(surface); return(surface != null); } return(false); }
/// <summary> /// Wrap an object in goo, if possible /// </summary> /// <param name="obj"></param> /// <returns></returns> protected object FormatForOutput(object obj, ExecutionInfo exInfo) { if (obj is Vector) { return(ToRC.Convert((Vector)obj)); } else if (obj is Curve) { return(ToRC.Convert((Curve)obj)); } else if (obj is CurveCollection) { return(ToRC.Convert((CurveCollection)obj)); } else if (obj is VertexGeometry) { return(ToRC.Convert((VertexGeometry)obj)); } else if (obj is VertexGeometryCollection) { return(ToRC.Convert((VertexGeometryCollection)obj)); } else if (obj is LinearElement) { return(new LinearElementGoo((LinearElement)obj, exInfo)); } else if (obj is LinearElementCollection) { return(LinearElementGoo.Convert((LinearElementCollection)obj)); } else if (obj is PanelElement) { return(new PanelElementGoo((PanelElement)obj)); } else if (obj is PanelElementCollection) { return(PanelElementGoo.Convert((PanelElementCollection)obj)); } else if (obj is Element) { return(new ElementGoo((Element)obj)); } else if (obj is ElementCollection) { return(ElementGoo.Convert((ElementCollection)obj)); } else if (obj is SectionFamily) { return(new SectionFamilyGoo((SectionFamily)obj)); } else if (obj is SectionFamilyCollection) { return(SectionFamilyGoo.Convert((SectionFamilyCollection)obj)); } else if (obj is BuildUpFamily) { return(new BuildUpFamilyGoo((BuildUpFamily)obj)); } else if (obj is BuildUpFamilyCollection) { return(BuildUpFamilyGoo.Convert((BuildUpFamilyCollection)obj)); } else if (obj is Node) { return(new NodeGoo((Node)obj, exInfo)); } else if (obj is NodeCollection) { return(NodeGoo.Convert((NodeCollection)obj, exInfo)); } else if (obj is Nucleus.Model.Material) { return(new MaterialGoo((Nucleus.Model.Material)obj)); } else if (obj is MaterialCollection) { return(MaterialGoo.Convert((MaterialCollection)obj)); } else if (obj is Bool6D) { return(new Bool6DGoo((Bool6D)obj)); } else if (obj is FilePath) { return(obj.ToString()); } //Add more types here return(obj); }
/// <summary> /// Registers all the input parameters for this component. /// </summary> protected override void RegisterInputParams(GH_InputParamManager pManager) { IAction action = (IAction)Activator.CreateInstance(ActionType, true); NicknameConverter nC = new NicknameConverter(); IList <PropertyInfo> inputs = ActionBase.ExtractInputParameters(ActionType); foreach (PropertyInfo pInfo in inputs) { Type pType = pInfo.PropertyType; ActionInputAttribute inputAtt = ActionInputAttribute.ExtractFrom(pInfo); if (inputAtt != null && inputAtt.Parametric) { string name = pInfo.Name; string nickname = string.IsNullOrEmpty(inputAtt.ShortName) ? nC.Convert(pInfo.Name) : inputAtt.ShortName; string description = inputAtt.CapitalisedDescription; if (pType == typeof(double)) { pManager.AddNumberParameter(name, nickname, description, GH_ParamAccess.item, (double)pInfo.GetValue(action, null)); } else if (pType == typeof(int)) { pManager.AddIntegerParameter(name, nickname, description, GH_ParamAccess.item, (int)pInfo.GetValue(action, null)); } else if (pType == typeof(string)) { pManager.AddTextParameter(name, nickname, description, GH_ParamAccess.item, (string)pInfo.GetValue(action, null)); } else if (pType == typeof(bool)) { //Special case when the input is a 'Write' toggle - default off! pManager.AddBooleanParameter(name, nickname, description, GH_ParamAccess.item, name == "Write" ? false : (bool)pInfo.GetValue(action, null)); } else if (pType == typeof(Vector)) { pManager.AddPointParameter(name, nickname, description, GH_ParamAccess.item); } else if (typeof(IList <Vector>).IsAssignableFrom(pType)) //Vector list { pManager.AddPointParameter(name, nickname, description, GH_ParamAccess.list); } else if (pType.IsAssignableFrom(typeof(Plane))) { pManager.AddPlaneParameter(name, nickname, description, GH_ParamAccess.item, ToRC.Convert((Plane)pInfo.GetValue(action, null))); } else if (pType == typeof(Line)) { pManager.AddLineParameter(name, nickname, description, GH_ParamAccess.item); } else if (pType == typeof(Angle)) { pManager.AddAngleParameter(name, nickname, description, GH_ParamAccess.item, (Angle)pInfo.GetValue(action, null)); } else if (typeof(Curve).IsAssignableFrom(pType)) { pManager.AddCurveParameter(name, nickname, description, GH_ParamAccess.item); } else if (typeof(CurveCollection).IsAssignableFrom(pType)) { pManager.AddCurveParameter(name, nickname, description, GH_ParamAccess.list); } else if (typeof(LinearElement).IsAssignableFrom(pType)) { IGH_Param param = new LinearElementParam(); pManager.AddParameter(param, name, nickname, description, GH_ParamAccess.item); } else if (typeof(PanelElement).IsAssignableFrom(pType)) { IGH_Param param = new PanelElementParam(); pManager.AddParameter(param, name, nickname, description, GH_ParamAccess.item); } else if (typeof(Element).IsAssignableFrom(pType)) { IGH_Param param = new ElementParam(); pManager.AddParameter(param, name, nickname, description, GH_ParamAccess.item); } else if (typeof(LinearElementCollection).IsAssignableFrom(pType)) { IGH_Param param = new LinearElementParam(); pManager.AddParameter(param, name, nickname, description, ParamAccess(inputAtt)); } else if (typeof(PanelElementCollection).IsAssignableFrom(pType)) { IGH_Param param = new PanelElementParam(); pManager.AddParameter(param, name, nickname, description, ParamAccess(inputAtt)); } else if (typeof(ElementCollection).IsAssignableFrom(pType)) { IGH_Param param = new ElementParam(); pManager.AddParameter(param, name, nickname, description, ParamAccess(inputAtt)); } else if (pType == typeof(Node)) { IGH_Param param = new NodeParam(); pManager.AddParameter(param, name, nickname, description, GH_ParamAccess.item); } else if (pType == typeof(NodeCollection)) { IGH_Param param = new NodeParam(); pManager.AddParameter(param, name, nickname, description, ParamAccess(inputAtt)); } else if (typeof(Nucleus.Model.Material).IsAssignableFrom(pType)) { IGH_Param param = new MaterialParam(); pManager.AddParameter(param, name, nickname, description, GH_ParamAccess.item); } else if (typeof(MaterialCollection).IsAssignableFrom(pType)) { IGH_Param param = new MaterialParam(); pManager.AddParameter(param, name, nickname, description, ParamAccess(inputAtt)); } else if (typeof(SectionFamily).IsAssignableFrom(pType)) { IGH_Param param = new SectionFamilyParam(); pManager.AddParameter(param, name, nickname, description, GH_ParamAccess.item); } else if (pType == typeof(Bool6D)) { IGH_Param param = new Bool6DParam(); pManager.AddParameter(param, name, nickname, description, GH_ParamAccess.item); } else if (pType == typeof(FilePath)) { pManager.AddTextParameter(name, nickname, description, GH_ParamAccess.item); } else if (pType == typeof(VertexGeometry)) { pManager.AddGeometryParameter(name, nickname, description, GH_ParamAccess.item); } else if (pType == typeof(VertexGeometryCollection)) { pManager.AddGeometryParameter(name, nickname, description, ParamAccess(inputAtt)); } else if (pType == typeof(ActionTriggerInput)) { pManager.AddGenericParameter(name, nickname, description, GH_ParamAccess.tree); } else if (pType == typeof(Direction)) { pManager.AddTextParameter(name, nickname, description, GH_ParamAccess.item, pInfo.GetValue(action, null)?.ToString()); } else if (pType == typeof(CoordinateSystemReference)) { pManager.AddTextParameter(name, nickname, description, GH_ParamAccess.item, pInfo.GetValue(action, null)?.ToString()); } else if (pType.IsEnum) { pManager.AddTextParameter(name, nickname, description, GH_ParamAccess.item, pInfo.GetValue(action, null)?.ToString()); } else { pManager.AddGenericParameter(pInfo.Name, nickname, description, GH_ParamAccess.item); } if (inputAtt.Required == false) { pManager[pManager.ParamCount - 1].Optional = true; } //TODO } } }
protected override void CalculateBoundingBox(CalculateBoundingBoxEventArgs e) { base.CalculateBoundingBox(e); RC.BoundingBox bBox = ToRC.Convert(Core.Instance.ActiveDocument.Model.BoundingBox); e.IncludeBoundingBox(bBox); }