示例#1
0
        private void compactTree()
        {
            var         levelSize   = new int[7];
            LevelOffset levelOffset = (l) => { var s = 0; for (var i = 0; i < l; i++)
                                               {
                                                   s += levelSize[i];
                                               }
                                               ; return(s); };
            var level = 0;

            levelSize[0] = 1;
            var index = 0;

            while (true)
            {
                if (index == levelOffset(level + 1))
                {
                    level++;
                }
                if (level > 6)
                {
                    return;
                }

                if (tree[index] == NOT_A_LEAF)
                {
                    levelSize[level + 1] += 8;
                }

                index++;
            }
        }
        void AddLevelOffset(string levelname, double value)
        {
            LevelOffset levelOffset = new LevelOffset();

            levelOffset.levelName        = levelname;
            levelOffset.levelOffsetValue = value;
            m_listLevelOffset.Add(levelOffset);
        }
示例#3
0
 public override int GetHashCode()
 {
     unchecked
     {
         var hashCode = Indent.GetHashCode();
         hashCode = (hashCode * 397) ^ LevelOffset.GetHashCode();
         hashCode = (hashCode * 397) ^ (Lines?.GetHashCode() ?? 0);
         hashCode = (hashCode * 397) ^ (Parent?.GetHashCode() ?? 0);
         hashCode = (hashCode * 397) ^ (Path?.GetHashCode() ?? 0);
         hashCode = (hashCode * 397) ^ (Tags?.GetHashCode() ?? 0);
         return(hashCode);
     }
 }
        public void AutoAdjustLevel()
        {
            GetALLLevelOffset();

            foreach (var item in m_dicLevelErrors)
            {
                Element ele = MtCommon.GetElementById(m_uIDocument.Document, item.Key);

                if (ele != null)
                {
                    string offset      = MtCommon.GetOneParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.Offset));
                    string startOffset = MtCommon.GetOneParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.StartOffset));
                    string endOffset   = MtCommon.GetOneParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.EndOffset));

                    string _level = string.Empty;
                    string level  = MtCommon.GetOneParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.Level));
                    if (string.IsNullOrEmpty(level) || level.Equals(MtGlobals.Parameters.NoParam.ToString()))
                    {
                        _level = MtCommon.GetOneParameter(ele, MtCommon.GetStringValue(MtGlobals.Parameters.ReferenceLevel));
                    }
                    else
                    {
                        _level = level;
                    }

                    string correctLevel       = string.Empty;
                    double offsetValue        = double.Parse(offset);
                    double correctOffsetValue = offsetValue;

                    if (offsetValue > 0)
                    {
                        bool isFirst = false;
                        for (int i = 0; i < m_listLevelOffset.Count; i++)
                        {
                            LevelOffset leveloffset = m_listLevelOffset[i];
                            if (leveloffset.levelName != _level && !isFirst)
                            {
                                continue;
                            }
                            else
                            {
                                isFirst = true;

                                if (correctOffsetValue >= leveloffset.levelOffsetValue)
                                {
                                    correctOffsetValue -= leveloffset.levelOffsetValue;
                                }
                                else
                                {
                                    correctLevel = leveloffset.levelName;
                                    break; //获得正确标高跳出
                                }
                            }
                        }
                    }
                    else
                    {
                        bool isFirst = false;
                        correctOffsetValue = Math.Abs(offsetValue);
                        for (int i = m_listLevelOffset.Count - 1; i >= 0; i--)
                        {
                            LevelOffset leveloffset = m_listLevelOffset[i];
                            if (leveloffset.levelName != _level && !isFirst)
                            {
                                continue;
                            }
                            else
                            {
                                isFirst = true;

                                if (correctOffsetValue >= leveloffset.levelOffsetValue)
                                {
                                    correctOffsetValue -= leveloffset.levelOffsetValue;
                                }
                                else
                                {
                                    correctLevel = leveloffset.levelName;
                                    break;
                                }
                            }
                        }
                    }
                    if (string.IsNullOrEmpty(level) || level.Equals(MtGlobals.Parameters.NoParam.ToString()))
                    {
                        if (m_levels != null && m_levels.ContainsKey(correctLevel))
                        {
                            Parameter param = ele.LookupParameter(MtCommon.GetStringValue(MtGlobals.Parameters.ReferenceLevel));
                            if (param != null)
                            {
                                param.Set(m_levels[correctLevel].LevelId);
                            }
                        }
                    }
                    else
                    {
                        if (m_levels != null && m_levels.ContainsKey(correctLevel))
                        {
                            ele.LookupParameter(MtCommon.GetStringValue(MtGlobals.Parameters.Offset)).Set(correctOffsetValue);
                            Parameter param = ele.LookupParameter(MtCommon.GetStringValue(MtGlobals.Parameters.Level));
                        }
                    }
                }
            }

            CheckPipeLevel();
        }