Civil3D有哪些API

本文介绍了Civil3D二次开发的推荐方法,主要使用.NET API,并提供了当.NET API不完全覆盖所需功能时的五种解决方案,包括使用Reflector检查属性、结合使用COM API、利用AutoCAD API等。

Civil3D主要有两种API:COM和.NET

COM API已经处于维护阶段,不再进行新Feature的开发以及Bug的修复。Civil3D二次推荐使用的是.NET API,后文中使用的都是.NET API。

.NET基本上覆盖了大部分的Civil3D的feature,但是还是会有部分功能的缺失,碰到这种情况怎么办呢?

第一步,用Reflector仔细查找所有暴露的属性和方向,看看有没有理解错误的情况。同时,可以在相关的feature里去查找一下,例如需要找某个Profile的属性,有可能会在Alignment里面找到。

第二步,.NET API没有暴露,看看COM API有没有。如果有,混合着使用也是一种推荐的方法。

第三步,看看通过AutoCAD的方法能不能实现。例如我需要拿到Database中某一类Civil3D的entity,如果Civil3D的API没有暴露简单的方法,那么可以自己用AutoCAD API实现。方法也很简单,遍历Database的BlockTableRecord,打开每个对象并查看它的类型(GetType()),找出所有需要的类型的对象。另外也可以通过字符串来查找,例如DxfName,Civil3D TinSurface的DxfName是AECC_TIN_SURFACE。

第四步,尝试通过发命令的形式看看能不能做到,Document类里面有函数SendStringToExecute可以使用。例如你希望把某个Entity导出每个文件,但是没有这种API确有命令可以这样做,那么就通过发命令好了。

第五步,其他方法。我看到过的一个巧妙方法是,有个人需要拿到ViewFrame的四个角的坐标值,但是Civil3D的.NET和COM API都没有暴露,那么他就尝试着把ViewFrame炸开(Explode,AutoCAD有这个API),把炸开后得到的线段的端点拿出来,就是ViewFrame的坐标值。

还有其他办法吗?可以联系欧特克,让他们加。。

转载于:https://www.cnblogs.com/civil3ddevelop/p/6599200.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值