private void CreateElements(Circuit circuit, CircuitData circuitData, SignalList signals, bool createGraphics)
        {
            Dictionary <BaseElement, BaseElementData> elemDict = new Dictionary <BaseElement, BaseElementData>();

            foreach (BaseElementData elemData in circuitData.Elements)
            {
                InputOutputElement element = null;
                element = ConvertElementData(elemData, createGraphics, elemDict, signals);
                if (element != null)
                {
                    circuit.AddElement(element);
                }
            }
            foreach (ConnectionData connectionData in circuitData.Connections)
            {
                Connection connection = new Connection();
                connection.Name = connectionData.Name;
                ConnectTerminals(connection, circuit, elemDict);
                if (connection.Terminals.Count > 0)
                {
                    if (createGraphics)
                    {
                        GraphicConnection graphicConnection =
                            GraphicObjectFactory.CreateInstance(typeof(Connection), connection) as GraphicConnection;
                        CreateConnectionLines(circuit, graphicConnection, connectionData);
                    }
                    circuit.AddElement(connection);
                }
            }
        }
Пример #2
0
 /// <summary>
 /// Adds a new element to the circuit
 /// </summary>
 /// <param name="element">the element to add</param>
 public void AddElement(GraphicBaseElement element)
 {
     if (element != null)
     {
         m_Circuit.AddElement(element.LinkedObject as BaseElement);
         element.OnUpdateDrawing += new UpdateDrawingEvent(element_OnUpdateDrawing);
         if (element is GraphicInput && element.LinkedObject is SignalInput)
         {
             m_SignalList.Add((element.LinkedObject as SignalInput).Signal);
         }
         RaiseChangedEvent();
         UpdateDrawing();
         Invalidate();
     }
 }
Пример #3
0
    /// <summary>
    /// 构建电路
    /// </summary>
    public static bool CreateCircuit()
    {
        ClearCircuit();
        //
        if (CheckCircuitLoop() == false)
        {
            Debug.Log("电路不连通");
            g_IsCreateCircuit = false;
            return(false);
        }
        else
        {
            Debug.Log("电路连通");
        }
        //
        List <NDlabObject> l = NDlabObject.SearchLabObject(SearchCicuitType.NormalCircuit, false);

        //先加入元气件
        foreach (NDlabObject Lab in l)
        {
            if (Lab == null)
            {
                continue;
            }
            else
            {
                CircuitElement e = LabObjectDataFactory.GetCircuit(Lab.LabObjID);
                if (e != null)
                {
                    g_sim.AddElement(e);
                }
            }
        }
        //元气件进行连接
        foreach (NDlabObject Lab in l)
        {
            if (Lab == null)
            {
                continue;
            }
            else
            {
                (Lab as NDCircuitObject).JionCircuit(ref g_sim);
            }
        }
        //JionCircuit();
        try

        {
            //g_sim.needAnalyze();
            if (g_sim.doTick() == false)
            {
                //g_IsCreateCircuit = false;
                Debug.Log("CreateCircuit is false");
                return(false);
            }
            else
            {
                Debug.Log("CreateCircuit is true");
                g_IsCreateCircuit = true;
            }
        }
        catch (SharpCircuit.Circuit.CircuitException e)
        {
            Debug.Log(e.ToString());
            return(false);
        }
        return(true);
    }