/// <summary>简便快捷执行Jig拖动</summary> /// <param name="options">选项</param> /// <param name="callFun">回调函数</param> public static PromptResult StartDrag(JigPromptOptions options, Action <Result> callFun) { if (options is JigPromptPointOptions) { _PointOptions = options as JigPromptPointOptions; _acquireMod = GetPoint; } else if (options is JigPromptDistanceOptions) { _DistanceOptions = options as JigPromptDistanceOptions; _acquireMod = GetDistance; } else if (options is JigPromptAngleOptions) { _AngleOptions = options as JigPromptAngleOptions; _acquireMod = GetAngle; } else if (options is JigPromptStringOptions) { _StringOptions = options as JigPromptStringOptions; _acquireMod = GetString; } _callBack = callFun; Autodesk.AutoCAD.ApplicationServices.Application. DocumentManager.MdiActiveDocument.Editor.Drag(new JigDrag()); _callBack(new Result(_rst, null)); return(_rst); }
Stream(ArrayList data, JigPromptOptions jigPromptOpts) { data.Add(new Snoop.Data.ClassSeparator(typeof(JigPromptOptions))); data.Add(new Snoop.Data.String("Cursor", jigPromptOpts.Cursor.ToString())); data.Add(new Snoop.Data.String("User input controls", jigPromptOpts.UserInputControls.ToString())); JigPromptGeometryOptions jigPromptGeoOpts = jigPromptOpts as JigPromptGeometryOptions; if (jigPromptGeoOpts != null) { Stream(data, jigPromptGeoOpts); return; } JigPromptStringOptions jigPromptStringOpts = jigPromptOpts as JigPromptStringOptions; if (jigPromptStringOpts != null) { Stream(data, jigPromptStringOpts); return; } }
Stream(ArrayList data, JigPromptStringOptions jigPromptStringOpts) { data.Add(new Snoop.Data.ClassSeparator(typeof(JigPromptStringOptions))); data.Add(new Snoop.Data.String("Default value", jigPromptStringOpts.DefaultValue)); }
protected override SamplerStatus Sampler(JigPrompts prompts) { switch (mCurJigFactorIndex) { case 1: var prOptions1 = new JigPromptPointOptions("\nArrow Location:"); // Set properties such as UseBasePoint and BasePoint of the prompt options object if necessary here. prOptions1.UserInputControls = UserInputControls.Accept3dCoordinates | UserInputControls.GovernedByOrthoMode | UserInputControls.GovernedByUCSDetect | UserInputControls.UseBasePointElevation; var prResult1 = prompts.AcquirePoint(prOptions1); if (prResult1.Status == PromptStatus.Cancel && prResult1.Status == PromptStatus.Error) { return(SamplerStatus.Cancel); } if (prResult1.Value.Equals(mArrowLocation)) //Use better comparison method if necessary. { return(SamplerStatus.NoChange); } else { mArrowLocation = prResult1.Value; return(SamplerStatus.OK); } case 2: var xDiff = mTextLocation.X - mArrowLocation.X; var yDiff = mTextLocation.Y - mArrowLocation.Y; var angle = Math.Atan2(yDiff, xDiff) * 180.0 / Math.PI; if (angle > 45 && angle < 135 || angle < -45 && angle > -135) { Entity.TextAttachmentDirection = TextAttachmentDirection.AttachmentVertical; } else { Entity.TextAttachmentDirection = TextAttachmentDirection.AttachmentHorizontal; } Application.DocumentManager.MdiActiveDocument.Editor.WriteMessage("\n" + angle); var prOptions2 = new JigPromptPointOptions("\nLanding Location:"); // Set properties such as UseBasePoint and BasePoint of the prompt options object if necessary here. prOptions2.UseBasePoint = true; prOptions2.BasePoint = mArrowLocation; prOptions2.UserInputControls = UserInputControls.Accept3dCoordinates | UserInputControls.GovernedByOrthoMode | UserInputControls.GovernedByUCSDetect | UserInputControls.UseBasePointElevation; var prResult2 = prompts.AcquirePoint(prOptions2); if (prResult2.Status == PromptStatus.Cancel && prResult2.Status == PromptStatus.Error) { return(SamplerStatus.Cancel); } if (prResult2.Value.Equals(mTextLocation)) //Use better comparison method if necessary. { return(SamplerStatus.NoChange); } else { mTextLocation = prResult2.Value; return(SamplerStatus.OK); } case 3: var prOptions3 = new JigPromptStringOptions("\nText Content:"); // Set properties such as UseBasePoint and BasePoint of the prompt options object if necessary here. prOptions3.UserInputControls = UserInputControls.AcceptOtherInputString; var prResult3 = prompts.AcquireString(prOptions3); if (prResult3.Status == PromptStatus.Cancel && prResult3.Status == PromptStatus.Error) { return(SamplerStatus.Cancel); } if (prResult3.StringResult.Equals(mMText)) //Use better comparison method if necessary. { return(SamplerStatus.NoChange); } else { mMText = prResult3.StringResult; return(SamplerStatus.OK); } } return(SamplerStatus.OK); }