public override void SetParamters(byte[] objParamters) { try { BinaryReader pParameter = new BinaryReader(new MemoryStream(objParamters)); BinaryReader pBinaryReader = pParameter; m_psRuleParas = new RuleExpression.LRTopoParas(); pBinaryReader.BaseStream.Position = 0; int nStrSize = pParameter.ReadInt32(); // 字符串总长度 int origT_size = pParameter.ReadInt32(); // Layer : 原始图层几何类型总长度 int selT_size = pParameter.ReadInt32(); // Layer : 选中图层几何类型 int rank_size = pParameter.ReadInt32(); // Rank : 图层的优先级 int rule_count = pParameter.ReadInt32(); // 规则结构体的个数 List <int> rule_size = new List <int>(); // 每个规则结构体的长度 for (int i = 0; i < rule_count; i++) { int nRuleSize = pParameter.ReadInt32(); rule_size.Add(nRuleSize); } // LRTopoParas的参数 m_psRuleParas.dTolerance = pParameter.ReadDouble(); // 容差 //解析字符串 Byte[] bb = new byte[nStrSize]; pParameter.Read(bb, 0, nStrSize); string para_str = Encoding.Default.GetString(bb); para_str.Trim(); // 解析字符串 ParseTopoPara(para_str, m_psRuleParas); // Layer : 原始图层几何类型 m_psRuleParas.arrayOrigGeoT = new List <int>(); for (int k = 0; k < origT_size / 4; k++) { int orig_geoT = pParameter.ReadInt32(); m_psRuleParas.arrayOrigGeoT.Add(orig_geoT); } int j = 0; // Layer : 选中图层几何类型 m_psRuleParas.arraySeledGeoT = new List <int>(); for (j = 0; j < (selT_size / 4); j++) { int sel_geoT = pParameter.ReadInt32(); m_psRuleParas.arraySeledGeoT.Add(sel_geoT); } // Rank : 图层的优先级 m_psRuleParas.arrayRanks = new List <int>(); for (j = 0; j < (rank_size / 4); j++) { int rank = pParameter.ReadInt32(); m_psRuleParas.arrayRanks.Add(rank); } // ---------------------------规则------------------------------------ m_psRuleParas.arrayRules = new List <RuleExpression.LRTopoRule>(); for (j = 0; j < rule_count; j++) { int nRuleSize = rule_size[j]; RuleExpression.LRTopoRule pRule = new RuleExpression.LRTopoRule(); pRule.lPicID = pParameter.ReadInt32(); // 规则描述图片ID pRule.nGeoTSrc = pParameter.ReadInt32(); // 源图层几何类型 pRule.nGeoTTarget = pParameter.ReadInt32(); // 目标图标几何类型 pRule.nRankSrc = pParameter.ReadInt32(); // 源图层Rank pRule.nRankTarget = pParameter.ReadInt32(); // 目标图标Rank pRule.bShowError = Convert.ToBoolean(pParameter.ReadInt32()); // 是否显示错误 //解析字符串 Byte[] bb1 = new byte[nRuleSize - sizeof(int) * 6]; pParameter.Read(bb1, 0, nRuleSize - sizeof(int) * 6); string para_str1 = Encoding.Default.GetString(bb1); para_str1.Trim(); string[] strResult1 = para_str1.Split('|'); int k = 0; pRule.strSourceLayerName = strResult1[k++]; pRule.strTopoRuleName = strResult1[k++]; pRule.strTargetLayerName = strResult1[k++]; pRule.strRuleDesc = strResult1[k++]; pRule.strRuleAliasName = strResult1[k]; // 插入规则数组 m_psRuleParas.arrayRules.Add(pRule); } pParameter = pBinaryReader; this.m_InstanceName = m_psRuleParas.arrayRules[0].strRuleAliasName; } catch { } }
public override void SetParamters(byte[] objParamters) { try { BinaryReader pParameter = new BinaryReader(new MemoryStream(objParamters)); BinaryReader pBinaryReader = pParameter; m_psRuleParas = new RuleExpression.LRTopoParas(); pBinaryReader.BaseStream.Position = 0; int nStrSize = pParameter.ReadInt32(); // �ַ����ܳ��� int origT_size = pParameter.ReadInt32(); // Layer : ԭʼͼ�㼸�������ܳ��� int selT_size = pParameter.ReadInt32(); // Layer : ѡ��ͼ�㼸������ int rank_size = pParameter.ReadInt32(); // Rank : ͼ������ȼ� int rule_count = pParameter.ReadInt32(); // ����ṹ��ĸ��� List<int> rule_size = new List<int>(); // ÿ������ṹ��ij��� for (int i = 0; i < rule_count; i++) { int nRuleSize = pParameter.ReadInt32(); rule_size.Add(nRuleSize); } // LRTopoParas�IJ��� m_psRuleParas.dTolerance = pParameter.ReadDouble(); // �ݲ� //�����ַ��� Byte[] bb = new byte[nStrSize]; pParameter.Read(bb, 0, nStrSize); string para_str = Encoding.Default.GetString(bb); para_str.Trim(); // �����ַ��� ParseTopoPara(para_str, m_psRuleParas); // Layer : ԭʼͼ�㼸������ m_psRuleParas.arrayOrigGeoT = new List<int>(); for (int k = 0; k < origT_size / 4; k++) { int orig_geoT = pParameter.ReadInt32(); m_psRuleParas.arrayOrigGeoT.Add(orig_geoT); } int j = 0; // Layer : ѡ��ͼ�㼸������ m_psRuleParas.arraySeledGeoT = new List<int>(); for (j = 0; j < (selT_size / 4); j++) { int sel_geoT = pParameter.ReadInt32(); m_psRuleParas.arraySeledGeoT.Add(sel_geoT); } // Rank : ͼ������ȼ� m_psRuleParas.arrayRanks = new List<int>(); for (j = 0; j < (rank_size / 4); j++) { int rank = pParameter.ReadInt32(); m_psRuleParas.arrayRanks.Add(rank); } // ---------------------------����------------------------------------ m_psRuleParas.arrayRules = new List<RuleExpression.LRTopoRule>(); for (j = 0; j < rule_count; j++) { int nRuleSize = rule_size[j]; RuleExpression.LRTopoRule pRule = new RuleExpression.LRTopoRule(); pRule.lPicID = pParameter.ReadInt32(); // ��������ͼƬID pRule.nGeoTSrc = pParameter.ReadInt32(); // Դͼ�㼸������ pRule.nGeoTTarget = pParameter.ReadInt32(); // Ŀ��ͼ�꼸������ pRule.nRankSrc = pParameter.ReadInt32(); // Դͼ��Rank pRule.nRankTarget = pParameter.ReadInt32(); // Ŀ��ͼ��Rank pRule.bShowError = Convert.ToBoolean(pParameter.ReadInt32()); // �Ƿ���ʾ���� //�����ַ��� Byte[] bb1 = new byte[nRuleSize - sizeof(int) * 6]; pParameter.Read(bb1, 0, nRuleSize - sizeof(int) * 6); string para_str1 = Encoding.Default.GetString(bb1); para_str1.Trim(); string[] strResult1 = para_str1.Split('|'); int k = 0; pRule.strSourceLayerName = strResult1[k++]; pRule.strTopoRuleName = strResult1[k++]; pRule.strTargetLayerName = strResult1[k++]; pRule.strRuleDesc = strResult1[k++]; pRule.strRuleAliasName = strResult1[k]; // ����������� m_psRuleParas.arrayRules.Add(pRule); } pParameter = pBinaryReader; this.m_InstanceName = m_psRuleParas.arrayRules[0].strRuleAliasName; } catch { } }