找回密码 注册 QQ登录
开思网工业级高精度在线3D打印服务

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 18149|回复: 17
打印 上一主题 下一主题

【求助】三元机测量数据如何导入ug中?

[复制链接]
跳转到指定楼层
1
发表于 2003-8-11 09:09:05 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

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

x
我在做ug二次开发过程中,需要把三坐标测量机测量的数据文件读入程序中,根据其中的数据生成点。但如何把之间的接口该如何解决呢?请高手指点!!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
18
发表于 2003-9-6 04:44:36 | 只看该作者
一般三坐标测量机在进行曲线曲面扫描时都会生成不同格式的数据文件,像SZJ系列使用的WINCOM软件就可以输出DXF、IGES、IBL和普通的文本文件。只要直接导入就行了。
  
如果只是做扫描,还可以用它自带的AUTOCAD的ARX模块中的功能,直接在AUTOCAD中进行扫描采点,然后存成想要的格式后转到UG中。
  
你的程序有关UG的我没看懂,不过其中进行数据读的语句错了。%s是用于读取字符串数据的标志,而你声明的point是一个指向浮点数组的指针。在TC中可能两个指针的大小一样,就没出错(可能,我也不知道),不过在VC中是肯定不成的
  i_ret=fscanf(fp,"%s %s %s",[$points[0],&points[1],&points[2])]  错!
  
应该是
  i_ret = fscanf( fp, "%f %f %f", points+i*3, points+i*3+1, points+i*3+2 );
  
。。。。不过你这么做挺累的,整个结构最好这样:
  
include "stdio.h"  
main()  
{  
FILE *fp;  
double point[3];  
if((fp=fopen("points.txt","r"))==NULL)  
{  
  printf("cannot open this file");  
  exit(0);  
}  
while(!feof(fp))  
{  
  fscanf(fp,"%f %f %f", point, point+1, point+2 );   
  printf("%f %f %f\n", point[0], point[1], point[2] );
}  
fclose( fp );
}  
    
17
发表于 2003-9-5 12:12:13 | 只看该作者
i_ret=fscanf(fp,"%s %s %s",[$points[0],&points[1],&points[2])]  
这句话也有问题,fscanf的后面的三个参数应当是指针。
16
发表于 2003-9-5 12:12:05 | 只看该作者
i_ret=fscanf(fp,"%s %s %s",[$points[0],&points[1],&points[2])]  
这句话也有问题,fscanf的后面的三个参数应当是指针。
15
发表于 2003-9-5 08:43:07 | 只看该作者
lianyun wrote:
我做了一个读取csy file的小程序,在tc下编译,运行都完全正确。程序如下:  
  
  double points[10][3];
  if((fp=fopen("points.txt","r"))==NULL)  
  {  
  ??printf("cannot open this file");  
  ??exit(0);  
  }  
  i=0;  
  while(!feof(fp))  
  {  
  fscanf(fp,"%s %s %s",[$points[0],&points[1],&points[2])]  
  i++;  
  }  
  
  

你把points定义成了double数组,不过你读取的时候把它当成了字符串
14
发表于 2003-8-31 09:56:57 | 只看该作者
能不能将你三坐标机得到的测量数据贴一下,想看看你的数据格式,可以吗?谢谢
13
发表于 2003-8-28 10:34:18 | 只看该作者
如果是igs格式,则可以利用UG的IGS接口直接读取就可以了。
如果是DAT文件格式,按照UG直接读取DAT文件要按UG的标准来。
应该是同楼上的大侠写的程序读点的格式一致,
但是注意,每个点单独一行,X\Y\Z之间必须要用空格来个开。
可以用SPLINE命令中由点来构造曲线,再用取点的功能POINT SET可以将这些点直接生成出来。
  
我估计楼上的大侠问题是在坐标之间的空格上。
可以试试。
12
发表于 2003-8-25 20:59:47 | 只看该作者
能否请楼上的高手具体谈谈如何读取igs文件,小弟以前没有做过这方面的工作?先谢了!
11
发表于 2003-8-25 12:56:32 | 只看该作者
在UG中,将三座标测量机得到的igs文件是可以读入的,不知道你得到的是什么样的格式,如果也是igs点描述,可以导入点后,使用spline命令成线,之后进行操作。
10
发表于 2003-8-24 08:49:59 | 只看该作者
我做了一个读取csy file的小程序,在tc下编译,运行都完全正确。程序如下:
include "stdio.h"
main()
{
  FILE *fp;
  int i,j;
  double points[10][3];
  if((fp=fopen("points.txt","r"))==NULL)
  {
  printf("cannot open this file");
  exit(0);
  }
  i=0;
  while(!feof(fp))
  {
  fscanf(fp,"%s %s %s",[$points[0],&points[1],&points[2])]
  i++;
  }
  
  for(j=0;j<i;j++)
  {
   printf("%s %s %s\n",[$points[j][0],&points[j][1],&points[j][2])]
  
  }
  
  }
  
但是,相同的一段程序,放在vc中编译后,在ug中却读不了点。甚至把输出格式改为%s,整个ug都会跳出,还请大家一起讨论。
int YIN_RP_apply_cb ( int dialog_id,
             void * client_data,
             UF_STYLER_item_value_type_p_t callback_data)
            int i_ret;
          char message[133];
    tag_t point;
    FILE *fp;
    int i;
    double points[10][3];
  
     /* Make sure User Function is available. */   
     if ( UF_initialize() != 0)  
          return ( UF_UI_CB_CONTINUE_DIALOG );
  
     /* ---- Enter your callback code here ----- */
   if((fp=fopen("C:\\points.txt","r"))==NULL)
  {
    UF_UI_open_listing_window();
   UF_UI_write_listing_window("cannot open the file");
  }
  else
  {  
   for(i=0;i<2;i++)
   {
  UF_UI_write_listing_window("can open the file");
  i_ret=fscanf(fp,"%s %s %s",[$points[0],&points[1],&points[2])]
   
   }
  }
  fclose(fp);
   UF_UI_open_listing_window();
    sprintf(message,"%f",points[0][0]);
    UF_UI_write_listing_window(message);
UF_terminate ();
return (UF_UI_CB_CONTINUE_DIALOG);  
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网 ( 粤ICP备2025491344号-1

GMT+8, 2025-11-15 05:11 , Processed in 0.064385 second(s), 12 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2025 www.iCAx.org

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