dragonzht 2020-06-17
如题
public class 测试选择集的点选位置和点选方式
{
//对应lisp的ssnamex,获取选择的方式和选择的角点
[CommandMethod("tt_getssgetpick", CommandFlags.Modal | CommandFlags.UsePickSet | CommandFlags.Redraw)]
public void tt_getssgetpick()
{
Database db = HostApplicationServices.WorkingDatabase;//当前的数据库
Editor ed = Acap.DocumentManager.MdiActiveDocument.Editor;
ed.WriteMessage(Environment.NewLine + "****惊惊连盒-测试选择集的点选位置和点选方式");
var tkids = new List<ObjectId>();
//创建选择集过滤器,只选择块对象
TypedValue[] filList = new TypedValue[]
{
// new TypedValue((int)DxfCode.Start, "INSERT")
};
SelectionFilter filter = new SelectionFilter(filList);
//定义选择集选项
var pso = new PromptSelectionOptions
{
RejectObjectsOnLockedLayers = true, //不选择锁定图层对象
AllowDuplicates = true, //不允许重复选择
};
var ssPsr = ed.GetSelection(pso, filter);//手选
if (ssPsr.Status != PromptStatus.OK)
{
return;
}
//获取所有的id
//foreach (var item in ssPsr.Value.GetObjectIds())
//{
// Debug.WriteLine(item);//所有的角点信息
//}
var va = ssPsr.Value;
foreach (var vaItem in va)
{
if (vaItem is CrossingOrWindowSelectedObject cows)//框选方式
{
foreach (var ppd in cows.GetPickPoints())
{
Debug.WriteLine(ppd.PointOnLine);//ppd内还有内容
}
}
else if (vaItem is PickPointSelectedObject pps)//点选方式
{
Debug.WriteLine(pps.PickPoint);//pps内还有内容
}
}
}
}