Revit SDK 介绍:NewForm 新建体量

news2024/10/6 8:25:02

前言

这个例子介绍如何新建体量。

内容

图形生成效果。
在这里插入图片描述

用 Extrusion 创建体量

// 创建一个轮廓
ReferenceArray ref_ar = new ReferenceArray();
// 创建三条直线,并放入轮廓
Autodesk.Revit.DB.XYZ ptA = new Autodesk.Revit.DB.XYZ(10, 10, 0);
Autodesk.Revit.DB.XYZ ptB = new Autodesk.Revit.DB.XYZ(90, 10, 0);
ModelCurve modelcurve = FormUtils.MakeLine(commandData.Application, ptA, ptB);
ref_ar.Append(modelcurve.GeometryCurve.Reference);
ptA = new Autodesk.Revit.DB.XYZ(90, 10, 0);
ptB = new Autodesk.Revit.DB.XYZ(10, 90, 0);
modelcurve = FormUtils.MakeLine(commandData.Application, ptA, ptB);
ref_ar.Append(modelcurve.GeometryCurve.Reference);
ptA = new Autodesk.Revit.DB.XYZ(10, 90, 0);
ptB = new Autodesk.Revit.DB.XYZ(10, 10, 0);
modelcurve = FormUtils.MakeLine(commandData.Application, ptA, ptB);
ref_ar.Append(modelcurve.GeometryCurve.Reference);
// 拉伸的方向
Autodesk.Revit.DB.XYZ direction = new Autodesk.Revit.DB.XYZ(0, 0, 50);
// 创建拉伸体
Autodesk.Revit.DB.Form form = doc.FamilyCreate.NewExtrusionForm(true, ref_ar, direction);

创建 Cap 体量

// 创建一个轮廓
ReferenceArray ref_ar = new ReferenceArray();
Autodesk.Revit.DB.XYZ ptA = new Autodesk.Revit.DB.XYZ(10, 10, 0);
Autodesk.Revit.DB.XYZ ptB = new Autodesk.Revit.DB.XYZ(100, 10, 0);
Line line = Line.CreateBound(ptA, ptB);
ModelCurve modelcurve = FormUtils.MakeLine(commandData.Application, ptA, ptB);
ref_ar.Append(modelcurve.GeometryCurve.Reference);
ptA = new Autodesk.Revit.DB.XYZ(100, 10, 0);
ptB = new Autodesk.Revit.DB.XYZ(50, 50, 0);
modelcurve = FormUtils.MakeLine(commandData.Application, ptA, ptB);
ref_ar.Append(modelcurve.GeometryCurve.Reference);
ptA = new Autodesk.Revit.DB.XYZ(50, 50, 0);
ptB = new Autodesk.Revit.DB.XYZ(10, 10, 0);
modelcurve = FormUtils.MakeLine(commandData.Application, ptA, ptB);
ref_ar.Append(modelcurve.GeometryCurve.Reference);
// 创建一个封闭面Cap体量
Autodesk.Revit.DB.Form form = doc.FamilyCreate.NewFormByCap(true, ref_ar);

创建旋转体体量

// 创建一个轮廓
ReferenceArray ref_ar = new ReferenceArray();
Autodesk.Revit.DB.XYZ norm = Autodesk.Revit.DB.XYZ.BasisZ;
Autodesk.Revit.DB.XYZ ptA = new Autodesk.Revit.DB.XYZ(0, 0, 10);
Autodesk.Revit.DB.XYZ ptB = new Autodesk.Revit.DB.XYZ(100, 0, 10);
ModelCurve modelcurve = FormUtils.MakeLine(commandData.Application, ptA, ptB, norm);
ref_ar.Append(modelcurve.GeometryCurve.Reference);
ptA = new Autodesk.Revit.DB.XYZ(100, 0, 10);
ptB = new Autodesk.Revit.DB.XYZ(100, 100, 10);
modelcurve = FormUtils.MakeLine(commandData.Application, ptA, ptB, norm);
ref_ar.Append(modelcurve.GeometryCurve.Reference);
ptA = new Autodesk.Revit.DB.XYZ(100, 100, 10);
ptB = new Autodesk.Revit.DB.XYZ(0, 0, 10);
modelcurve = FormUtils.MakeLine(commandData.Application, ptA, ptB, norm);
ref_ar.Append(modelcurve.GeometryCurve.Reference);
// 创建旋转轴
ptA = new Autodesk.Revit.DB.XYZ(-5, 0, 10);
ptB = new Autodesk.Revit.DB.XYZ(-5, 10, 10);
ModelCurve axis = FormUtils.MakeLine(commandData.Application, ptA, ptB, norm);
axis.ChangeToReferenceLine();
// 创建旋转体体量
Autodesk.Revit.DB.FormArray form = doc.FamilyCreate.NewRevolveForms(true, ref_ar, axis.GeometryCurve.Reference, 0, Math.PI / 4);

