/// <summary>AutoCAD上で図形を選択させ、その図形のObjectIdを返す。(Prompt付き)</summary> public static List <int> SelectObjects(string prompt) { //AutoCADを最前面に持ってくる WindowController2.BringAutoCadToTop(); //Selectの最後(LAST)で選択できる図形をなくす。 AutoCad.Command.SendLineEsc("point 0.003,0.003"); AutoCad.Command.SendLineEsc("zoom 0.001,0.001 0.005,0.005"); AutoCad.Command.SendLineEsc("erase last "); AutoCad.Command.SendLineEsc("zoom p"); //ユーザーに選択を促す AutoCad.Command.SendLineEsc("select"); if (!string.IsNullOrEmpty(prompt)) { AutoCad.Prompt(prompt); } AutoCad.Status.WaitFinish(); if (AutoCad.Status.IsCanceled()) { return(new List <int>()); } using (var reactor = new AutoCad.Reactor()) { //移動変位0で移動(リアクタに記録する) AutoCad.Command.SendLineEsc("move p 0,0,0 0,0,0"); return(reactor.GetReactor()); } }
public static List <int> GetLastObjectIds() { AutoCad.Command.SendLine("select l "); //これで他の図形が選ばれてしまうことがある using (var reactor = new AutoCad.Reactor()) { //移動変位0で移動(リアクタに記録する) AutoCad.Command.SendLineEsc("move p 0,0,0 0,0,0"); return(reactor.GetReactor()); } }
/// <summary>選択している図形のObjectIdを取得する</summary> public static List <int> GetSelectedObjectIds() { using (var reactor = new AutoCad.Reactor()) { //移動変位0で移動(リアクタに記録する) AutoCad.Command.SendLine("move"); if (!AutoCad.Status.ContainTextInLastHistory("認識された数:", "found")) { AutoCad.Command.Prepare(); return(new List <int>()); } AutoCad.Command.SendLine("0,0,0 0,0,0"); return(reactor.GetReactor()); } }