private void StartAddLink(ConnectorElement connStart, Point mousePoint) { if (Document.Action == DesignerAction.Connect) { _connStart = connStart; _connEnd = new ConnectorElement(connStart.ParentElement) { Location = connStart.Location }; var controller = (IMoveController)((IControllable)_connEnd).GetController(); controller.Start(mousePoint); _isAddLink = true; _linkLine = new StraightLinkElement(connStart, _connEnd) { BorderWidth = 1 }; Invalidate(_linkLine, true); OnElementConnecting(new ElementConnectEventArgs(connStart.ParentElement, null, _linkLine)); } }
private void GetConnectors(Link link, out ConnectorElement startConnectorElement, out ConnectorElement endConnectorElement) { startConnectorElement = (ConnectorElement)Document.FindElement(new Point(link.StartPointX, link.StartPointY)); endConnectorElement = (ConnectorElement)Document.FindElement(new Point(link.EndPointX, link.EndPointY)); if (startConnectorElement == null || endConnectorElement == null) { var startNode = Document.Elements.GetArray().FirstOrDefault(n => n.Id == link.StartNodeId); var endNode = Document.Elements.GetArray().FirstOrDefault(n => n.Id == link.EndNodeId); if (startNode != null && endNode != null) { var listTuples = new List <LineVariantTuple>(); foreach (var connector1 in ((NodeElement)startNode).Connectors) { foreach (var connector2 in ((NodeElement)endNode).Connectors) { listTuples.Add(new LineVariantTuple { StartPoint = connector1.Location, EndPoint = connector2.Location }); } } var minLengthLine = listTuples.OrderBy(l => l.Length).FirstOrDefault(); if (minLengthLine != null) { startConnectorElement = (ConnectorElement)Document.FindElement(minLengthLine.StartPoint); endConnectorElement = (ConnectorElement)Document.FindElement(minLengthLine.EndPoint); } } } }
/// <summary> /// 获得指定设备的所有连接键 /// </summary> /// <param name="revitDoc">Revit Document</param> /// <param name="instId">实例ID</param> public static List <RevitConnector> GetRevitConnectors(Document revitDoc, ElementId instId) { FamilyInstance oInst = revitDoc.GetElement(instId) as FamilyInstance; Family family = oInst.Symbol.Family; Document familyDoc = revitDoc.EditFamily(family); List <ConnectorElement> elems = GetConnectorElement(familyDoc); Transform transfrom = GetTransform(revitDoc, oInst); if (transfrom == null) { return(null); } List <RevitConnector> rcList = new List <RevitConnector>(); foreach (Element elem in elems) { ConnectorElement ce = elem as ConnectorElement; Parameter para = ce.get_Parameter(BuiltInParameter.RBS_CONNECTOR_DESCRIPTION); if (para != null) { RevitConnector rc = new RevitConnector(); rc.Description = para.AsString(); rc.Direction = transfrom.OfPoint(ce.CoordinateSystem.BasisZ); rc.LocalPoint = transfrom.OfPoint(ce.Origin); rc.Connector = GetConnector(oInst, rc.LocalPoint); rcList.Add(rc); } } return(rcList); }
internal BaseLinkElement(ConnectorElement connectorElement1, ConnectorElement connectorElement2) { borderWidth = 1; connector1 = connectorElement1; connector2 = connectorElement2; connector1.AddLink(this); connector2.AddLink(this); }
public BaseLinkElement AddLink(ConnectorElement start, ConnectorElement end) { if (CanAddLink(start, end)) { var linkElement = new StraightLinkElement(start, end); _elements.Add(linkElement); linkElement.AppearanceChanged += ElementAppearanceChanged; OnAppearancePropertyChanged(new EventArgs()); return(linkElement); } return(null); }
static ElementFactory() { _boxPrototype = new BoxElement(); _boxPrototype.Title = "New box element."; _circleProrotype = new CircleElement(); _circleProrotype.Title = "New circle element"; _connectorPrototype = new ConnectorElement(); _connectorPrototype.Title = "New connector element"; }
private void EndAddLink() { if (_connEnd != _linkLine.Connector2) { _linkLine.Connector1.RemoveLink(_linkLine); _linkLine = Document.AddLink(_linkLine.Connector1, _linkLine.Connector2); OnElementConnected(new ElementConnectEventArgs(_linkLine.Connector1.ParentElement, _linkLine.Connector2.ParentElement, _linkLine)); } _connStart = null; _connEnd = null; _linkLine = null; }
public static void Implement() { BoxElement boxPrototype = new BoxElement(); DynamiFabric.AddPrototype(boxPrototype); CircleElement circlePrototype = new CircleElement(); DynamiFabric.AddPrototype(circlePrototype); ConnectorElement connectorPrototype = new ConnectorElement(); DynamiFabric.AddPrototype(connectorPrototype); BoxElement newBox = (BoxElement)DynamiFabric.CreateObject((typeof(BoxElement))); }
public void RestartInitValues() { // Reinitialize status _moveAction = null; _isMultiSelection = false; _isAddSelection = false; _isAddLink = false; _changed = false; _connStart = null; _selectionArea.FillColor = SystemColors.Control; Document.CalcWindow(true); }
public BaseLinkElement AddLink(ConnectorElement connStart, ConnectorElement connEnd) { if (CanAddLink(connStart, connEnd)) { BaseLinkElement lnk; if (_linkType == LinkType.Straight) lnk = new StraightLinkElement(connStart, connEnd); else // (linkType == LinkType.RightAngle) lnk = new RightAngleLinkElement(connStart, connEnd); Elements.Add(lnk); lnk.AppearanceChanged += ElementAppearanceChanged; OnAppearancePropertyChanged(new EventArgs()); return lnk; } return null; }
private void RestartInitValues() { // Reinitialize status _moveAction = null; _isMultiSelection = false; _isAddSelection = false; _isAddLink = false; Changed = false; _connStart = null; _selectionArea.FillColor1 = SystemColors.Control; _selectionArea.BorderColor = SystemColors.Control; _selectionArea.Visible = false; _document.CalcWindow(true); }
private void BuildBasicNodes(DragNodeChart chart) { chart.DataSet.SeriesName = "DS1"; for (int i = 1; i <= 10; i++) { var set = new DragNodeSetElement { Id = i.ToString(), X = _random.Next(5, 90), Y = _random.Next(5, 90), Width = _random.Next(30, 60), Height = _random.Next(30, 60), Radius = _random.Next(30, 70), Label = "Node " + i.ToString(), NumSides = _random.Next(3, 9), Shape = DragNodeShapes.Polygon }; set.Link.SetLink(FusionLinkMethod.NewWindow, "http://www.realweb21.com"); chart.DataSet.Add(set); } chart.Connectors.Color = "#FF0000".FromHtml(); chart.Connectors.StdThickness = 5; for (int i = 1; i <= 5; i++) { var connector = new ConnectorElement { Strength = _random.Next(100) / 100.0, Label = "Link " + i.ToString(), From = i.ToString(), To = (_random.Next(10 - i) + i).ToString(), Color = "#BBBB00".FromHtml(), ArrowAtStart = false, ArrowAtEnd = true }; chart.Connectors.Add(connector); } }
//////////////////////////////////////////////////////////////////// Vector3 PlaceModule(ConnectorElement outConnector, Module module) { if (module == null) { throw new System.ArgumentNullException("module"); } Vector3 newPos; // first connector is null! if (outConnector == null) { newPos = new Vector3(0, 0, 0); } else { newPos = -module.InConnector.transform.localPosition + outConnector.transform.position; // outConnector.transform.localPosition); } return(newPos); }
private void EndAddLink() { if (_connEnd != _linkLine.Connector2) { _linkLine.Connector1.RemoveLink(_linkLine); _linkLine = _document.AddLink(_linkLine.Connector1, _linkLine.Connector2); var eventArgs = new ElementConnectEventArgs(_linkLine.Connector1.ParentElement, _linkLine.Connector2.ParentElement, _linkLine); var accepted = true; if (_linkLine.Connector1.ParentElement is DiagramBlock) { accepted = (_linkLine.Connector1.ParentElement as DiagramBlock).OnElementConnected(this, eventArgs); } if (accepted) { OnElementConnected(eventArgs); } } _connStart = null; _connEnd = null; _linkLine = null; }
private void StartAddLink(ConnectorElement connectorStart, Point mousePoint) { if (_document.Action != DesignerAction.Connect) { return; } _connStart = connectorStart; _connEnd = new ConnectorElement(connectorStart.ParentElement) { Location = connectorStart.Location }; var ctrl = (IMoveController)((IControllable)_connEnd).GetController(); ctrl.Start(mousePoint); _isAddLink = true; switch (_document.LinkType) { case (LinkType.Straight): _linkLine = new StraightLinkElement(connectorStart, _connEnd); break; case (LinkType.RightAngle): _linkLine = new RightAngleLinkElement(connectorStart, _connEnd); break; } _linkLine.Visible = true; _linkLine.BorderColor = Color.FromArgb(150, Color.Black); _linkLine.BorderWidth = 1; Invalidate(_linkLine, true); OnElementConnecting(new ElementConnectEventArgs(connectorStart.ParentElement, null, _linkLine)); }
/// <summary> /// create the connectors on the extrusions /// </summary> private void CreateConnectors() { List <PlanarFace> m_planarFaces = null; Parameter param = null; #region Create the Supply Air duct connector // get the planar faces of extrusion1 m_planarFaces = GetPlanarFaces(extrusions[1]); // create the Supply Air duct connector //DuctConnector connSupplyAir = f.NewDuctConnector(m_planarFaces[0].Reference, // DuctSystemType.SupplyAir); ConnectorElement connSupplyAir = ConnectorElement.CreateDuctConnector(m_document, DuctSystemType.SupplyAir, ConnectorProfileType.Rectangular, m_planarFaces[0].Reference); param = connSupplyAir.get_Parameter(BuiltInParameter.CONNECTOR_HEIGHT); param.Set(connectorDimensions[0, 0]); param = connSupplyAir.get_Parameter(BuiltInParameter.CONNECTOR_WIDTH); param.Set(connectorDimensions[0, 1]); param = connSupplyAir.get_Parameter(BuiltInParameter.RBS_DUCT_FLOW_DIRECTION_PARAM); param.Set(2); param = connSupplyAir.get_Parameter(BuiltInParameter.RBS_DUCT_FLOW_CONFIGURATION_PARAM); param.Set(1); param = connSupplyAir.get_Parameter(BuiltInParameter.RBS_DUCT_FLOW_PARAM); param.Set(flow); #endregion #region Create the Return Air duct connector // get the planar faces of extrusion2 m_planarFaces = GetPlanarFaces(extrusions[2]); // create the Return Air duct connector //DuctConnector connReturnAir = f.NewDuctConnector(m_planarFaces[0].Reference, // DuctSystemType.ReturnAir); ConnectorElement connReturnAir = ConnectorElement.CreateDuctConnector(m_document, DuctSystemType.ReturnAir, ConnectorProfileType.Rectangular, m_planarFaces[0].Reference); param = connReturnAir.get_Parameter(BuiltInParameter.CONNECTOR_HEIGHT); param.Set(connectorDimensions[1, 0]); param = connReturnAir.get_Parameter(BuiltInParameter.CONNECTOR_WIDTH); param.Set(connectorDimensions[1, 1]); param = connReturnAir.get_Parameter(BuiltInParameter.RBS_DUCT_FLOW_DIRECTION_PARAM); param.Set(1); param = connReturnAir.get_Parameter(BuiltInParameter.RBS_DUCT_FLOW_CONFIGURATION_PARAM); param.Set(1); param = connReturnAir.get_Parameter(BuiltInParameter.RBS_DUCT_FLOW_PARAM); param.Set(flow); #endregion #region Create the Supply Hydronic pipe connector // get the planar faces of extrusion3 m_planarFaces = GetPlanarFaces(extrusions[3]); // create the Hydronic Supply pipe connector //PipeConnector connSupplyHydronic = f.NewPipeConnector(m_planarFaces[0].Reference, // PipeSystemType.SupplyHydronic); ConnectorElement connSupplyHydronic = ConnectorElement.CreatePipeConnector(m_document, PipeSystemType.SupplyHydronic, m_planarFaces[0].Reference); param = connSupplyHydronic.get_Parameter(BuiltInParameter.CONNECTOR_RADIUS); param.Set(arcRadius); param = connSupplyHydronic.get_Parameter(BuiltInParameter.RBS_PIPE_FLOW_DIRECTION_PARAM); param.Set(2); #endregion #region Create the Return Hydronic pipe connector // get the planar faces of extrusion4 m_planarFaces = GetPlanarFaces(extrusions[4]); // create the Hydronic Return pipe connector //PipeConnector connReturnHydronic = f.NewPipeConnector(m_planarFaces[0].Reference, // PipeSystemType.ReturnHydronic); ConnectorElement connReturnHydronic = ConnectorElement.CreatePipeConnector(m_document, PipeSystemType.ReturnHydronic, m_planarFaces[0].Reference); param = connReturnHydronic.get_Parameter(BuiltInParameter.CONNECTOR_RADIUS); param.Set(arcRadius); param = connReturnHydronic.get_Parameter(BuiltInParameter.RBS_PIPE_FLOW_DIRECTION_PARAM); param.Set(1); #endregion }
private void Stream( ArrayList data, ConnectorElement connElem ) { data.Add( new Snoop.Data.ClassSeparator( typeof( ConnectorElement ) ) ); data.Add( new Snoop.Data.Object( "Coordinate system", connElem.CoordinateSystem ) ); data.Add( new Snoop.Data.String( "Domain", connElem.Domain.ToString() ) ); data.Add( new Snoop.Data.Double( "Height", connElem.Height ) ); data.Add( new Snoop.Data.Double( "Width", connElem.Width ) ); data.Add( new Snoop.Data.Bool( "Is primary", connElem.IsPrimary ) ); data.Add( new Snoop.Data.Object( "Linked connector", connElem.GetLinkedConnectorElement() ) ); data.Add( new Snoop.Data.Xyz( "Origin", connElem.Origin ) ); data.Add( new Snoop.Data.Double( "Radius", connElem.Radius ) ); data.Add( new Snoop.Data.String( "Shape", connElem.Shape.ToString() ) ); //data.Add(new Snoop.Data.String("System type", connElem.SystemType.ToString())); }
internal bool CanAddLink(ConnectorElement connStart, ConnectorElement connEnd) { return((connStart != connEnd) && (connStart.ParentElement != connEnd.ParentElement)); }
void designer1_ElementsWillConnect(object sender, Designer.ElementsLinkedArgs e) { NodeElement node1 = e.Element1 as NodeElement; NodeElement node2 = e.Element2 as NodeElement; ConnectorElement connector1 = e.Connector1; ConnectorElement connector2 = e.Connector2; ElementInputType input = null; ElementOutputType output = null; bool inputOnRight = false; bool outputOnRight = false; BaseLinkElement outputLink = null; if (e.Element1.Tag is ElementInputType) { inputOnRight = node1.Connectors[1] == connector1; input = (ElementInputType)e.Element1.Tag; } if (e.Element2.Tag is ElementInputType) { inputOnRight = node2.Connectors[1] == connector2; input = (ElementInputType)e.Element2.Tag; } if (e.Element1.Tag is ElementOutputType) { outputOnRight = node1.Connectors[1] == connector1; output = (ElementOutputType)e.Element1.Tag; } if (e.Element2.Tag is ElementOutputType) { outputOnRight = node2.Connectors[1] == connector2; output = (ElementOutputType)e.Element2.Tag; } if (input == null) { e.Cancel = true; MessageBox.Show("Cannot connect two outputs"); return; } if (output == null) { e.Cancel = true; MessageBox.Show("Cannot connect two inputs"); return; } if (input.InputType != output.OutputType) { e.Cancel = true; MessageBox.Show("Cannot connect an input of type " + input.InputType + " to an output of type " + output.OutputType); return; } Guid g = Guid.NewGuid(); var lnk = new BaseElementLink { Input = input, InputOnLeft = !inputOnRight, Output = output, OutputOnLeft = !outputOnRight }; linkedIOS.Add(g.ToString(), lnk); e.NewLink.Tag = lnk; }
public void EndSector(out ConnectorElement outConnector) { fightingModule = InstantiateModule(generatorSector.Fighting) as FightingModule; outConnector = lastOutConnector; }
//////////////////////////////////////////////////////////////////// public void BeginSector(ConnectorElement outConnector) { lastOutConnector = outConnector; spawnModule = InstantiateModule(generatorSector.Spawn) as SpawnModule; }
internal bool CanAddLink(ConnectorElement start, ConnectorElement end) { return((start != end) && (start.ParentElement != end.ParentElement)); }
private static IChart ConnectorChart() { // // chart.Connectors.AddConnector() 를 사용하세요 // var chart = (GanttChart)MilestoneChart(); var connector = new ConnectorElement { // FromTaskId = chart.Tasks.TaskElements[1].Id, // ToTaskId = chart.Tasks.TaskElements[3].Id, FromTaskId = chart.Tasks[1].Id, ToTaskId = chart.Tasks[3].Id, FromTaskConnectStart = false, ToTaskConnectStart = true, LineAttr = { Thickness = 2, IsDashed = true, Color = Color.Blue }, }; // chart.Connectors.ConnectorElements.Add(connector); chart.Connectors.Add(connector); connector = new ConnectorElement { //FromTaskId = chart.Tasks.TaskElements[4].Id, //ToTaskId = chart.Tasks.TaskElements[6].Id, FromTaskId = chart.Tasks[4].Id, ToTaskId = chart.Tasks[6].Id, ToTaskConnectStart = true, LineAttr = { Thickness = 2, IsDashed = true, Color = Color.Red }, }; // chart.Connectors.ConnectorElements.Add(connector); chart.Connectors.Add(connector); connector = new ConnectorElement { //FromTaskId = chart.Tasks.TaskElements[6].Id, //ToTaskId = chart.Tasks.TaskElements[7].Id, FromTaskId = chart.Tasks[6].Id, ToTaskId = chart.Tasks[7].Id, ToTaskConnectStart = true, LineAttr = { Thickness = 2, IsDashed = false, Color = Color.DarkTurquoise }, }; // chart.Connectors.ConnectorElements.Add(connector); chart.Connectors.Add(connector); var trendline = new DateTimeLineElement { // Start = chart.Tasks.TaskElements[3].Start.Value, Start = chart.Tasks[3].Start.Value, DisplayValue = "Today", Color = "#33333".FromHtml(), Thickness = 2, IsDashed = false }; // chart.Trendlines.TrendlineElements.Add(trendline); chart.Trendlines.Add(trendline); // TrendZone (범위) trendline = new DateTimeLineElement { //Start = chart.Tasks.TaskElements[5].Start.Value.AddDays(10), //End = chart.Tasks.TaskElements[5].Start.Value.AddDays(15), Start = chart.Tasks[5].Start.Value.AddDays(10), End = chart.Tasks[5].Start.Value.AddDays(15), IsTrendZone = true, // 범위를 나타냄 DisplayValue = "Vacation", Color = "#FF5904".FromHtml(), Alpha = 20, Thickness = 2, IsDashed = false }; // chart.Trendlines.TrendlineElements.Add(trendline); chart.Trendlines.Add(trendline); return(chart); }