纵断面图标注栏数据复制
新西兰本地化包中有一项小功能不错——纵断面图标注栏数据复制
刚好这几天我们自己也遇到了同样的需求:
利用纵断面来创建场地剖面,
剖面图标注栏要进行重复的设置。
于是参照新西兰本地化包中的功能,
自己也写了一遍。
但写的过程中遇到了一些问题,
在遇到问题后,
没有第一时间想起查看api reference,
没有查看每个属性是否会抛出异常……
导致冒昧的向Autodesk负责API接口开发的丁工直接请教,
实在是尴尬……
相关代码如下:
class SetProfileViewDataband{Document doc;Database db;Editor ed;CivilDocument cDoc;ObjectId fillShapeStyleId;ObjectId cutShapeStyleId;public SetProfileViewDataband(){doc = Application.DocumentManager.MdiActiveDocument;db = doc.Database;ed = doc.Editor;cDoc = CivilApplication.ActiveDocument;}
/// <summary>/// 2019年04月15日/// 按照新西兰本地化包中的功能,/// 进行纵断面数据复制/// </summary>public void ProfileDataBandCopy(){PromptEntityOptions peo = new PromptEntityOptions("\n选择源纵断面图: ");peo.SetRejectMessage("只允许选择一个纵断面图. \n");peo.AddAllowedClass(typeof(ProfileView), true);PromptEntityResult per = ed.GetEntity(peo);if (per.Status == PromptStatus.OK){ProfileView view;using (Transaction tr = db.TransactionManager.StartTransaction()){view = per.ObjectId.GetObject(OpenMode.ForRead) as ProfileView;tr.Commit();}ProfileViewBandItemCollection bottomBandItems = view.Bands.GetBottomBandItems();ProfileViewBandItemCollection topBandItems = view.Bands.GetTopBandItems();TypedValue[] tv = new TypedValue[] { new TypedValue(0, "AECC_PROFILE_VIEW") };SelectionFilter filter = new SelectionFilter(tv);PromptSelectionResult psr = ed.GetSelection(filter);if (psr.Status == PromptStatus.OK){foreach (ObjectId id in psr.Value.GetObjectIds()){using (Transaction tr2 = db.TransactionManager.StartTransaction()){ProfileView view2 = tr2.GetObject(id, OpenMode.ForWrite) as ProfileView;ProfileViewBandItemCollection bandItems = view2.Bands.GetBottomBandItems();ProfileViewBandItemCollection items4 = view2.Bands.GetTopBandItems();bandItems = new ProfileViewBandItemCollection(view2.ObjectId, BandLocationType.Bottom);items4 = new ProfileViewBandItemCollection(view2.ObjectId, BandLocationType.Top);this.AddDataBandItems(bottomBandItems, ref bandItems, db);this.AddDataBandItems(topBandItems, ref items4, db);if (bandItems.Count() > 0){view2.Bands.SetBottomBandItems(bandItems);}if (items4.Count() > 0){view2.Bands.SetTopBandItems(items4);}tr2.Commit();}}}}}
public void AddDataBandItems(ProfileViewBandItemCollection srcBandItems,ref ProfileViewBandItemCollection targetBandItems, Database db){using (Transaction tr = db.TransactionManager.StartTransaction()){for (int i = 0; i < srcBandItems.Count(); i++){ProfileViewBandItem item = srcBandItems[i];targetBandItems.Add(item.BandStyleId);Type type = item.GetType();PropertyInfo[] properties = type.GetProperties();foreach (PropertyInfo prop in properties){if (prop.CanWrite){//如果不加try,不少属性值无法读取到,//具体哪些属性会抛出异常,可以在api reference中查看try{object v = prop.GetValue(item);prop.SetValue(targetBandItems[i], v);}catch {}}}}tr.Commit();}}
总结:遇到问题第一个想到应该是去查看api reference,看是否会抛出异常。
转载于:https://www.cnblogs.com/myzw/p/10714696.html
纵断面图标注栏数据复制相关推荐
- Docker 镜像仓库 Harbor 部署 及 跨数据复制
Docker 镜像仓库 Harbor 部署 及 跨数据复制 注: 由于 Harbor 是基于 Docker Registry V2 版本,所以Docker version 17.05.0-ce, bu ...
- 无锡市公安局ETL/BI/数据复制/数据库审计采购要求
三.项目技术要求和有关说明 本项目为无锡市公安局的社会信息采集汇聚(二)数据管理服务平台一期,项目具体要求如下,投标人须提供满足以下要求的产品和服务: (一) 技术要求: 1.项目概述 随着全省公 ...
- 宁波财税数据复制抽取/容灾工具采购
一.项目背景 宁波财税智能管理系统是宁波财税实现数据综合利用但又不局限于传统数据应用系统的大平台,是满足财税各级领导和管理人员.操作人员数据查询.统计.分析.数据挖掘.辅助决策支持.智能档案管理.业务 ...
- 四川省地方税务局数据复制分发软件项目招标
四川省地方税务局信息管理中心信息系统设备公开招标采购技术和资质要求公示 四川省政府采购中心受采购人的委托,拟四川省地方税务局信息管理中心信息系统设备采取公开招标方式进行政府采购,为了保证招标的公平 ...
- matlab复制txt里的一列,将txt格式里的两列数据复制粘贴导入excel 后全都在同一列里,怎样让它们分成两列?...
将txt格式里的两列数据复制粘贴导入excel 后全都在同一列里,怎样让它们分成两列?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起 ...
- Windows Server2016 安装及配置DFS实现数据复制
Windows Server2016 安装及配置DFS实现数据复制 我们今天主要介绍的是Windows Server2016 安装及配置DFS实现数据复制,那什么是DFS呢?DFS就是Microsof ...
- docker 数据共享,数据复制
docker 提供的数据共享的方式有 docker run -it -v:/dataname image 数据复制使用 docker cp containerid:/dataname ...
- NLP语义标注模型数据准备及实战
NLP语义标注模型数据准备及实战 目录 NLP语义标注模型数据准备及实战 流程示例 代码示例
- 表间数据复制--SELECT表中的数据插入到新的表中(ORACLE,MSSQL)
表间数据复制--SELECT表中的数据插入到新的表中 --在Oracle 9i中 CREATE TABLE scott.test AS (SELECT DISTINCT empno,ename,hir ...
最新文章
- 【Linux入门到精通系列讲解】Nginx详细介绍和安装使用(这一篇就够了)
- 【Android 进程保活】Low Memory Killer 机制
- 机器学习算法加强——回归
- 经典递归——斐波那契数列,汉诺塔
- layui option 动态添加_layui中select的change事件、动态追加option
- mysql range代表什么意思_MySQL数据表range分区例子
- 中职计算机技术教学计划,中职计算机教学计划
- phpcmsV9后台入口安全问题
- Python 猜数字游戏
- 10参数_荣耀V40屏幕参数:10亿色视网膜级超感屏
- VALSE学习(十八):复杂视频的深度高效分析与理解方法
- 智能安防系统如何防火、防盗、防煤气?
- QConf分布式配置管理工具 QConf
- 修改系统UISearchBar搜索框的样式-搜索图片、背景颜色
- APP的多语言设计我们可以做点什么?
- 在pycharm下实现scrapy爬虫,解决NO module named‘‘Use “scrapy“ to see available commands的问题
- UNIX应急响应攻略(转)
- 初学者如何入门安全测试?
- 360等中概股借壳回归之路,亦是赌徒赌壳之时
- 爬虫bing的图片,近千张,下载后自动更换为windows壁纸