NX二次开发中KF与API的相互调用

【转载自】:http://www.kongmishu.com/

KF是NX架构中一种基于规则的编程语言。在进行二次开发是,KF和API是可以相互调用的。

一、 API中调用KF

在API中调用KF时,主要是通过uf_kf.h头文件来实现的。

对于不需要传递ug_objects进KF的情况,

直接利用UF_KF_create_rule创建rules,利用UF_KF_evaluate_rule执行操作,然后便可以得到最终的结果。

其中需要说明的几个参数是:const char * name_chain:我们知道在KF中都是通过名称链来实现变量的引用的,比如:root:SOLID_FACE:area:,这就是获取一个面中的面积属性。

对于UF_KF_create_rule另一个需要注意的参数是const char * rule_text:其中的内容就是rule的定义部分,如下所示:

"{\n Class,
ug_block; \n
Length, 100; \n
Width, 100; \n
Height, 100; \n}"
对于需要向KF中传递ug_objects的情况
利用KF函数获取object的属性(如面积)可以认为是该情形的简化状态,这时我们只需要利用UF_KF_adopt_ug_objects将object导进KF里面,然后再获取它的name_chain,通过气name_chain
来获取相关的属性。
在向KF中导进ug_objects对象时的注意事项和疑惑:
注意事项:在调用UF_KF_adopt_ug_objects时,必须将选中ug对象作为work part才行,否则会出现错误。
疑惑:帮助文档中说:UF_KF_make_tag 能够Create a Knowledge Fusion Hostpointer value. This is a way to reference an NX object without adopting it to Knowledge Fusion.
但是每次调用该函数来获取UF_KF_instance_p_t总是错误,还望指点???????????????????

二、KF中调用API
该主题在帮助文档中叙述的较为详细,这里就不再赘述。

转载于:https://www.cnblogs.com/thinkanddo/archive/2013/06/08/3125937.html

你可能感兴趣的:(NX二次开发中KF与API的相互调用)