简介:
从事NX二次开发已经有三年了,却从未写过总结性的文章,今天就补一篇!
第一部分:方案布局
首先,由于开发的工具包可能编译多个NX版本,所以启动NX项目通常使用批处理文件,设置VS&NX版本。
第二部分:解决方案与项目
A方案:使用一个解决方案,一个项目,然后项目内部代码分类布局
B方案:使用一个解决方案,多个项目
方案 | 优点 | 缺点 |
A | 项目属性只需修改一次 | 功能叠加,查错难,功能多时分类难 |
B | 功能分工明确,易于查找 | 项目属性,配置麻烦 |
A方案,简洁干练。
如果项目太多,项目属性的更改是一件很繁琐的事,而且还有考虑各Dll相互调用,比较费时!
但是在维护项目上B方案更优,而且B方案能够按照不同用户需求将功能快速重组,所以建议使用B方案。
另外考虑到项目在不同NX版本上变动,应当将链接器库文件改成$(UGII_BASE_DIR)\ugopen\*.lib
而不是使用自动生成项目自带的库文件。
一个完整的功能包,应当有公共库,第三方库,公共设置项目,数据,界面,测试等及部分组成。
前期合理的细分排版能大大减少后期维护重构升级所花费的时间。
第三部分:代码布局
面向对象 ,数据和UI分离。
面向对象的重要性就不再提了,数据和UI分离是必须的,有以下理由:
- 一个功能中UI的更改可能是频繁的,
- 多个UI可能共享一份数据,不分离会造成数据冗余
另外,虽然有些功能很简单,数据UI分离可能浪费时间,但请保持这种良好习惯,很受用!
第四部分:UI& 数据 交互
数据和UI分离之后, UI 和 数据 交互方式可以分为:
A: UI更新,数据也会及时更新并将新的结果返回到UI,也就是同步操作
B: UI开启时,数据不做处理,待Ok时再讲UI上的结果传入到数据中处理,
A是合理的,它能及时响应用户的操作,并将结果及时反馈给用户,
但是如果用户进行了一顿操作,然后点击了取消按钮,数据却保存了下来,这明显是不对的!
B在数据上虽然没有问题,但对于UI开启时用户的操作无效,甚至还要对界面操作单独编码,脱离了数据!
就会出现用户操作了一顿,最后Ok是却报了一个迟到的错误,也有问题。
目前的方法:
个人认为A是对的,但缺少了一个东西,就是UI是否生效,OK就是生效 !!!
目前的方法是在UI开启之前,对数据做一个备份,
如果以OK结束,则数据没有问题,
如果不是OK,数据重置为备份数据。UI开启时的操作如创建块,删除实体等都会还原,备份的数据仍然有效,这不用担心。
以后如果有其他更合理的方法,会继续补充。