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

Revit SDK 介绍:NewForm 新建体量

前言

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

内容

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

用 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。

相关文章:

Revit SDK 介绍:NewForm 新建体量

前言 这个例子介绍如何新建体量。 内容 图形生成效果。 用 Extrusion 创建体量 // 创建一个轮廓 ReferenceArray ref_ar new ReferenceArray(); // 创建三条直线,并放入轮廓 Autodesk.Revit.DB.XYZ ptA new Autodesk.Revit.DB.XYZ(10, 10, 0); Autodesk.Rev…...

Ubuntu离线或在线安装Python解释器

这里以安装Python3.5.7为例。 首先进入官网,下载Python-3.5.7.tgz,或者使用以下命令下载(需要联网): wget https://www.python.org/ftp/python/3.5.7/Python-3.5.7.tgz下载完成后,使用以下命令进行解压缩…...

微信小程序隐私协议相关接口实际使用方式

<view wx:if"{{showPrivacy}}" class"privacy"><view class"popup"><view>隐私弹窗内容....</view><view bindtap"openPrivacyAgreement">点击查看隐私协议</view><button id"disagreeBt…...

MySQL--MySQL表的增删改查(进阶)

check 聚合查找 count sum average max min 我们这里先构造出多张表 查询lisi同学的成绩 来自student和来自score c 增加名字这一条件 查询所有同学的总成绩以及个人信息 来自score和来自student 查询所有同学的各科成绩以及个人信息 来自student&#xff0c;course和…...

Golang 中的静态类型和动态类型

定义说明 静态类型&#xff08;static type&#xff09;&#xff1a;在编码时就能确定的类型&#xff0c;通过变量定义可以确定的类型&#xff1b;动态类型&#xff08;concrete type&#xff09;&#xff1a;在运行时才能确定具体的数据类型&#xff1b; 动态静态类型如何理…...

docker的数据卷、docker数据持久化

目录 前言docker数据持久化的2种方式数据卷 bind mount &#xff0c;即-v参数匿名数据卷 docker manager volume-v参数和匿名卷的区别docker volume 命令的使用数据卷容器孤儿volume总结 前言 环境&#xff1a;centos7.9 docker version 20.10.14 本篇我们来介绍docker的数据卷…...

阅读源码工具Sourcetrail

收费工具Source Insight、Understand Sourcetrail开源工具 一、下载安装 接下来就是download&#xff0c;在GitHub的release页面选择自己系统对应的发布版本下载安装&#xff1a; 安装好后&#xff0c;运行程序&#xff0c;会出现这样的界面&#xff1a; 二、应用 选择“New…...

KMP 算法详解

KMP算法详解 1 KMP算法解决的问题 2 前缀问题 3 KMP 算法 1 KMP算法解决的问题 字符串str1和str2&#xff0c;str1是否包含str2&#xff0c;如果包含返回str2在str1中开始的位置。并做到时间复杂度为 O ( n ) O(n) O(n) 2 前缀问题 求一个字符串中每个字符前缀和后缀相…...

[matconvnet]matconvnet-1.0-beta-25在cuda11.1以上编译问题总结

首先可以肯定是matconvnet-1.0-beta-25不支持cuda11.1及其以上版本&#xff0c;因为cudnn版本问题导致源码api接口不一样&#xff0c;会下面类似报错 E:\Matlab\R2020a\matconvnet-1.0-beta25\matlab\src\bits\datacu.hpp(89): error: identifier "cudnnConvolutionFwdPr…...

自动化驱动程序管理

在部署操作系统时&#xff0c;每次都从下载和分发所需的驱动程序中实现真正的独立性可能是一场艰苦的战斗。特别是具有硬件多样化的环境&#xff0c;并且需要支持新的硬件类型时。借助 OS Deployer&#xff0c;可以对所有端点使用一个映像&#xff0c;无论品牌和型号如何&#…...

智能合约编写高级篇(二)区块哈希介绍

本文档从区块哈希基本概念出发&#xff0c;详细介绍了中移链的区块哈希交易接口和应用方向。适用于EOS区块链智能合约高级开发人员&#xff0c;熟悉如何获取当前发生交易所在的区块号和区块哈希前缀&#xff0c;并通过Tapos机制验证交易的有效性。 01 概述 &#xff08;一&…...

二进制链表转整数

给你一个单链表的引用结点 head。链表中每个结点的值不是 0 就是 1。已知此链表是一个整数数字的二进制表示形式。 请你返回该链表所表示数字的 十进制值 。 示例 1&#xff1a; 输入&#xff1a;head [1,0,1] 输出&#xff1a;5 解释&#xff1a;二进制数 (101) 转化为十进…...

Python爬虫进阶:使用Scrapy库进行数据提取和处理

在我们的初级教程中&#xff0c;我们介绍了如何使用Scrapy创建和运行一个简单的爬虫。在这篇文章中&#xff0c;我们将深入了解Scrapy的强大功能&#xff0c;学习如何使用Scrapy提取和处理数据。 一、数据提取&#xff1a;Selectors和Item 在Scrapy中&#xff0c;提取数据主要…...

