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

重庆便宜网站建设电子商务网站建设模式

重庆便宜网站建设,电子商务网站建设模式,app外包平台的服务水平,app的制作流程图前言 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/322541/

相关文章:

  • 挂马网站教程网站单页生成器
  • 做物流的网站有哪些功能php学建网站
  • 深圳外贸建站及推广iis7 发布静态网站
  • 网站 域名 授权服务器 分布式做网站哪里买空间好
  • 互联网做网站的话术手机app推荐
  • 当当网网站建设需求分析wordpress展示页面模板
  • 做网站的财务会涉及到的科目潮州营销型网站建设推广
  • 做网站所需要哪方面的知识wordpress公众号文章
  • 如何将网站变成免费wordpress定时发布
  • 装修行业 网站建设凡科网站建站后 怎么编辑自己的代码源
  • 做网站有什么作用下花园区住房和城乡建设局网站
  • 深圳互助资金盘网站开发模板网字库
  • 网站建设类有哪些岗位官方微信公众平台
  • 编程培训机构排名google搜索排名优化
  • 网站推广方法的费用深圳市建设局工程交易中心网站
  • 做网站要多少像素建外做网站的公司
  • 嘉兴网站制作公司深圳seo公司排名
  • 济南济阳哪有做网站的开互联网公司赚钱吗
  • 网站 用户粘度网站优化任务
  • 网站建设零基础教学wpautop wordpress
  • 唐山网站托管wordpress 积分
  • wordpress如何建企业站网站营销设计
  • 井冈山保育院网站建设郑州网站建设饣汉狮网络
  • 湖北阳新县建设局网站做书的封面网站
  • 如何分析一个网站开发语言织梦网站演示
  • 推荐网站建设服务商王烨捷
  • 电商网站分析免费手机网站建设
  • 触屏手机网站成都专业建站推广公司
  • 做办公用品网站资料怎么收集全网vip视频网站建设
  • 2021年十大购物网站排名网站建站建设价格