当前位置: 首页 > news >正文

外国网站在中国做推广360软件商店

外国网站在中国做推广,360软件商店,商务网页设计与制作干嘛的,h5响应式网站是什么前言 Revit 有一套完整的几何造型能力,每一个体量都是一个GenericForm,这些体量可以通过拉伸、扫掠等创建。这个例子介绍如何将他们合并成一个体量。 内容 合并体量的关键接口: // Autodesk.Revit.DB.Document public GeomCombination Com…

前言

Revit 有一套完整的几何造型能力,每一个体量都是一个GenericForm,这些体量可以通过拉伸、扫掠等创建。这个例子介绍如何将他们合并成一个体量。

内容

在这里插入图片描述
合并体量的关键接口:

// Autodesk.Revit.DB.Document
public GeomCombination CombineElements(CombinableElementArray members);

可以合并的实体,相关类的集成体系:
在这里插入图片描述
如何通过UI创建各种类型的实体,可以参考 Revit 官方文档:创建实心形状

case 1:手动选中了一些元素

核心逻辑:

  1. 遍历所有选中元素
  2. 确保元素是GenericForm,且是实体solid
  3. 确保都是 CombinableElementGenericForm集成自CombinableElement,这步有点多余)
  4. 合并符合条件的元素: doc.Document.CombineElements(solids)

核心代码:

// 遍历所有选中元素
foreach (Autodesk.Revit.DB.ElementId elementId in doc.Selection.GetElementIds())
{Autodesk.Revit.DB.Element element = doc.Document.GetElement(elementId);// 确保元素是`GenericForm`,且是实体solidGenericForm gf = element as GenericForm;if (null != gf && !gf.IsSolid)continue;// 确保都是 `CombinableElement` (`GenericForm`集成自`CombinableElement`,这步有点多余)CombinableElement ce = element as CombinableElement;if (null != ce)solids.Append(ce);
}
// 合并符合条件的元素
doc.Document.CombineElements(solids);

case 2:没有选中,则处理整个文档

核心逻辑:

  1. 过滤出所有的GenericFormGeomCombination
  2. 遍历过滤元素
  3. 确保元素是GenericForm,且是实体solid
  4. 确保都是 CombinableElementGenericForm集成自CombinableElement,这步有点多余)
  5. 对有重叠的元素进行几何合并:JoinOverlapping,判断是否重叠的逻辑在 IsOverlapped

核心代码:

// 过滤出所有的`GenericForm`和`GeomCombination`
LogicalOrFilter filter = new LogicalOrFilter(new ElementClassFilter(typeof(GenericForm)), new ElementClassFilter(typeof(GeomCombination)));
// 遍历过滤元素
FilteredElementIterator itor = (new FilteredElementCollector(document)).WherePasses(filter).GetElementIterator();
itor.Reset();
while (itor.MoveNext()){// 确保元素是`GenericForm`,且是实体solidGenericForm gf = itor.Current as GenericForm;if (null != gf && !gf.IsSolid)continue;// 确保都是 `CombinableElement` (`GenericForm`集成自`CombinableElement`,这步有点多余)CombinableElement ce = itor.Current as CombinableElement;if (null == ce)continue;m_elements.Add(ce);
}
// 对有重叠的元素进行几何合并
GeomCombination geomCombination = JoinOverlapping(m_elements, document);

JoinOverlapping 的核心逻辑在于判断是否重叠的逻辑, IsOverlapped

  1. 获取元素几何,GeometryElement get_Geometry(Options options)
  2. 获取GeometryObject所有Face
    类型是 Solid,通过接口 solid.Faces
    类型是 GeometryElement, 通过 GetEnumerator 接口递归调用
  3. 获取所有的线 GetAllCurves
    首先获取所有的 Face,通过 face.EdgeLoops 获取线的几何信息
  4. 判断线和面是否相交

部分核心代码:

// 获取元素几何
Options geOptions = Command.s_appCreation.NewGeometryOptions();
elementA.get_Geometry(geOptions);// 获取所有的 Face,需要递归调用
private static void GetAllFaces(GeometryElement geoElement, List<Face> faces){IEnumerator<GeometryObject> Objects = geoElement.GetEnumerator();while (Objects.MoveNext()){GeometryObject geObject = Objects.Current;GetAllFaces(geObject, faces);}
}
private static void GetAllFaces(Solid solid, List<Face> faces){foreach (Face face in solid.Faces){faces.Add(face);}
}
private static void GetAllFaces(GeometryObject geometry, List<Face> faces){if (geometry is GeometryElement){GetAllFaces(geometry as GeometryElement, faces);return;
}if (geometry is Solid){GetAllFaces(geometry as Solid, faces);return;}
}// 获取所有的 curve,类似,省略

其它

这个 sample 代码质量有些混乱,需自行整理分析。

http://www.yayakq.cn/news/125687/

相关文章:

  • 甘肃温室大棚建设网站开发者选项在哪
  • 乐清建设路小学校园网站网站建设 项目要求
  • 广西地矿建设集团网站缩短链接生成器
  • 销售网站怎么做wordpress 密码生成二维码
  • 新手做自己的网站网站建站流程有哪些
  • 怀远网站建设wordpress 跳转 微信支付宝
  • wordpress只能下载一个文件下载深圳seo排名哪家好
  • 网站维护 收录网站分屏布局设计
  • 代刷网站开发马鞍山市建设银行网站
  • 网站步骤村建站是什么部门
  • 织梦模板网站wordpress 分析
  • 樟木头仿做网站做网站需要多少钱 都包括什么
  • 怎么给餐饮店做网站自己做网站还是开淘宝
  • wordpress 创建网站动漫制作教学
  • 平面设计兼职网站网站开发软件成本
  • 购物网站建设网站购买域名后如何建设网站
  • 有什么网站可以做深圳初二的试卷练习网站制作北京
  • 自己怎么做微网站wordpress 微服务
  • 做游戏网站思想步骤商城网站离不开支付系统
  • 做暧暧网站在线昆明免费网站建设
  • 国外有哪些优秀的网站wordpress 媒体库 分离
  • 韩国服装网站建设怎么做推广比较成功
  • 申请域名的网站丽水网站开发公司电话
  • 建的企业网站如何在百度搜到吉林省住房和城乡建设厅网站申报
  • fomo3d 网站怎么做网站排名怎么弄
  • 网站建设 蜀美网络网站备案帐号是什么情况
  • 建一个全部由自己控制的网站需要多少钱东莞微信网站建设更好
  • 青州网站建设 258做gif有什么网站
  • 公司合法网站域名怎么注册短视频排名seo
  • 深圳市官方网站云南哪里可以制作自己的网页