Navisworks Api Quantification
Quantification 国外有的叫定量 我们国内一些施工方叫工程量。
通过TakeOff API的开发者有机会获得更多的数据和数据可通过图形用户界面。
1 添加Navisworks的Api
Autodesk.Navisworks.Takeoff.dll
2获取量一般是由随模型一起有个Access数据库.所有数据存在该数据库里面。当然也可以是基本数据库..
3使用C#和使用Autodesk.Navisworks.Api.Takeoff命名空间则扩展方法:
DocumentExtensions.GetTakeoff
例如 C# 代码:
DocumentTakeoff docTakeoff =Autodesk.Navisworks.Api.Application.MainDocument.Takeoff as DocumentTakeoff;DocumentTakeoff docTakeoff2 =Autodesk.Navisworks.Api.Application.MainDocument.GetTakeoff();
注:下面有关键字 table 都是数据库里的表。 DocumentExtensions类的地方扩展到文档类的DocumentTakeoff文档部件类。DocumentTakeoff提供对与起飞相关的各种文档部分。ItemGroupTable配置信息ItemGorupTable。ItemTable配置信息ItemTable。ObjectResourceTable配置信息ObjectResourceTable。ObjectStepTable配置信息ObjectStepTable。ObjectTable配置信息ObjectTable。ResourceGroupTable配置信息ResourceGroupTable。ResourceTable配置信息ResourceTable。StepResourceTable配置信息StepResourceTable。StepTable配置信息StepTable。TakeoffTable为所有表共有的特征共同的基类。TakeoffTableSelection表示在一个表中选择。TakeoffColumnDefinition起飞表中的固定列的定义。TakeoffProjectSettings Access项目设置。TakeoffSelection切入点每个表的选择。TakeoffSelectionChangeEventArgs用于TakeoffSelection Changed事件通过哪些表被修改。TakeoffSheetIds访问表编号。TakeoffVariable代表一个变量。TakeoffVariableCollection代表配置列的行数据。TakeoffVariableDefinition起飞表变量列的定义。的配置列定义TakeoffVariableDefinitionCollection集合
4使用标准的SQL查询数据
Int64 GetLastInsertRowId() {DocumentTakeoff docTakeoff = Autodesk.Navisworks.Api.Application.MainDocument.GetTakeoff();using (NavisworksCommand cmd = docTakeoff.Database.Value.CreateCommand()){//use SELECT ... FROM ... WHERE ... sql for query.//last_insert_rowid() is a stored function used to retrieve the rowid of the last insert rowcmd.CommandText = "select last_insert_rowid()";using (NavisWorksDataReader dataReader = cmd.ExecuteReader()){Int64 lastId = -1;if (dataReader.Read()){Int64.TryParse(dataReader[0].ToString(), out lastId);}return lastId;}} }
5使用标准的SQL创建目录
Int64 InsertItem(Int64? parent, String name, String description, String wbs, Int32 color, Double transparency) {Debug.Assert(name != null);DocumentTakeoff docTakeoff = Autodesk.Navisworks.Api.Application.MainDocument.GetTakeoff();ItemTable table = docTakeoff.Items;Debug.Assert(table != null);//Directly operate on database//Database schema entry: TakeoffTable//INSERT INTO TABLE(COL1,COL2,COL3...) VALUES(V1,V2,V3...);String sql = "INSERT INTO TK_ITEM(parent, name, description, wbs, color, transparency) VALUES(@parent, @name, @description,@wbs, @color,@transparency)";//Modification must be surrounded by NavisworksTransactionusing (NavisworksTransaction trans = docTakeoff.Database.BeginTransaction(DatabaseChangedAction.Edited)){using (NavisworksCommand cmd = docTakeoff.Database.Value.CreateCommand()){NavisworksParameter p = cmd.CreateParameter();p.ParameterName = "@parent";if (parent.HasValue)p.Value = parent.Value;elsep.Value = null;cmd.Parameters.Add(p);p = cmd.CreateParameter();p.ParameterName = "@name";p.Value = name;cmd.Parameters.Add(p);p = cmd.CreateParameter();p.ParameterName = "@description";p.Value = description;cmd.Parameters.Add(p);p = cmd.CreateParameter();p.ParameterName = "@wbs";p.Value = wbs;cmd.Parameters.Add(p);p = cmd.CreateParameter();p.ParameterName = "@color";p.Value = color;cmd.Parameters.Add(p);p = cmd.CreateParameter();p.ParameterName = "@transparency";p.Value = transparency;cmd.Parameters.Add(p);cmd.CommandText = sql;cmd.ExecuteNonQuery();}trans.Commit();}return GetLastInsertRowId(); }
6复制使用类来创建一个takeOff
Int64 DoTakeoff(Int64 itemId, Guid modelItemGuid) {DocumentTakeoff docTakeoff = Autodesk.Navisworks.Api.Application.MainDocument.GetTakeoff();List<Autodesk.Navisworks.Api.ModelItem> items = Autodesk.Navisworks.Api.Application.MainDocument.Models.RootItemDescendantsAndSelf.WhereInstanceGuid(modelItemGuid).ToList();Int64 lastId = -1;if (items.Count != 0){using (NavisworksTransaction trans = docTakeoff.Database.BeginTransaction(DatabaseChangedAction.Edited)){docTakeoff.Objects.InsertModelItemTakeoff(itemId, items[0]);//Quantification UI actually expect the takeoff to have a non-empty wbs, so better to set the wbs for it using the sql waylastId = GetLastInsertRowId();Debug.Assert(lastId > 0);using (NavisworksCommand cmd = docTakeoff.Database.Value.CreateCommand()){//UPDATE Object set WBS = value WHERE id = lastId;cmd.CommandText = "UPDATE TK_OBJECT SET wbs = @wbs WHERE id = @id";NavisworksParameter p = cmd.CreateParameter();p.ParameterName = "@wbs";p.Value = 1;cmd.Parameters.Add(p);p = cmd.CreateParameter();p.ParameterName = "@id";p.Value = lastId;cmd.Parameters.Add(p);cmd.ExecuteNonQuery();}trans.Commit();}}return lastId; }
7使用类查询和修改数据
void UpdateTakeoffValue(Int64 objectId) {DocumentTakeoff docTakeoff = Autodesk.Navisworks.Api.Application.MainDocument.GetTakeoff();//TakeoffVariableCollection TakeoffVariable are the entrance for read/update of the variablesTakeoffVariableCollection variableCollection = docTakeoff.Objects.SelectInputVariables(objectId);Int32 lengthIndex = variableCollection.Find("ModelLength");if (lengthIndex != -1){TakeoffVariable lengthVariable = variableCollection.GetItem(lengthIndex);if (lengthVariable.IsAbleToSetValue){lengthVariable.Value = Autodesk.Navisworks.Api.VariantData.FromDouble(5.6);using (NavisworksTransaction trans = docTakeoff.Database.BeginTransaction(DatabaseChangedAction.Edited)){docTakeoff.Objects.UpdateInputVariables(objectId, variableCollection);trans.Commit();}}} }
8选择在不同层次的元素在层次结构中
void SelectUIItem(Int64 itemId) { TakeoffSelection takeoffSelection = Autodesk.Navisworks.Api.Application.MainDocument.GetTakeoff().CurrentSelection; takeoffSelection.BeginEdit(); takeoffSelection.Items.Clear(); takeoffSelection.ItemGroups.Clear(); takeoffSelection.StepResources.Clear(); takeoffSelection.Steps.Clear(); takeoffSelection.Items.Add(itemId); takeoffSelection.EndEdit(); }粘贴的老外的
Navisworks Api Quantification相关推荐
- Navisworks API 简单二次开发 (自定义工具条)
在Navisworks软件运行的时候界面右侧有个工具条.比较方便.但是在二次开发的时候我不知道在Api那里调用.如果有网友知道请告诉我.谢谢. 我用就自己设置一个工具.界面比较丑!没有美工. 代码: ...
- NavisWorks Api 简单使用与Gantt
相信很多朋友在做BIM项目的时候.都有客户会提出项目计划,形象进度 等需求. 那么当前最主要的问题就是计划与BIM模型的关联问题.那么我在项目中是用户用Project软件编辑计划然后手动跟三维模型关联 ...
- Navisworks Api Tool
用Google 翻译的..做个参考 None 无有效的选择 Select 选择 SelectBox 选择框 RedlineFreehand 红线写意 RedlineLine 红线线 ...
- Revit Navisworks 二次开发—获取材质贴图
关注公众号及时获取文章更新 Retrieving textures via Navisworks API (no solution) 关于Revit API 获取材质贴图位图 bitMap(可行) 代 ...
- 猛料来啦!Autodesk全线产品二次开发视频录像下载!!
近年来全部Autodesk产品二次开发视频讲述下载链接!!AutoCAD, Revit, NavisWorks, Inventer, Vault, Civil 3D, Map 3D, Maya, 3d ...
- WPF 使用全局键盘(快捷键)
方式一:使用SourceInitialized,在使用快捷键必须先注册快捷键,窗体启动并重写SourceInitialized,这个时间发生在WPF窗体的资源初始化完毕,并且可以通过WindowInt ...
- Autodesk Revit 和Naviswork 众多二次开发培训视频教程一键下载
由于在ADN原网页中的提供ADN制作的视频培训教程下载页面在改版中需要删除,我们把Autodesk AEC行业(含Revit ,Naviswork等)的二次开发教程下载列在这里. 需要说明下,包含所有 ...
- Google发布新API,支持训练更小、更快的AI模型
雷锋网消息,Google今天发布了 Quantification Aware Training(QAT)API,使开发人员可以利用量化的优势来训练和部署模型AI模型.通过这个API,可以将输入值从大集 ...
- AutoCAD .NET API二次开发学习指南
作者:杜长宇 – Autodesk开发技术顾问 2012年4月20日 AutoCAD作为Autodesk公司的旗舰产品,已经在各个行业得到了广泛的应用,DWG格式更是成为事实上的工业标准.与其说Aut ...
最新文章
- REST API 支持方式
- OAuth2.0相关知识
- 计算机AL教程笔记,计算机系统基础学习笔记(2)-数据的位运算操作
- 实战SSM_O2O商铺_09【商铺注册】DTO之ShopExecution的实现
- android中设置lmargin简书,超详细React Native实现微信好友/朋友圈分享功能-Android/iOS双平台通用...
- OpenCV中对数组(矩阵)的常用操作
- [Vue.js] 深入 -- 组件化开发
- Aspect的简单方法拦截
- 阿里云短信服务bug
- 读取json本地js处理输出html,JavaScript 通过浏览器导出和读取本地 JSON 文件
- 四六级对计算机考研有影响吗,“考研”没过四六级,对考研有影响吗?
- 论神奇宝贝小智精灵联盟名次的类指数型变化
- python 函数修饰器 父类_Python函数嵌套、回调函数、闭包、装饰器和类
- Linksys WRT1900ACS 路由器恢复原厂固件
- 2019中国(北京)智能服务机器人展
- Day3-T31项目 异常处理与日志——2021-11-02
- Chrome浏览器ERR_INVALID_SIGNED_EXCHANGE解决方案
- Unity利用双相机巧做水印功能
- linux 查看磁盘信息
- 1-12月份英文简写
热门文章
- 第一百一十四节,JavaScript文档对象,DOM进阶
- Run time setting设置详解
- Bootstrap3.1开发的响应式个人简历模板
- Hadoop(HDFS、YARN、HBase、Hive和Spark等)默认端口表
- SUSE下双网卡IP同网段的烦恼
- 商业智能项目错误经验总结(三) 需求调研
- [译] 通过视图控制器容器和子视图控制器避免庞大的视图控制器
- 关于 Delphi 中流的使用(2) 用 TFileStream(文件流) 读写
- 《Linux嵌入式实时应用开发实战(原书第3版)》——3.5 Linux文件系统
- 自定义状态栏notification布局