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相关推荐

  1. Navisworks API 简单二次开发 (自定义工具条)

    在Navisworks软件运行的时候界面右侧有个工具条.比较方便.但是在二次开发的时候我不知道在Api那里调用.如果有网友知道请告诉我.谢谢. 我用就自己设置一个工具.界面比较丑!没有美工. 代码: ...

  2. NavisWorks Api 简单使用与Gantt

    相信很多朋友在做BIM项目的时候.都有客户会提出项目计划,形象进度 等需求. 那么当前最主要的问题就是计划与BIM模型的关联问题.那么我在项目中是用户用Project软件编辑计划然后手动跟三维模型关联 ...

  3. Navisworks Api Tool

    用Google 翻译的..做个参考 None  无有效的选择   Select  选择  SelectBox 选择框  RedlineFreehand  红线写意  RedlineLine 红线线   ...

  4. Revit Navisworks 二次开发—获取材质贴图

    关注公众号及时获取文章更新 Retrieving textures via Navisworks API (no solution) 关于Revit API 获取材质贴图位图 bitMap(可行) 代 ...

  5. 猛料来啦!Autodesk全线产品二次开发视频录像下载!!

    近年来全部Autodesk产品二次开发视频讲述下载链接!!AutoCAD, Revit, NavisWorks, Inventer, Vault, Civil 3D, Map 3D, Maya, 3d ...

  6. WPF 使用全局键盘(快捷键)

    方式一:使用SourceInitialized,在使用快捷键必须先注册快捷键,窗体启动并重写SourceInitialized,这个时间发生在WPF窗体的资源初始化完毕,并且可以通过WindowInt ...

  7. Autodesk Revit 和Naviswork 众多二次开发培训视频教程一键下载

    由于在ADN原网页中的提供ADN制作的视频培训教程下载页面在改版中需要删除,我们把Autodesk AEC行业(含Revit ,Naviswork等)的二次开发教程下载列在这里. 需要说明下,包含所有 ...

  8. Google发布新API,支持训练更小、更快的AI模型

    雷锋网消息,Google今天发布了 Quantification Aware Training(QAT)API,使开发人员可以利用量化的优势来训练和部署模型AI模型.通过这个API,可以将输入值从大集 ...

  9. AutoCAD .NET API二次开发学习指南

    作者:杜长宇 – Autodesk开发技术顾问 2012年4月20日 AutoCAD作为Autodesk公司的旗舰产品,已经在各个行业得到了广泛的应用,DWG格式更是成为事实上的工业标准.与其说Aut ...

最新文章

  1. REST API 支持方式
  2. OAuth2.0相关知识
  3. 计算机AL教程笔记,计算机系统基础学习笔记(2)-数据的位运算操作
  4. 实战SSM_O2O商铺_09【商铺注册】DTO之ShopExecution的实现
  5. android中设置lmargin简书,超详细React Native实现微信好友/朋友圈分享功能-Android/iOS双平台通用...
  6. OpenCV中对数组(矩阵)的常用操作
  7. [Vue.js] 深入 -- 组件化开发
  8. Aspect的简单方法拦截
  9. 阿里云短信服务bug
  10. 读取json本地js处理输出html,JavaScript 通过浏览器导出和读取本地 JSON 文件
  11. 四六级对计算机考研有影响吗,“考研”没过四六级,对考研有影响吗?
  12. 论神奇宝贝小智精灵联盟名次的类指数型变化
  13. python 函数修饰器 父类_Python函数嵌套、回调函数、闭包、装饰器和类
  14. Linksys WRT1900ACS 路由器恢复原厂固件
  15. 2019中国(北京)智能服务机器人展
  16. Day3-T31项目 异常处理与日志——2021-11-02
  17. Chrome浏览器ERR_INVALID_SIGNED_EXCHANGE解决方案
  18. Unity利用双相机巧做水印功能
  19. linux 查看磁盘信息
  20. 1-12月份英文简写

热门文章

  1. 第一百一十四节,JavaScript文档对象,DOM进阶
  2. Run time setting设置详解
  3. Bootstrap3.1开发的响应式个人简历模板
  4. Hadoop(HDFS、YARN、HBase、Hive和Spark等)默认端口表
  5. SUSE下双网卡IP同网段的烦恼
  6. 商业智能项目错误经验总结(三) 需求调研
  7. [译] 通过视图控制器容器和子视图控制器避免庞大的视图控制器
  8. 关于 Delphi 中流的使用(2) 用 TFileStream(文件流) 读写
  9. 《Linux嵌入式实时应用开发实战(原书第3版)》——3.5 Linux文件系统
  10. 自定义状态栏notification布局