创建放样体量

// 创建4个轮廓(内容省略)
ReferenceArrayArray ref_ar_ar = new ReferenceArrayArray();
ReferenceArray ref_ar = new ReferenceArray();
ref_ar_ar.Append(ref_ar);
ref_ar = new ReferenceArray();
ref_ar_ar.Append(ref_ar);
ref_ar = new ReferenceArray();
ref_ar_ar.Append(ref_ar);
ref_ar = new ReferenceArray();
ref_ar_ar.Append(ref_ar);
// 创建扫掠体体量
Autodesk.Revit.DB.Form form = doc.FamilyCreate.NewLoftForm(true, ref_ar_ar);

创建扫掠放样体量

// 创建两个轮廓(内容省略)
ReferenceArray ref_ar = new ReferenceArray();
ReferenceArray ref_ar2 = new ReferenceArray();
ReferenceArrayArray profiles = new ReferenceArrayArray();
profiles.Append(ref_ar);
profiles.Append(ref_ar2);
// 创建用于扫掠的路径
ReferenceArray path = new ReferenceArray();
ptA = new Autodesk.Revit.DB.XYZ(10, 10, 0);
ptB = new Autodesk.Revit.DB.XYZ(10, 10, 90);
modelcurve = FormUtils.MakeLine(commandData.Application, ptA, ptB);
path.Append(modelcurve.GeometryCurve.Reference);
// 创建扫掠放样体量
Autodesk.Revit.DB.Form form = doc.FamilyCreate.NewSweptBlendForm(true, path, profiles);

注意

NewLoftForm 这个例子有bug,多加了一个空的 Profile。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/992096.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【c++每天一题】 字符串压缩

字符串压缩 时间限制:C/C 1000MS,其他语言 2000MS 内存限制:C/C 128MB,其他语言 256MB 难度:简单 分数:100 OI排行榜得分:12(0.1*分数2*难度) 描述 给定一个字符串,将连续相同的字符…

HI3559A DMEB试玩

HI3559A DMEB试玩 1、 不支持himm命令2、 默认ip设置3、 设置登录密码4、 不支持telnet登录5、 不支持ftp7、 命令行的现实格式修改9、 IIC例程不通10、 HI3559a从emmc启动,文件系统变为只读11、 驱动加载12、 官方例程中SENSOR不出图 最近需要使用3559来&#xff0…

程序员常用的27款开发工具以及年度各方向的工具

一、Java 线上诊断工具 Arthas 工具的使用场景: 1、这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 2、我改的代码为什么没有执行到?难道是我没 commit?分支搞错了? 3、遇到问题无法在线…

Redis I/O多路复用机制

1. 多路复用要解决什么问题 并发多客户端连接场景,在多路复用之前最简单和典型的方案:同步阻塞网络IO模型。 这种模式的特点就是用一个进程来处理一个网络连接(一个用户请求),比如一段典型的示例代码如下。 直接调用 recv 函数从一个 socket 上读取数…

vue3+ts 分享海报

安装依赖1. npm install html2canvas --save<div class"flex-box"><div><div v-for"(item,index ) in from.list" :key"index" click"actvieFuntion(index)"><div>{{item}}</div><div :class"…

算法训练营day46|动态规划 part08:完全背包 (LeetCode 139. 单词拆分)

139. 单词拆分 (求排列方法) 题目链接&#x1f525;&#x1f525; 给定一个非空字符串 s 和一个包含非空单词的列表 wordDict&#xff0c;判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 说明&#xff1a; 拆分时可以重复使用字典中的单词。 你可以假设字典中没…

AIGC之文本内容生成概述(下)—— GPT

GPT&#xff08;GenerativePre-TrainedTransformer&#xff09; 提到GPT模型&#xff0c;就不得不说众所周知的ChatGPT模型&#xff0c;ChatGPT的发展可以追溯到2018年&#xff0c;当时OpenAI发布了第一代GPT模型&#xff0c;即GPT-1&#xff0c;该模型采用Transformer结构和自…

Tableau自学四部曲_Part2:数据连接可视化原理

文章目录 一、数据连接1. 连接类型2. 连接方式3. 提取方式4. 连接筛选5. 保存类型6. 数据处理7. 理解本文的数据 二、可视化原理1. 做个小实验2. 数据是如何变成图表的&#xff1f;&#xff08;1&#xff09;数据变成图表的过程&#xff0c;就是用数据映射到视觉图形的过程&…

180B参数的Falcon登顶Hugging Face,最好开源大模型使用体验

