iCAx开思工具箱

标题: 求助 :UG--api函数UF_CURVE_create_line_point_point的用法 [打印本页]

作者: batigol_cj    时间: 2008-4-16 13:08
标题: 求助 :UG--api函数UF_CURVE_create_line_point_point的用法
我想编一个利用两个点创建一条直线的小程序,但函数UF_CURVE_create_line_point_point当中的参数不知该如何设置,请大家帮忙。

extern int UF_CURVE_create_line_point_point (
tag_t point1,
tag_t point2,
UF_CURVE_limit_p_t limit_p[ 2 ],
tag_t support_plane,
logical is_asso,
tag_p_t line_feature_id );

tag_t  point1 Input tag of start point
tag_t  point2 Input tag of end point
UF_CURVE_limit_p_t  limit_p[ 2 ] Input extension limits
tag_t  support_plane Input tag of support plane of the line
logical  is_asso Input true - if associative, false - if not associative
tag_p_t  line_feature_id Output if is_asso == TRUE - object identifier of new associtive line feature
if is_asso == FALSE - object identifier of new associtive line

红色部分 limit_p[2] 该如何设置啊?
哪位大哥能给一个写好的代码让我学习学习么?  我看了半天帮助也没弄明白。
作者: litao1128    时间: 2010-8-17 14:47
1#  
真的很悲剧,08年的问题,到现在都没人回帖,以至于我也不知道答案
作者: zjs    时间: 2010-8-17 17:40
用这个来划线了UF_CURVE_create_line(&line_coords,&line_tag);

UF_CURVE_line_t line_coords;
        line_coords.start_point[0]=x0
        line_coords.start_point[1]=y0;
        line_coords.start_point[2]=z0;
        line_coords.end_point[0]=x1
        line_coords.end_point[1]=y1
        line_coords.end_point[2]=z1
   其中 x0,y0,z0  x1,y1,z1 就是起点与终点坐标值
作者: litao1128    时间: 2010-8-18 09:34
3#  
#include <uf.h>
#include"stdio.h"
#include<uf_ui.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)
{
UF_CURVE_line_p_t line_coords ;
tag_t line;
line_coords->start_point[0]=0.0;
line_coords->start_point[1]=0.0;
line_coords->start_point[2]=0.0;
line_coords->end_point[0]=1.0;
line_coords->end_point[1]=1.0;
line_coords->end_point[2]=1.0;
//创建一条直线;
UF_CALL(UF_CURVE_create_line(line_coords,&line));
extern DLLExport void ufusr (char*parm,int*returnCode,int rlen)
{
if(!UF_CALL(UF_initialize()))//获取二次开发许可
{
  do_ugopen_api();
  UF_CALL(UF_terminate());//释放二次开发许可
}
else
{
  uc1601("获取二次开发失败",1);
}
}
//添加卸载函数
int ufusr_ask_unload(void)
{
return (UF_unload_IMMEDIATELY);
}

你给看一下这个程序吧,谢谢了
qq409456559
能不能留下你的qq
作者: look_tfq    时间: 2010-8-18 10:10
这里是正解
           tag_t pt1=NULL_TAG,pt2=NULL_TAG;
        double pos1[3]={0,0,0},pos2[3]={100,0,0};

        UF_CURVE_create_point(pos1,&pt1);
        UF_CURVE_create_point(pos2,&pt2);

        UF_CURVE_limit_s limit[2];
        UF_CURVE_limit_p_t pLimit[2]={&limit[0],&limit[1]};
        limit[0].limit_type=UF_CURVE_limit_to_entity;
        limit[0].limiting_obj=pt1;
        limit[1].limit_type=UF_CURVE_limit_to_entity;
        limit[1].limiting_obj=pt2;

        tag_t lineTag=NULL_TAG;
        UF_CALL(UF_CURVE_create_line_point_point(pt1,pt2,pLimit,NULL_TAG,FALSE,&lineTag));
作者: look_tfq    时间: 2010-8-18 10:12
调试没问题
作者: look_tfq    时间: 2010-8-18 10:16
UF_CURVE_limit_s limit用于限制线的长度,可以选UF_CURVE_limit_value方式指定值来控制
3楼4楼也是创建曲线,不过是非参数的,不是楼主想要的


作者: litao1128    时间: 2010-8-18 10:27
6#  
谢谢了
我的这个程序不能用吗
就是用uf_curve_create_line这个函数
作者: look_tfq    时间: 2010-8-18 10:36
8#  

楼主是说UF_CURVE_create_line_point_point的用法,不是怎么创建直线,创建直线的方法有好多种
作者: litao1128    时间: 2010-8-18 10:42
UF_CURVE_create_line这个函数的用法在我的程序里面不知道错误在哪里
作者: look_tfq    时间: 2010-8-18 10:46
楼上初学吧,语法错误,“}”少了几个,大小写要搞清,其它的不看了,建议再看看基础方面的书
作者: litao1128    时间: 2010-8-18 11:10
9#  
你的qq多少啊
能不能留下
409456559
作者: CUI821228    时间: 2010-8-23 15:24
学习了!!!
作者: xichulaishi    时间: 2014-6-5 09:47
UF_CURVE_line_s line_coords ;
                tag_t line;
                line_coords.start_point[0]=0.0;
                line_coords.start_point[1]=0.0;
                line_coords.start_point[2]=0.0;
                line_coords.end_point[0]=100.0;
                line_coords.end_point[1]=100.0;
                line_coords.end_point[2]=100.0;
                //创建一条直线;
                UF_CALL(UF_CURVE_create_line(&line_coords,&line));
我也说不上来为啥用指针就不行,换成这个再寻地址就可以了




欢迎光临 iCAx开思工具箱 (https://t.icax.org/) Powered by Discuz! X3.3