马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
[ 本帖最后由 csharp 于 2014-4-28 21:55 编辑 ]\n\n[ 本帖最后由 csharp 于 2014-4-28 21:48 编辑 ]\n\n- [LispFunction("mGetproperty")]
- public Object mGetproperty(ResultBuffer rb)
- {
- Object ret = null;
- TypedValue[] values = rb.AsArray();
- Document document = Application.DocumentManager.MdiActiveDocument;
- Transaction transaction = document.TransactionManager.StartTransaction();
- using (transaction)
- {
- try
- {
- Entity entId = (Entity) transaction.GetObject((ObjectId )values [0].Value , OpenMode.ForRead);
- String prop = values[1].Value.ToString();
- object val =entId.GetType().InvokeMember(prop, BindingFlags.GetProperty, null, entId, null);
- transaction.Commit();
- ret = val;
- }
- catch (Exception)
- {
-
- throw;
- }
- }
- return ret;
- }
2012+ Autolisp增加了 getpropertyvalue / setpropertyvalue / dumpallproperties 三个函数,对Lisp的面向对象操作提供了很大便利,但是不足也很明显,比如对 Line 提取起点, getpropertyvalue 要提前三个数再list , 分别是 StartPoint/X StartPoint/Y StartPoint/Z ,这样就没有什么使用价值了,上面的函数只是一个验证,没有容错处理
命令: NETLOAD
命令: (mgetproperty (entlast) "StartPoint")
(2672.41 978.817 0.0) |