马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
本帖最后由 jwj0805 于 2017-11-7 13:49 编辑
[ - class EntityDrawJig : DrawJig
- {
- public static Point3d m_pt1;
- public Point3d insertPt;
- private List<Entity> en = new List<Entity>();
- public EntityDrawJig(List<Entity> ent,Point3d pt)
- {
- en = ent;
- m_pt1 = pt;
- }
- protected override bool WorldDraw(Autodesk.AutoCAD.GraphicsInterface.WorldDraw draw)
- {
- foreach (Entity e in en)
- {
- draw.Geometry.Draw(e);
- }
- return true;
- }
- protected override SamplerStatus Sampler(JigPrompts prompts)
- {
- Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
- Database db = HostApplicationServices.WorkingDatabase;
- Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
- Matrix3d mt = ed.CurrentUserCoordinateSystem;
- JigPromptPointOptions optJig = new JigPromptPointOptions("\n指定插入点");
- optJig.UserInputControls = UserInputControls.Accept3dCoordinates | UserInputControls.NullResponseAccepted;
- PromptPointResult resJigInsertPt = prompts.AcquirePoint(optJig);
- m_pt1 = m_pt1.TransformBy(mt);
- insertPt=resJigInsertPt.Value;
- if (resJigInsertPt.Status == PromptStatus.Cancel)
- {
- return SamplerStatus.Cancel;
- }
- if (m_pt1 != insertPt)
- {
- Vector3d vector = m_pt1.GetVectorTo(insertPt);
- Matrix3d mat = Matrix3d.Displacement(vector);
- for (int i = 0; i < en.Count; i++)
- {
- en.TransformBy(mat);
- }
- m_pt1 = insertPt;
- return SamplerStatus.OK ;
- }
- else
- {
- return SamplerStatus.NoChange;
- }
- }
- }
- [CommandMethod("sy")]
- public void 实验()
- {
- Database db = HostApplicationServices.WorkingDatabase;
- Editor ed = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;
- Point3d pt = Point3d.Origin;
- Line line1 = new Line(pt, pt.polarPoint(Math.PI / 4, 100));
- Line line2 = new Line(pt, pt.polarPoint(-Math.PI / 4, 100));
- Circle c = new Circle(pt, Vector3d.ZAxis, 50);
- List<Entity> ent = new List<Entity>();
- ent.Add(c);
- ent.Add(line1);
- ent.Add(line2);
- EntityDrawJig draJig = new EntityDrawJig(ent, pt);
- PromptResult proResult = ed.Drag(draJig);
- if (proResult.Status == PromptStatus.OK)
- {
- for (int i = 0; i < ent.Count; i++)
- {
- ObjectId objId = db.AddToModelSpace(ent);
- }
- }
- }
|