/// <summary> /// 电路是否是闭合的。 /// </summary> /// <returns></returns> public static bool CheckCircuitLoop() { //获取联通的电源 List <NDlabObject> l = NDlabObject.SearchLabObject(SearchCicuitType.Power, true); foreach (NDlabObject Lab in l) { if (Lab == null) { continue; } if ((Lab as CurrentSourceElement).CheckConnectLoop() == true) { return(true); } } return(false); }
public static void JionCircuit() { List <NDlabObject> lineList = NDlabObject.SearchLabObject(SearchCicuitType.ELELINE, false); foreach (NDlabObject obj in lineList) { if (obj != null && obj is EleLine) { EleLine eleLine = obj as EleLine; if (eleLine.ConnectLink == true) { NDlabObject start = eleLine.StartLineLeap.Link.m_Parent; NDlabObject end = eleLine.EndLineLeap.Link.m_Parent; CircuitElement myCircuit = LabObjectDataFactory.GetCircuit(start.LabObjID); CircuitElement OtherCircuit = LabObjectDataFactory.GetCircuit(end.LabObjID); Circuit.Lead startLead = eleLine.StartLineLeap.Link.m_Type == ElementLeapType.leadIn?myCircuit.leadIn:myCircuit.leadOut; Circuit.Lead endLead = eleLine.EndLineLeap.Link.m_Type == ElementLeapType.leadIn ? OtherCircuit.leadIn : OtherCircuit.leadOut; g_sim.Connect(startLead, endLead); } } } }
/// <summary> /// Get circuti data /// </summary> public bool GetCircuitData() { m_Circuitobj.Clear(); List <NDlabObject> l = NDlabObject.SearchLabObject(SearchCicuitType.NormalCircuit); foreach (NDlabObject Obj in l) { if (Obj == null) { continue; } CircuitObject o = (Obj as NDCircuitObject).GetCircuitData() as CircuitObject; if (o == null) { continue; } m_Circuitobj.Add(o); } List <NDlabObject> l2 = NDlabObject.SearchLabObject(SearchCicuitType.ELELINE); foreach (NDlabObject Obj in l2) { if (Obj == null) { continue; } CircuitObject o = (Obj as NDCircuitObject).GetCircuitData() as CircuitObject; if (o == null) { continue; } m_Circuitobj.Add(o); } return(true); }
/// <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); }