文章目录 使用地址使用体验 使用地址 https://huggingface.co/spaces/tiiuae/falcon-180b-demo 使用体验 相比Falcon-7b&#xff0c;Falcon-180b拥有1800亿的参数量&#xff0c;在智能问答领域做到了Top 1。在回答问题的深度和广度上都明显优于只有70亿参数量的Falcon-7b&…

容器编排学习(二)镜像制作和私有仓库介绍

一 Dockerfile 1 概述 commit的局限 很容易制作简单的镜像&#xff0c;但碰到复杂的情况就十分不方便例如碰到下面的情况需要设置默认的启动命令需要设置环境变量需要指定镜像开放某些特定的端口 Dockerfile就是解决这些问题的方法 Dockerfile是一种更强大的镜像制作方式…

蓝牙方案|伦茨科技最新ESL蓝牙电子价签方案

随着电子货架标签市场无线标准的发布&#xff0c;蓝牙技术将协助零售业进行下一阶段的数字化转型&#xff0c;为商店和购物者提供更好的消费体验。电子货架标签提供了精准的自动定价&#xff0c;并增加了对实时促销和产品信息的访问&#xff0c;提供更令人满意且整合的全渠道体…

如何用Java编写代码来等待一个线程join()??

笔者在前面几篇文章中详细的讲解了&#xff1a;线程and进程的区别及其各种对比&#xff0c;如何中断一个线程等文章&#xff0c;接下来本篇文章主要讲解&#xff1a;用Java编写代码来等待一个线程join()&#xff1f;&#xff1f; 线程之间是并发执行的&#xff0c;操作系统对于…

清华开源LLM中英双语对话语言模型ChatGLM2,效果能赶超ChatGPT?

ChatGLM-6B 是一个开源的、支持中英双语的对话语言模型,基于 General Language Model (GLM) 架构,具有 62 亿参数.ChatGLM2-6B 是开源中英双语对话模型 ChatGLM-6B 的第二代版本,其第二代继承了第一代的优秀特点,并在第一代的基础上,更新了更多的新特性。 更强大的性能: C…

C语言——程序环境和预处理(再也不用担心会忘记预处理的知识)

了解程序环境和预处理 前言&#xff1a;一、程序环境二、编译链接2.1 翻译环境2.2 编译的几个阶段2.3 运行环境 三、预处理3.1 预定义符号3.2. #define的使用3.2.1 #define 定义标识符3.2.2 #define 定义宏3.2.3 #define 替换规则3.2.4 #和##的用途3.2.5 带副作用的宏参数3.2.6…

数据结构大作业 成绩分析c语言程序设计

界面加载 界面展示 成绩输入 求平均成绩 升序排列 降序排列 名字排序 按名字搜索 按ID搜索 每门课成绩分析 成绩单展示 -

1.6 二次曲面

二次曲面 文章目录 二次曲面知识点1 二次曲面的概念知识点2 常见的二次曲面知识点3 空间曲面小结 知识点1 二次曲面的概念 定义1 三元二次方程&#xff08;二次项系数不全为0&#xff09; A x 2 B y 2 C z 2 D x y E y z F z x G x H y I z J 0 Ax^2By^2Cz^2DxyEyzF…

Windows 12 网页版,开源了!

公众号关注 “GitHubDaily” 设为 “星标”&#xff0c;每天带你逛 GitHub&#xff01; 自 1985 年微软发布第一代 Windows 系统后&#xff0c;其市场占比一直逐步攀升。经过数十年的迭代发展&#xff0c;目前 Windows 已成为全球桌面操作系统的主导者。 今年整个科技行业开始拥…

Canal使用

什么是Canal Canal 主要用途是基于 MySQL 数据库增量日志解析&#xff0c;提供增量数据订阅和消费。 早期阿里巴巴因为杭州和美国双机房部署&#xff0c;存在跨机房同步的业务需求&#xff0c;实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始&#xff0c;业务逐…

杭州快递物流展-2024长三角快递物流供应链与技术装备展览会(杭州)

2024快递物流创新高质量发展论坛暨 2024长三角快递物流供应链与技术装备展览会(杭州) 时间&#xff1a;2024年4月12-14 日 地点&#xff1a;杭州国际博览中心 ESYE长三角快递物流展是亚洲范围内超大规模的快递物流业展示平台&#xff0c;由于展会的需求 及扩大市场的影响力…

【Tools】如何在VSCode上使用C++ 保姆教程

VSCode&#xff08;Visual Studio Code&#xff09;是一款轻量级的代码编辑器&#xff0c;拥有丰富的插件生态系统&#xff0c;支持多种语言开发。在本文中&#xff0c;将介绍如何在 VSCode 中配置 C 环境&#xff0c;以便于开发和调试 C 代码。 VSCode 具有以下优势&#xff1…