Example #1
0
        public static void EditLine()
        {
            Document doc = Application.DocumentManager.MdiActiveDocument;
            Database db  = doc.Database;

            // 事务处理器
            Autodesk.AutoCAD.DatabaseServices.TransactionManager tm = db.TransactionManager;
            // 开始第一个事务处理 tr1
            using (Transaction tr1 = tm.StartTransaction())
            {
                Point3d  ptStart = Point3d.Origin;
                Point3d  ptEnd   = new Point3d(100, 0, 0);
                Line     line1   = new Line(ptStart, ptEnd);
                ObjectId id1     = db.AddToModelSpace(line1); // 添加直线到数据库中
                // 开始第二个事务处理 tr2
                using (Transaction tr2 = tm.StartTransaction())
                {
                    line1.UpgradeOpen();                     // 切换line1的状态为可写
                    line1.ColorIndex = 1;                    // 设置直线的颜色为红色
                    ObjectId id2 = id1.Copy(ptStart, ptEnd); // 复制直线
                    id2.Rotate(ptEnd, Math.PI / 2);
                    // 开始第三个事务处理 tr3
                    using (Transaction tr3 = tm.StartTransaction())
                    {
                        Line line2 = (Line)tr3.GetObject(id2, OpenMode.ForWrite);
                        line2.ColorIndex = 3; // 设置直线的颜色为绿色
                        tr3.Abort();          // 撤销第三个事务处理tr3,line2的颜色不变
                    }
                    // 提交第二个事务处理tr2,line1颜色变为红色,复制line1并旋转90度
                    tr2.Commit();
                }
                tr1.Commit(); // 提交第一个事务处理tr1,添加line1到数据库中
            }
        }
        private void Process(ObjectId id)
        {
            RevObject obj;

            try
            {
                if (id is RevObject)
                {
                    obj = (RevObject)id;
                    if (obj.has(COMPLETE))
                    {
                        return;
                    }
                    _revWalk.parseHeaders(obj);
                }
                else
                {
                    obj = _revWalk.parseAny(id);
                    if (obj.has(COMPLETE))
                    {
                        return;
                    }
                }
            }
            catch (IOException e)
            {
                throw new TransportException("Cannot Read " + id.Name, e);
            }

            switch (obj.Type)
            {
            case Constants.OBJ_BLOB:
                ProcessBlob(obj);
                break;

            case Constants.OBJ_TREE:
                ProcessTree(obj);
                break;

            case Constants.OBJ_COMMIT:
                ProcessCommit(obj);
                break;

            case Constants.OBJ_TAG:
                ProcessTag(obj);
                break;

            default:
                throw new TransportException("Unknown object type " + id.Name + " (" + obj.Type + ")");
            }

            // If we had any prior errors fetching this object they are
            // now resolved, as the object was parsed successfully.
            //
            _fetchErrors.Remove(id.Copy());
        }
Example #3
0
        private void Process(ObjectId id)
        {
            RevObject obj;

            try
            {
                RevObject ro = (id as RevObject);
                if (ro != null)
                {
                    obj = ro;
                    if (obj.has(COMPLETE))
                    {
                        return;
                    }
                    _revWalk.parseHeaders(obj);
                }
                else
                {
                    obj = _revWalk.parseAny(id);
                    if (obj.has(COMPLETE))
                    {
                        return;
                    }
                }
            }
            catch (IOException e)
            {
                throw new TransportException("Cannot Read " + id.Name, e);
            }

            obj.DisposeBody();

            switch (obj.Type)
            {
            case Constants.OBJ_BLOB:
                ProcessBlob(obj);
                break;

            case Constants.OBJ_TREE:
                ProcessTree(obj);
                break;

            case Constants.OBJ_COMMIT:
                ProcessCommit(obj);
                break;

            case Constants.OBJ_TAG:
                ProcessTag(obj);
                break;

            default:
                throw new TransportException("Unknown object type " + id.Name + " (" + obj.Type + ")");
            }

            _fetchErrors.Remove(id.Copy());
        }
        private void Process(ObjectId id)
        {
            RevObject obj;
            try
            {
                if (id is RevObject)
                {
                    obj = (RevObject)id;
                    if (obj.has(COMPLETE))
                        return;
                    _revWalk.parseHeaders(obj);
                }
                else
                {
                    obj = _revWalk.parseAny(id);
                    if (obj.has(COMPLETE))
                        return;
                }
            }
            catch (IOException e)
            {
                throw new TransportException("Cannot Read " + id.Name, e);
            }

            obj.DisposeBody();

            switch (obj.Type)
            {
                case Constants.OBJ_BLOB:
                    ProcessBlob(obj);
                    break;

                case Constants.OBJ_TREE:
                    ProcessTree(obj);
                    break;

                case Constants.OBJ_COMMIT:
                    ProcessCommit(obj);
                    break;

                case Constants.OBJ_TAG:
                    ProcessTag(obj);
                    break;

                default:
                    throw new TransportException("Unknown object type " + id.Name + " (" + obj.Type + ")");
            }

            _fetchErrors.Remove(id.Copy());
        }
 /// <summary>Construct a MissingObjectException for the specified object id.</summary>
 /// <remarks>
 /// Construct a MissingObjectException for the specified object id.
 /// Expected type is reported to simplify tracking down the problem.
 /// </remarks>
 /// <param name="id">SHA-1</param>
 /// <param name="type">object type</param>
 public MissingObjectException(ObjectId id, string type) : base(MessageFormat.Format
                                                                    (JGitText.Get().missingObject, type, id.Name))
 {
     missing = id.Copy();
 }
Example #6
0
        private void Process(ObjectId id)
        {
            RevObject obj;
            try
            {
                if (id is RevObject)
                {
                    obj = (RevObject)id;
                    if (obj.has(COMPLETE))
                        return;
                    _revWalk.parseHeaders(obj);
                }
                else
                {
                    obj = _revWalk.parseAny(id);
                    if (obj.has(COMPLETE))
                        return;
                }
            }
            catch (IOException e)
            {
                throw new TransportException("Cannot Read " + id.Name, e);
            }

            switch (obj.Type)
            {
                case Constants.OBJ_BLOB:
                    ProcessBlob(obj);
                    break;

                case Constants.OBJ_TREE:
                    ProcessTree(obj);
                    break;

                case Constants.OBJ_COMMIT:
                    ProcessCommit(obj);
                    break;

                case Constants.OBJ_TAG:
                    ProcessTag(obj);
                    break;

                default:
                    throw new TransportException("Unknown object type " + id.Name + " (" + obj.Type + ")");
            }

            // If we had any prior errors fetching this object they are
            // now resolved, as the object was parsed successfully.
            //
            _fetchErrors.Remove(id.Copy());
        }