高冷的ArchiCAD二次开发-API白皮书
万间科技
2018-06-02 07:00
https://kuaibao.qq.com/s/20180602G06W4X00?refer=spider
基于Autodesk的市场策略和完善的技术支持,国内从事Revit和CAD二次开发的企业已经数不胜数了。
同为BIM领域优秀代表的GRAPHISOFT,在国内市场表现则显得有些力不从心。单款重量级产品ARCHICAD,似乎很难满足国内如此庞大的工程需求类别。不过在建筑设计及装饰工程领域,ARCHICAD一直有它得天独厚的技术积累优势。精巧、轻量化、Elegant,能对上很大一批高端设计师的胃口,跟屌丝级通用产品Revit形成了比较大的形象锚定差异。
单单从技术角度分析,ARCHICAD可以说是最早的BIM软件了,从初生就是这么定位的。其实它也拥有相当完备的二次开发条件(接口、文档、示例),基于其所开发的大量插件,也极好的拓展了ARCHICAD的功能边界。只不过要满足它Elegant的口味,GRAPHISOFT还设置了不少门槛:
ARCHICAD的二次开发权限可是要收费的,收欧元!
如果不通过审核,你都无法下载到ARCHICAD的SDK和API参考文档!
审核通过之后方可下载
本篇文章就来对其API文档中的白皮书进行介绍。科普一下ARCHICAD二次开发的基本知识。
基本问题
1. 什么是API开发套件(API Development Kit)?
API的意思是“应用程序编程接口”,是一个程序员可以使用的软件环境,用来创建增强ARCHICAD功能的工具或“插件”。
2. 为什么需要插件(Add-ons)?
虽然ARCHICAD的功能按版本快速增长,但在它目前包含的解决方案中还不能也不应该满足A/E/C市场的所有需求。它“不能”满足所有需求,是因为一些地方性的或专业市场的需求太过于普遍了(有的需求甚至是相互矛盾的),“不应该”满足所有需求,是因为即使设法这样做,结果也会是让ARCHICAD成为一个令人困惑的,几乎无法使用的臃肿软件巨人。
GRAPHISOFT的发展政策是保持ARCHICAD相对“精益和平均”的特点。那就是在ARCHICAD核心中仅提供可被视为普遍(全球)都需要的东西。这些是核心的A/E/C功能。API开发工具包(SDK)给用户提供了以插件的形式创建必要的自定义功能的可能性。
需要注意的是,使用插件并不一定意味着用户必须通过零散的插件来“拼凑”适合他们的软件解决方案。这些插件可以是ARCHICAD安装程序的一部分。对于“硬连接”核心功能的用户而言,这些插件功能可能完全无法区分。实际上,ARCHICAD中已经有几个使用API创建的功能(例如DXF / DWG I/O或构建网格函数)以及部分标准安装包功能(请参阅“示例”的更多内容)。
3. 需要什么类型的插件?
有三个主要领域需要附加功能的插件。
创建本地化功能
除了建筑和施工行业明显的普遍性外,实际上每个国家或地区在设计、结构、地方法规等方面都有其独特的特征。这些需求应该得到满足,但不会给不需要它的用户造成负担。GRAPHISOFT希望与当地的合作伙伴密切合作,创造这种“本地”功能,并且如果符合某些条件,本地化版本可以将其包含在ARCHICAD安装程序中。
创建特殊功能
基于ARCHICAD的“垂直”解决方案的需求再日益增加,比如木屋设计、2X4房屋等特殊领域。木屋设计在斯堪的那维亚和美国有非常相似的要求。 通常,如果这种解决方案包含在压缩包装的“特殊解决方案”(例如用于木屋设计的ARCHICAD版)中,则该解决方案最好由市场接收。开发这种基于ARCHICAD的垂直解决方案也是GRAPHISOFT的一个战略目标。开发合作伙伴也可以独立或与GRAPHISOFT合作发起并创建这些解决方案产品。
定制化
随着越来越多的大公司使用ARCHICAD,其对定制化的需求正在增加。现在借助GRAPHISOFT的API技术,开发伙伴可以迅速地在本地满足这些要求。它还为本地分销商和销售商创造了额外的、潜在利润丰厚的收入来源。二次开发是一项开放的软件服务。
4. API是唯一的方法吗?
API开发不是提供额外功能或定制ARCHICAD的唯一方式。从早期开始,ARCHICAD就通过GDL编程(GDL,Geometry Description Language,几何描述语言,ArchiCAD构件创建语言)提供了定制可能性,而GDL仍然是定制化的一个非常重要的工具。GDL对象自然可以通过API插件来实现。事实上,正如示例中所解释的那样,组合使用GDL对象和API插件是增强ARCHICAD功能的最强大的方法之一。除此之外,软件中已包含的清单编码功能也可以定制开发。这三种编程环境提供了广泛的工具,可以帮助用户成功解决A/E/C市场中的各种问题。
5. 谁可以做API开发?
API开发人员必须具备C或C++编程语言的经验。有关程序方面的信息,请访问开发者网站的政策部分。当然,要完全搞清楚如何开发,以及开发什么功能,光有编程技能是不够的,了解ARCHICAD的软件功能是一个先决条件(产品经理配合)。
技术说明
API开发工具包的目标,是为开发合作伙伴提供一种开发插件的方法,通过插件可以访问和修改软件中的虚拟建筑的数据库。API软件工具可根据其功能分为四大类:
1. 数据库工具 Database tools
这些功能允许访问虚拟建筑的数据库,并对其进行更改。在大多数情况下,创建插件的主要原因是在虚拟建筑的数据库中执行更改。这些功能几乎可以无限制地访问虚拟建筑数据库。
2. 界面工具 Interface tools
这些功能允许为API插件创建图形用户界面(GUI)。
要在虚拟建筑数据库中执行更改,用户必须首先能够将其意图传达给插件,也就是说,图形用户界面是必需的。该API提供了大量增强的工具,让开发人员可以针对特定问题选择最合适的界面解决方案。
一个很好的例子是Profiler(事件探查器),它允许用户创建旋转和管状物体,它依赖于平台独立的对话管理器和API的输入服务。
3. 集成工具 Integration tools
这些函数提供了各种方法技可能性,通过捕获ARCHICAD中的“事件”,将API插件紧密集成到ARCHICAD环境中。
尽管一些API插件完全由用户通过GUI操作控制,但在某些情况下,开发人员可能希望自动启动事件,而无需任何用户交互。自然,这两种方法可以结合使用。 因此,通过将标准ARCHICAD事件与API插件相关联,API插件可以紧密集成到ARCHICAD的工作环境中。
一个简单的例子是“选择”插件,它可以存储和恢复用户最喜欢的选择(Selections)。它捕获选择的所有更改(选择、取消选择),并相应地修改其界面元素的状态。
4. 开发工具 Development tools
这些是使开发更容易的各种软件工具,它们的唯一目的是使开发更容易,更快速,不易出错。
示例
下面我们将介绍由GRAPHISOFT开发的三个API插件示例:DWG/DXF I/O插件、ROOFMAKER、PROFILER。这些工具在其功能(I/O扩展功能,建筑设计深化功能,通用建模功能)方面、打包方式方面(通用捆绑插件、大多数捆绑了本地不同的内容的插件、可以从GRAPHISOFT的网站下载免费的“好礼”)以及它们的外表方面,都有很大不同。它们代表了ARCHICAD API提供的多功能性特点,希望它能给开发伙伴的工作带来一些启发。
1. DWG/DXF I/O插件
这个插件负责ARCHICAD的DWG和DXF文件读取和写入功能。它是所有ARCHICAD软件包的标准部分。因此,将它作为插件实施可能听起来不合逻辑。但是,DWG和DXF格式通常会更改,这些更改与我们通常的升级周期不一致。DWG/DXF I/O插件使我们有机会在不改变ARCHICAD源代码(费时费力)的情况下对DWG或DXF输出进行调整。
插件的界面非常简单,但其背后的技术相当复杂。
同样,如果有必要的信息可用,API开发人员可以基于ArchiCAD创建几乎针对任何CAD或CG软件的I/O附件。
2. ROOFMAKER
RoofMaker,顾名思义,为ARCHICAD项目创建屋顶。建筑师首先使用ARCHICAD的屋顶工具设计屋顶,然后使用RoofMaker的参数化特征,通过点击几下鼠标就可以创建带梁、椽子等的复杂屋顶结构。新的屋顶对象(由API放置)为参数化的GDL库部件,因此可以在以后轻松修改。
然而,问题在于欧洲和美国的屋顶结构是不同的(而不是说更复杂的日本屋顶!),将所有需求都放在一个工具中(并保持界面简单?)是非常困难的。 出于这个原因,我们决定,RoofMaker应该是一个插件,而不是将一个屋顶创作工具硬编码到ARCHICAD中,这些插件是为当地(Local)主要市场定制的。 因此,得益于API的插件架构,我们可以满足本地需求,而不会影响核心应用的统一性。
需要注意的是,除了放置GDL对象的API插件外,RoofMaker的开发中还涉及相当多的GDL编程。实际上,这种用于放置和定义先前加载的GDL对象的插件模式,是最典型和最强大的插件解决方案之一,它结合了GDL和API的优势。
3. PROFILER
经常有人这样批评ARCHICAD,虽然GDL(几何描述语言)确实是复杂几何表达的一种非常通用的工具,但普通用户很难学习GDL脚本。Profiler是一个附加工具,它将GDL的灵活几何结构与ARCHICAD界面的易用性结合在一起。使用Profiler,用户甚至无需打开GDL编辑器,就可以利用GDL的“旋转”和“扫卷”命令的功能。然而,在这种情况下,API不会简单地给先前加载的GDL对象提供参数,而是在运行中创建它们(当然,用户必须命名它们)。这样Profiler就可以在创建任意形式的结构时,保持更高的灵活性。
从长远来看,ARCHICAD可能需要在核心应用程序中容纳这些功能。然而,目前我们决定不将Profiler作为包装的一部分,而是将其保留为“好礼”:一个附加工具,可以从GRAPHISOFT的网站免费下载。
总结
ArchiCADAPI V21版是一个成熟的现代化开发环境,GRAPHISOFT及其合作伙伴可以为用户创造各种各样的插件。GRAPHISOFT自己不仅是开发人员,同时也是API技术的用户,致力于不断升级API开发工具包以及后续版本的ARCHICAD。
GRAPHISOFT欢迎任何关于如何改进API功能的错误或建议的报告。 GRAPHISOFT将尽最大努力将这些请求合并到API开发工具包的未来版本中。
参考资料链接:
http://archicadapi.graphisoft.com/documentation/api-white-paper。