马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
新建一个类用来记录 Entlast,最大记录5个 Entlast
- public class MySSet
- {
- private static ObjectId [] myLastEnt = new ObjectId[5];
- //构造函数
- public static ObjectId[] MyLastEnt(int i ,ObjectId id)
- {
- myLastEnt[i] = id;
- return myLastEnt;
- }
- public static void Put(int i, ObjectId id)
- {
- myLastEnt[i] = id;
- }
- public static ObjectId MyGetLastId(int i)
- {
- return myLastEnt[i];
- }
- }
定义一个 Lisp 函数标记 Entlast
- [LispFunction("SetMark")]
- public static Object SetMark(ResultBuffer rb)
- {
- if (rb != null)
- {
- TypedValue[] values = rb.AsArray();
- Boolean ret = true;
- if (values.Count() == 1 && values[0].TypeCode == (int) LispDataType.Int16)
- {
- int i = Convert.ToInt16(values[0].Value);
- if (i < 0 | i > 4)
- {
- i = 0;
- }
- ObjectId id = Utils.EntLast();
- if (id == ObjectId.Null)
- {
- id = Utils.EntFirst();
- }
- MySSet.Put(i, id);
- return ret;
- }
- else
- {
- return null;
- }
-
- }
- else
- {
- int i = 0;
- Boolean ret = true;
- MySSet.Put(i, Utils.EntLast());
- return ret;
- }
- }
再定义一个获取对应选择集的函数
- [LispFunction("getss")]
- public static Object MyGetSS(ResultBuffer rb)
- {
- int j;
- if (rb == null)
- {
- j = 0;
- }
- else
- {
- TypedValue[] values = rb.AsArray();
- if (values.Count() == 1 && values[0].TypeCode == (int) LispDataType.Int16)
- {
- int i = Convert.ToInt16(values[0].Value);
- if (i < 0 | i > 4)
- {
- j = 0;
- }
- else
- {
- j = i;
- }
- }
- else
- {
- return null;
- }
- }
- ObjectId lastEnt = MySSet.MyGetLastId(j);
- ObjectId[] ids = GetNextentIds(lastEnt);
- if (ids.Count() > 0)
- {
- SelectionSet ss = SelectionSet.FromObjectIds(ids);
- return ss;
- }
- else
- {
- return null;
- }
- }
下面是一个获取函数
- public static ObjectId[] GetNextentIds(ObjectId id)
- {
- ObjectIdCollection idColl = new ObjectIdCollection();
- if (id != ObjectId.Null)
- {
- ObjectId nextent = Utils.EntNext(id);
- idColl.Add(nextent);
- while (nextent != ObjectId.Null)
- {
- idColl.Add(nextent);
- nextent = Utils.EntNext(nextent);
- }
- }
- if (idColl.Count > 0)
- {
- ObjectId[] ids = new ObjectId[idColl.Count];
- for (int i = 0; i < idColl.Count; i++)
- {
- ids[i] = idColl[i];
- }
- return ids;
- }
- else
- {
- return null;
- }
- }
使用方法
(setmark) (getss) 默认保存到 0 标记
(setmark 1) (getss 1) 获取第一次标记,后面的数字最大为 4 |