乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 54|回复: 3

SurfaceOperation收集和排序SurfaceOperationObject

[复制链接]

30

主题

125

帖子

30

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
218
发表于 2016-3-6 04:40:42 | 显示全部楼层 |阅读模式
你好
我从图形中的曲面读取了SurfaceOperationCollection。此曲面具有不同的类型(或包括曲面操作)。在我处理曲面之前(例如,删除或创建新的曲面操作,如特征线、等高线或边界…),所有这些曲面操作都在集合中进行了正确排序。编辑后,我希望在曲面中进行与之前相同的排序
在表面操作中,它有不同的方法,如MoveUp()或MoveDown()。有人在林克郡的Sytax和他们一起工作过。我非常感谢能得到一些建议

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

30

主题

125

帖子

30

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
218
发表于 2016-3-6 04:50:23 | 显示全部楼层
也许更好的描述:
我必须删除Surface中的边界,而不是重新创建它们并设置与以前相同的名称。重新创建的边界的位置在SurfacoperationCollection的末尾。但它必须位于位置2(例如)
  1.         public static SurfaceOperationCollection ReadSurfaceOperations(TinSurface tinsurf)
  2.         {
  3.             Document acadDoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
  4.             using (Transaction tr = acadDoc.TransactionManager.StartTransaction())
  5.             {
  6.                 SurfaceOperationCollection SuOpColl = tinsurf.Operations;
  7.                 tr.Commit();
  8.                 return SuOpColl;
  9.             }
  10.         }
  11.         public static void SortSurfaceOperations(SurfaceOperationCollection before, SurfaceOperationCollection after)
  12.         {
  13.             Document acadDoc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
  14.             using (Transaction tr = acadDoc.TransactionManager.StartTransaction())
  15.             {
  16.                 var m_Bef = from x in before.GetType().FullName
  17.                             //where x.GetType().FullName == "Autodesk.Civil.DatabaseServices.SurfaceOperationAddBoundary"
  18.                             select x;
  19.                 var m_Aft = from x in before.GetType().FullName
  20.                             //where x.GetType().FullName == "Autodesk.Civil.DatabaseServices.SurfaceOperationAddBoundary"
  21.                             select x;
  22.                 foreach(SurfaceOperation x in m_Bef)
  23.                 {
  24.                     foreach(SurfaceOperation y in m_Aft)
  25.                     {
  26.                         if(x != y)
  27.                         {
  28.                             y.MoveUp();
  29.                         }
  30.                     }
  31.                 }
  32.                 tr.Commit();
  33.             }
  34.         }

回复

使用道具 举报

71

主题

928

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1230
发表于 2016-3-6 13:38:37 | 显示全部楼层
Dirk,您不能将Linq与SurfaceAction ationCollection一起使用,因为它没有GetEnumator()方法。就像您不能将foreach()与此集合一起使用一样,因此,您必须使用for()循环。以下代码没有经过测试,但应该可以工作(或者无论如何都接近工作)。公共静态空SortSurfaceAction(之前是SurfaceAction ationCollection,之后是SurfaceAction ationCollection)。
{。
文档acadDoc=Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;。
使用(事务tr=acadDoc.TransactionManager.StartTransaction())。
{。
bool完成=false;。
对于(int i=0; i。
{。
var x=在[i]之前;。
if(x.GetType () == 类型)。
{。
for(int j=0; j。
{。
var y=在[j]之后;。
if(y.GetType () == 类型)。
{。
同时(i。
{。
y.MoveUp();。
j--;。
}。
完成=真;。
休息;。
}。
}。
}。
如果(完成)。
休息;。
}。
tr.Commit();。
}。
}。

回复

使用道具 举报

30

主题

125

帖子

30

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
218
发表于 2016-3-7 10:27:18 | 显示全部楼层
再次感谢杰夫!
你是我的“患难之交”
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-2-4 18:51 , Processed in 0.147590 second(s), 60 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表