<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Jigging between two points in .NET Forum</title>
    <link>https://forums.autodesk.com/t5/net-forum/jigging-between-two-points/m-p/8401286#M24301</link>
    <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks for the solution, It is very useful. But I am implementing using Drawjig instead of entityJig. Is there any equivalent method for Update in Drawjig as update method is not available in Drawjig class.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance.&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/109424"&gt;@_gile&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here's a simple example (just replace "blockName" with the block name).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;        [CommandMethod("TEST")]
        public static void Test()
        {
            var doc = Application.DocumentManager.MdiActiveDocument;
            var db = doc.Database;
            var ed = doc.Editor;
            using (var tr = db.TransactionManager.StartTransaction())
            {
                var bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead);
                if (!bt.Has("blockName"))
                    return;
                using (var br = new BlockReference(Point3d.Origin, bt["blockName"]))
                {
                    br.TransformBy(ed.CurrentUserCoordinateSystem);
                    var jig = new BlockJig(br, Point3d.Origin, new Point3d(10.0, 0.0, 0.0));
                    var pr = ed.Drag(jig);
                    if (pr.Status == PromptStatus.OK)
                    {
                        var curSpace = (BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite);
                        curSpace.AppendEntity(br);
                        tr.AddNewlyCreatedDBObject(br, true);
                    }
                        }
                tr.Commit();
            }
        }

        class BlockJig : EntityJig
        {
            BlockReference br;
            LineSegment3d line;
            Point3d dragPt;

            public BlockJig(BlockReference br, Point3d pt1, Point3d pt2) : base(br)
            {
                this.br = br;
                line = new LineSegment3d(pt1, pt2);
            }

            protected override SamplerStatus Sampler(JigPrompts prompts)
            {
                var options = new JigPromptPointOptions("\nInsertion point: ");
                options.UserInputControls = 
                    UserInputControls.Accept3dCoordinates | 
                    UserInputControls.UseBasePointElevation;
                var result = prompts.AcquirePoint(options);
                if (result.Value.IsEqualTo(dragPt))
                    return SamplerStatus.NoChange;
                dragPt = result.Value;
                return SamplerStatus.OK;
            }

            protected override bool Update()
            {
                br.Position = line.GetClosestPointTo(dragPt).Point;
                return true;
            }
        }&lt;/PRE&gt;&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/109424"&gt;@_gile&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here's a simple example (just replace "blockName" with the block name).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;        [CommandMethod("TEST")]
        public static void Test()
        {
            var doc = Application.DocumentManager.MdiActiveDocument;
            var db = doc.Database;
            var ed = doc.Editor;
            using (var tr = db.TransactionManager.StartTransaction())
            {
                var bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead);
                if (!bt.Has("blockName"))
                    return;
                using (var br = new BlockReference(Point3d.Origin, bt["blockName"]))
                {
                    br.TransformBy(ed.CurrentUserCoordinateSystem);
                    var jig = new BlockJig(br, Point3d.Origin, new Point3d(10.0, 0.0, 0.0));
                    var pr = ed.Drag(jig);
                    if (pr.Status == PromptStatus.OK)
                    {
                        var curSpace = (BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite);
                        curSpace.AppendEntity(br);
                        tr.AddNewlyCreatedDBObject(br, true);
                    }
                        }
                tr.Commit();
            }
        }

        class BlockJig : EntityJig
        {
            BlockReference br;
            LineSegment3d line;
            Point3d dragPt;

            public BlockJig(BlockReference br, Point3d pt1, Point3d pt2) : base(br)
            {
                this.br = br;
                line = new LineSegment3d(pt1, pt2);
            }

            protected override SamplerStatus Sampler(JigPrompts prompts)
            {
                var options = new JigPromptPointOptions("\nInsertion point: ");
                options.UserInputControls = 
                    UserInputControls.Accept3dCoordinates | 
                    UserInputControls.UseBasePointElevation;
                var result = prompts.AcquirePoint(options);
                if (result.Value.IsEqualTo(dragPt))
                    return SamplerStatus.NoChange;
                dragPt = result.Value;
                return SamplerStatus.OK;
            }

            protected override bool Update()
            {
                br.Position = line.GetClosestPointTo(dragPt).Point;
                return true;
            }
        }&lt;/PRE&gt;&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Wed, 14 Nov 2018 13:39:39 GMT</pubDate>
    <dc:creator>Anonymous</dc:creator>
    <dc:date>2018-11-14T13:39:39Z</dc:date>
    <item>
      <title>Jigging between two points</title>
      <link>https://forums.autodesk.com/t5/net-forum/jigging-between-two-points/m-p/8400766#M24299</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;My requirement is like I have to get a block on cursor and move it only along x-axis between two points. As of now I am able to drag anywhere, instead of x-axis and between two points restriction. could you please give some reference on this.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance.&lt;/P&gt;&lt;P&gt;Tejaswini&lt;/P&gt;</description>
      <pubDate>Wed, 14 Nov 2018 09:04:26 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/net-forum/jigging-between-two-points/m-p/8400766#M24299</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2018-11-14T09:04:26Z</dc:date>
    </item>
    <item>
      <title>Re: Jigging between two points</title>
      <link>https://forums.autodesk.com/t5/net-forum/jigging-between-two-points/m-p/8401058#M24300</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here's a simple example (just replace "blockName" with the block name).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;        [CommandMethod("TEST")]
        public static void Test()
        {
            var doc = Application.DocumentManager.MdiActiveDocument;
            var db = doc.Database;
            var ed = doc.Editor;
            using (var tr = db.TransactionManager.StartTransaction())
            {
                var bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead);
                if (!bt.Has("blockName"))
                    return;
                using (var br = new BlockReference(Point3d.Origin, bt["blockName"]))
                {
                    br.TransformBy(ed.CurrentUserCoordinateSystem);
                    var jig = new BlockJig(br, Point3d.Origin, new Point3d(10.0, 0.0, 0.0));
                    var pr = ed.Drag(jig);
                    if (pr.Status == PromptStatus.OK)
                    {
                        var curSpace = (BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite);
                        curSpace.AppendEntity(br);
                        tr.AddNewlyCreatedDBObject(br, true);
                    }
                        }
                tr.Commit();
            }
        }

        class BlockJig : EntityJig
        {
            BlockReference br;
            LineSegment3d line;
            Point3d dragPt;

            public BlockJig(BlockReference br, Point3d pt1, Point3d pt2) : base(br)
            {
                this.br = br;
                line = new LineSegment3d(pt1, pt2);
            }

            protected override SamplerStatus Sampler(JigPrompts prompts)
            {
                var options = new JigPromptPointOptions("\nInsertion point: ");
                options.UserInputControls = 
                    UserInputControls.Accept3dCoordinates | 
                    UserInputControls.UseBasePointElevation;
                var result = prompts.AcquirePoint(options);
                if (result.Value.IsEqualTo(dragPt))
                    return SamplerStatus.NoChange;
                dragPt = result.Value;
                return SamplerStatus.OK;
            }

            protected override bool Update()
            {
                br.Position = line.GetClosestPointTo(dragPt).Point;
                return true;
            }
        }&lt;/PRE&gt;</description>
      <pubDate>Wed, 14 Nov 2018 11:52:25 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/net-forum/jigging-between-two-points/m-p/8401058#M24300</guid>
      <dc:creator>_gile</dc:creator>
      <dc:date>2018-11-14T11:52:25Z</dc:date>
    </item>
    <item>
      <title>Re: Jigging between two points</title>
      <link>https://forums.autodesk.com/t5/net-forum/jigging-between-two-points/m-p/8401286#M24301</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks for the solution, It is very useful. But I am implementing using Drawjig instead of entityJig. Is there any equivalent method for Update in Drawjig as update method is not available in Drawjig class.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance.&lt;/P&gt;&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/109424"&gt;@_gile&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here's a simple example (just replace "blockName" with the block name).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;        [CommandMethod("TEST")]
        public static void Test()
        {
            var doc = Application.DocumentManager.MdiActiveDocument;
            var db = doc.Database;
            var ed = doc.Editor;
            using (var tr = db.TransactionManager.StartTransaction())
            {
                var bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead);
                if (!bt.Has("blockName"))
                    return;
                using (var br = new BlockReference(Point3d.Origin, bt["blockName"]))
                {
                    br.TransformBy(ed.CurrentUserCoordinateSystem);
                    var jig = new BlockJig(br, Point3d.Origin, new Point3d(10.0, 0.0, 0.0));
                    var pr = ed.Drag(jig);
                    if (pr.Status == PromptStatus.OK)
                    {
                        var curSpace = (BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite);
                        curSpace.AppendEntity(br);
                        tr.AddNewlyCreatedDBObject(br, true);
                    }
                        }
                tr.Commit();
            }
        }

        class BlockJig : EntityJig
        {
            BlockReference br;
            LineSegment3d line;
            Point3d dragPt;

            public BlockJig(BlockReference br, Point3d pt1, Point3d pt2) : base(br)
            {
                this.br = br;
                line = new LineSegment3d(pt1, pt2);
            }

            protected override SamplerStatus Sampler(JigPrompts prompts)
            {
                var options = new JigPromptPointOptions("\nInsertion point: ");
                options.UserInputControls = 
                    UserInputControls.Accept3dCoordinates | 
                    UserInputControls.UseBasePointElevation;
                var result = prompts.AcquirePoint(options);
                if (result.Value.IsEqualTo(dragPt))
                    return SamplerStatus.NoChange;
                dragPt = result.Value;
                return SamplerStatus.OK;
            }

            protected override bool Update()
            {
                br.Position = line.GetClosestPointTo(dragPt).Point;
                return true;
            }
        }&lt;/PRE&gt;&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;&lt;BLOCKQUOTE&gt;&lt;HR /&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/109424"&gt;@_gile&lt;/a&gt;&amp;nbsp;wrote:&lt;BR /&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here's a simple example (just replace "blockName" with the block name).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;        [CommandMethod("TEST")]
        public static void Test()
        {
            var doc = Application.DocumentManager.MdiActiveDocument;
            var db = doc.Database;
            var ed = doc.Editor;
            using (var tr = db.TransactionManager.StartTransaction())
            {
                var bt = (BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead);
                if (!bt.Has("blockName"))
                    return;
                using (var br = new BlockReference(Point3d.Origin, bt["blockName"]))
                {
                    br.TransformBy(ed.CurrentUserCoordinateSystem);
                    var jig = new BlockJig(br, Point3d.Origin, new Point3d(10.0, 0.0, 0.0));
                    var pr = ed.Drag(jig);
                    if (pr.Status == PromptStatus.OK)
                    {
                        var curSpace = (BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForWrite);
                        curSpace.AppendEntity(br);
                        tr.AddNewlyCreatedDBObject(br, true);
                    }
                        }
                tr.Commit();
            }
        }

        class BlockJig : EntityJig
        {
            BlockReference br;
            LineSegment3d line;
            Point3d dragPt;

            public BlockJig(BlockReference br, Point3d pt1, Point3d pt2) : base(br)
            {
                this.br = br;
                line = new LineSegment3d(pt1, pt2);
            }

            protected override SamplerStatus Sampler(JigPrompts prompts)
            {
                var options = new JigPromptPointOptions("\nInsertion point: ");
                options.UserInputControls = 
                    UserInputControls.Accept3dCoordinates | 
                    UserInputControls.UseBasePointElevation;
                var result = prompts.AcquirePoint(options);
                if (result.Value.IsEqualTo(dragPt))
                    return SamplerStatus.NoChange;
                dragPt = result.Value;
                return SamplerStatus.OK;
            }

            protected override bool Update()
            {
                br.Position = line.GetClosestPointTo(dragPt).Point;
                return true;
            }
        }&lt;/PRE&gt;&lt;HR /&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 14 Nov 2018 13:39:39 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/net-forum/jigging-between-two-points/m-p/8401286#M24301</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2018-11-14T13:39:39Z</dc:date>
    </item>
  </channel>
</rss>

