iCAx开思工具箱

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 26897|回复: 3
打印 上一主题 下一主题

请高手帮忙:如何在草图上画线

[复制链接]
跳转到指定楼层
楼主
发表于 2005-1-14 14:48:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册登录,享用更多网站功能!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
在圆柱体的一个平面上建立一个草图,要在草图上画直线,是否先用UF_CURVE_create_line([$sline1,&line1[0])]创建直线,然后用errcod=UF_SKET_add_objects(sketch_id,count1,line1);把直线加入草图中
部分程序如下
int MY_ok_cb ( int dialog_id,
             void * client_data,
             UF_STYLER_item_value_type_p_t callback_data)
{  
int errcod;
char cc5[133];
  char   name[30]="sketch1";
int    option=2;
int    reference[2];
int    reference1[2];
int    plane_dir=1;
int    plane_dir1=UF_SKET_WITH_NORMAL;
UF_FEATURE_SIGN sign=UF_NULLSIGN ;
tag_t  cyl_obj;
tag_t  plane[10];
int listnum=0;
int i;
int ret;
int  type;
int count=0;
double origin[3]={0,0,0};
double point[3];
double dir[3];
double direction[3]={0,0,1};
char * height={"20"};
double box[6];
char * diam={"90"};
char * diam1={"30"};
double  radius;
double  rad_data;
int  norm_dir;
uf_list_p_t face_list;
tag_t face_obj[2];
tag_t member=NULL_TAG;
tag_t sketch_id;
tag_t displayed_part;
int body_type;
int sub_type;
int is_parallel;
int count1=1;
  
  double origin2[3]={0,0,20};
  double matrix_value[9]={1,0,0,0,1,0,0,0,20};
tag_t line1[3];
UF_CURVE_line_t sline1;
     /* Make sure User Function is available. */   
     if ( UF_initialize() != 0)  
          return ( UF_UI_CB_CONTINUE_DIALOG );
  
     /* ---- Enter your callback code here ----- */
reference[0]=1;
reference[1]=1;
reference1[0]=UF_SKET_HORIZONTAL;
reference1[1]=UF_SKET_ALONG_CURVE;
  
UF_MODL_create_cyl1(sign,origin,height,diam,direction,[$cyl_obj)]
displayed_part=UF_PART_ask_display_part();
ret=UF_OBJ_cycle_objs_in_part(displayed_part,UF_solid_type,[$member)]
if(member!= NULL_TAG);  
{
UF_OBJ_ask_type_and_subtype(member,[$body_type,&sub_type)]
  
if(body_type==UF_solid_type && sub_type==UF_solid_body_subtype)
{
  
UF_MODL_ask_body_faces(member,[$face_list)]
  
UF_MODL_ask_list_count(face_list,[$listnum)]
  
for(i=0;i<listnum;i++)  
{
UF_MODL_ask_list_item(face_list,i,[$face_obj[0])]
UF_MODL_ask_face_data(face_obj[0],[$type,point,dir,box,&radius,&rad_data,&norm_dir)]
if(type==22)
{
UF_VEC3_is_parallel(dir,direction,0.0001,[$is_parallel)]
if(is_parallel)
{
plane[count]=face_obj[0];
count++;
  
}
}
}
UF_MODL_delete_list([$face_list)]
}
}
UF_SKET_initialize_sketch(name,[$sketch_id)]
UF_SKET_create_sketch (name,option,matrix_value,plane,reference,plane_dir,[$sketch_id)]
//UF_SKET_attach_to_face(sketch_id,plane[1],plane[1],reference1,plane_dir1,[$sketch_feature_tag1)]
UF_SKET_initialize_sketch(name,[$sketch_id)]
sline1.start_point[0]=0.0;
sline1.start_point[1]=0.0;
sline1.start_point[2]=0.0;
sline1.end_point[0]=10.0;
sline1.end_point[1]=10.0;
sline1.end_point[2]=0.0;
UF_CURVE_create_line([$sline1,&line1[0])]
  
errcod=UF_SKET_add_objects(sketch_id,count1,line1);
//UF_SKET_update_sketch(sketch_id);
//errcod=
sprintf( cc5, "\na : %d\n" ,errcod);  
UF_UI_open_listing_window();  
  UF_UI_write_listing_window(cc5);  
  
    /* Callback acknowledged, terminate dialog             */
    /* It is STRONGLY recommended that you exit your       */
    /* callback with UF_UI_CB_EXIT_DIALOG in a ok callback.*/
    /* return ( UF_UI_CB_EXIT_DIALOG );                    */
    return (UF_UI_CB_EXIT_DIALOG);                           
  
}

2750230-temp-embed.jpg (27.02 KB, 下载次数: 11)

阅读权限: 1

2750230-temp-embed.jpg
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 支持支持
沙发
 楼主| 发表于 2005-1-14 14:52:48 | 只看该作者

马上注册登录,享用更多网站功能!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
板凳
发表于 2008-5-24 10:48:57 | 只看该作者

123

马上注册登录,享用更多网站功能!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
地板
发表于 2008-5-24 18:17:52 | 只看该作者

马上注册登录,享用更多网站功能!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手板模型制作,在线3D打印服务

QQ|小黑屋|手机版|开思工具箱 CAD工具箱_CAM工具箱  

GMT+8, 2024-11-22 05:11 , Processed in 0.015419 second(s), 9 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2024 www.iCAx.org

快速回复 返回顶部 返回列表