五)Stable Diffussion使用教程:文生图之高清修复

上一篇我们说到图生图,这一篇来说说高清修复。 上一篇我们通过一个例子实现了图生图的功能,使用一张图片生成了另一种风格的图片。 然而,我们生成的图片质量不尽如人意。 虽然我们之前也提到设置分辨率、精炼提示词去提升画面质量等等,但是实际用下来发现,分辨率拉得太…...

SQL SERVER 如何实现UNDO REDO 和PostgreSQL 有近亲关系吗

开头还是介绍一下群&#xff0c;如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,SQL Server&#xff0c;Redis &#xff0c;Oracle ,Oceanbase 等有问题&#xff0c;有需求都可以加群群内有各大数据库行业大咖&#xff0c;CTO&#xff0c;可以解决你的问题。加群请加微信号 l…...

SpringBoot原理-自动配置-原理分析-源码跟踪

自动配置原理 SpringBootApplication 该注解标识在SpringBoot项目的启动类上&#xff0c;是SpringBoot中最为重要的注解&#xff0c;该注解由三个部分组成。 SpringBootConfiguration&#xff1a;该注解与Configuration注解作用一样&#xff0c;用来声明当前类为一个配置类Comp…...

安全基础 --- 原型链污染

原型链 大部分面向对象的编程语言&#xff0c;都是通过“类”&#xff08;class&#xff09;实现对象的继承。传统上&#xff0c;JavaScript 语言的继承不通过 class&#xff0c;而是通过“原型对象”&#xff08;prototype&#xff09;实现 1、prototype 属性的作用 JavaScri…...

c++中的常用知识点总结

命名空间 使用命名空间之后&#xff0c;调用代码时可以省去也可以不省去相关的前缀。 #include <iostream>using namespace std;//使用c自己的命名空间 int main() {int num1 10;std::cout << "Hello, World!" << std::endl;cout<<num1&l…...

Leetcode:349. 两个数组的交集【题解超详细】

题目 给定两个数组 nums1 和 nums2 &#xff0c;返回 它们的交集 。输出结果中的每个元素一定是 唯一 的。我们可以 不考虑输出结果的顺序 。 难度&#xff1a;简单 题目链接&#xff1a;349.两个数组的交集 示例 1&#xff1a; 输入&#xff1a;nums1 [1,2,2,1], nums2 [2,…...

Java 【异常】

一、认识异常 Exception 在 Java 中&#xff0c;将程序执行过程中发生的不正常行为称为异常 。 异常是异常exception&#xff0c;报错是报错error 1.算数异常 0不能作为除数&#xff0c;所以算数异常 2.空指针异常 arr不指向任何对象&#xff0c;打印不出arr的长度&#xff0c;…...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

Cursor实现用excel数据填充word模版的方法

cursor主页&#xff1a;https://www.cursor.com/ 任务目标&#xff1a;把excel格式的数据里的单元格&#xff0c;按照某一个固定模版填充到word中 文章目录 注意事项逐步生成程序1. 确定格式2. 调试程序 注意事项 直接给一个excel文件和最终呈现的word文件的示例&#xff0c;…...

51c自动驾驶~合集58

我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现

摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序&#xff0c;以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务&#xff0c;提供稳定高效的数据处理与业务逻辑支持&#xff1b;利用 uniapp 实现跨平台前…...

VTK如何让部分单位不可见

最近遇到一个需求&#xff0c;需要让一个vtkDataSet中的部分单元不可见&#xff0c;查阅了一些资料大概有以下几种方式 1.通过颜色映射表来进行&#xff0c;是最正规的做法 vtkNew<vtkLookupTable> lut; //值为0不显示&#xff0c;主要是最后一个参数&#xff0c;透明度…...

论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(一)

宇树机器人多姿态起立控制强化学习框架论文解析 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架&#xff08;一&#xff09; 论文解读&#xff1a;交大&港大&上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化…...

ios苹果系统,js 滑动屏幕、锚定无效

现象&#xff1a;window.addEventListener监听touch无效&#xff0c;划不动屏幕&#xff0c;但是代码逻辑都有执行到。 scrollIntoView也无效。 原因&#xff1a;这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作&#xff0c;从而会影响…...

JVM虚拟机:内存结构、垃圾回收、性能优化

1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...

LINUX 69 FTP 客服管理系统 man 5 /etc/vsftpd/vsftpd.conf

FTP 客服管理系统 实现kefu123登录&#xff0c;不允许匿名访问&#xff0c;kefu只能访问/data/kefu目录&#xff0c;不能查看其他目录 创建账号密码 useradd kefu echo 123|passwd -stdin kefu [rootcode caozx26420]# echo 123|passwd --stdin kefu 更改用户 kefu 的密码…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具&#xff0c;可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件&#xff0c;也不需要在线上传文件&#xff0c;保护您的隐私。 工具截图 主要特点 &#x1f680; 快速转换&#xff1a;本地转换&#xff0c;无需等待上…...