购买与咨询 NX 二次开发视频教程,请联系微信号:13890821008 QQ号:85585969
函数结构:UF_MODL_unite_bodies_with_retained_options( tag_t original_target, tag_t original_tool, logical retain_target_body, logical retain_tool_body, tag_t * frec_eid) 函数说明:
联合两个机构的选项保持原来的目标身上,刀体,或这两个机构。
函数参数:
第1个参数为输入:
original_target代表参数变量,tag_t 为输入参数类型,原来的目标体
第2个参数为输入:
original_tool代表参数变量,tag_t 为输入参数类型,原始工具体
第3个参数为输入:
retain_target_body代表参数变量,logical 为输入参数类型,指示是否保留目标身上。如果是TRUE - 生成的身体是新的机构和目标身上被保留,FALSE - 所产生的身体是修改后的目标身上。
第4个参数为输入:
retain_tool_body代表参数变量,logical 为输入参数类型,指示是否保留工具体。如果真 - 刀体不消耗。假 - 工具主体被消耗
第5个参数为输出:
frec_eid代表参数变量,tag_t * 为输出参数类型,由此产生的功能记录标签
UF_MODL_unite_bodies_with_retained_options函数实例代码演示:
描述该程序演示如何使用下面的UG/ Open API的程序:UF_MODL_unite_bodiesUF_MODL_subtract_bodiesUF_MODL_intersect_bodies项目描述下面的例子需要一个开放,空白部分。该代码创建一个体和汽缸。然后执行结合,相减,相交及这两个机构与之间的操作撤消在每个操作之间。
[quote]
#include <stdio.h>
#include <uf_modl.h>
#include <uf.h>
#include <uf_defs.h>
#include <uf_undo.h>
#define UF_CALL(X) (report( __FILE__, __LINE__, #X, (X)))
static int report( char *file, int line, char *call, int irc)
{
if (irc)
{
char messg[133];
printf("%s, line %d: %s\n", file, line, call);
(UF_get_fail_message(irc, messg)) ?
printf(" returned a %d\n", irc) :
printf(" returned error %d: %s\n", irc, messg);
}
return(irc);
}
static void do_ugopen_api(void)
{
tag_t block, cylinder, feature, *resulting_bodies = NULL;
double origin[3]={0.0,0.0,0.0};
double direction[3]={0.0,0.0,1.0};
int num_results;
char *edge_lens[3]={"1","1","1"};
char *diameter={"1.0"};
char *height="2.0";
int rollback_id = 0;
UF_UNDO_mark_name_t mark_name = NULL;
/* Create a block and cylinder. */
UF_CALL(UF_MODL_create_block1(UF_NULLSIGN,
origin,
edge_lens,
&feature));
UF_CALL(UF_MODL_ask_feat_body(feature,
&block));
UF_CALL(UF_MODL_create_cyl1(UF_NULLSIGN,
origin,
height,
diameter,
direction,
&feature));
UF_CALL(UF_MODL_ask_feat_body(feature,
&cylinder));
/* Set undo mark */
UF_CALL(UF_UNDO_set_mark( UF_UNDO_invisible,
mark_name,
(UF_UNDO_mark_id_t *)&rollback_id));
/* Perform unite */
UF_CALL(UF_MODL_unite_bodies(block,
cylinder));
/* Undo the unite */
UF_CALL(UF_UNDO_undo_to_mark(rollback_id,
NULL));
/* Set undo mark */
UF_CALL(UF_UNDO_set_mark( UF_UNDO_invisible,
mark_name,
(UF_UNDO_mark_id_t *)&rollback_id));
/* Perform subtract */
UF_CALL(UF_MODL_subtract_bodies(block,
cylinder,
&num_results,
&resulting_bodies));
if (num_results > 0)
UF_free(resulting_bodies);
/* Undo the subtract */
UF_CALL(UF_UNDO_undo_to_mark(rollback_id,
NULL));
/* Perform intersect */
UF_CALL(UF_MODL_intersect_bodies(block,
cylinder,
&num_results,
&resulting_bodies));
if (num_results > 0)
UF_free(resulting_bodies);
}
/*ARGSUSED*/
void ufusr(char *param, int *retcode, int paramLen)
{
if (!UF_CALL(UF_initialize()))
{
do_ugopen_api();
UF_CALL(UF_terminate());
}
}
int ufusr_ask_unload(void)
{
return (UF_UNLOAD_IMMEDIATELY);
}
[/quote]