iCAx开思工具箱
标题:
【求助】UG二次开发的高手来看一下,麻烦了
[打印本页]
作者:
moshaocong
时间:
2005-1-7 17:28
标题:
【求助】UG二次开发的高手来看一下,麻烦了
我要用VC++的MFC编写个应用程序,功能是导入UG的DXF文件转换成DWG文件,我想问问大家MFC(exe)能不能做
其中要用到UG的方法等,有哪些方法函数,比如UG中的打开文件,另存为等,怎么个用法,求高手指导一下,小弟这里先谢谢了
作者:
zhjb113
时间:
2005-1-7 20:10
从DXF到DWG?
为什么不用Autocad阿,
另外DXF文件不是UG的文件格式,它是中性的文件格式,或者说是Autodesk提出的DWG的中性格式,和UG没有关系!
作者:
Patton_icax
时间:
2005-1-8 10:59
MFC基本上不能实现UG的DXF文件转换成DWG文件,除非你有文件的格式接口不太现实),调用UGAPI可以做,但是比较麻烦.
作者:
moshaocong
时间:
2005-1-10 09:05
先在这里谢谢~~~~~~~~~因为客户的需要,要在UG中运用DXF和DWG而且要批量转换,分别要在CAD,UG,PreE上实现,请问知道UG的对象函数吗??
比如UG中的打开,另存为等方法是什么函数,返回格式是什么?
先谢谢了
作者:
moshaocong
时间:
2005-1-11 09:17
急啊~~~~~~~~~~~~~
作者:
wgwang
时间:
2005-1-11 10:00
translator里不是有这个工具吗,干嘛还要自己弄?
作者:
moshaocong
时间:
2005-1-13 14:34
因为工作的需要,要自己做一个,因为客户买的是正版软件,里面没有转换工具的,她们不用盗版的,所以必须我们公司提供
小样都看贴不回帖
作者:
zzz
时间:
2005-1-18 22:08
moshaocong wrote:
因为工作的需要,要自己做一个,因为客户买的是正版软件,里面没有转换工具的,她们不用盗版的,所以必须我们公司提供
小样都看贴不回帖
几个问题:
不知你做的工具是要在用户的机子上用,还是在你们公司的机子上用。如果是在客户的机子用,客户买了UFUN的许可证了吗?如果没有的话,开发了也没用。因为没有许可证的话,用UFUN开发的东西,不能在用户的机子上运行。
买UFUN的许可证,应该比转换模块的许可证贵吧。
你自己的机子用的是正板UG吗?以前用D版UG生成的part在正版UG上打开会出问题,不知现在是不是还这样,好像没改吧
作者:
moshaocong
时间:
2005-1-19 09:07
客户买的是正版的,我开发是用的盗版的^_^ 二次开发啦,哪有成本再去买正版软件,又不是专做UG
现在差不多了
如果我的东西在一个没有UG的机器上运行,让他自己检测跳出“该机器没有安装UG”这个入口在哪里找,UF_terminate();后设置吗?
作者:
zzz
时间:
2005-1-19 11:51
你没看懂我的问题吧?如果用户没有购买二次开发的许可证,你开发的东西他们不能运行。
作者:
moshaocong
时间:
2005-1-21 09:04
这当然是购买了许可证的,不是卖给用户,是卖给公司
UF_PART_open(const char * part_name
tag_t * part
UF_PART_load_status_t * error_status );
请问一下,这个函数中第二,第三个参数是什么参数啊?
我指定打开单个文件,用这个判断
if(part==NULL_TAG)
{
AfxMessageBox("a");
}else{
AfxMessageBox("b");
}
再UF_PART_save_as(".....");一个文件
发现一个问题,在不同的文件夹中,会打印出相同的b值
在相同的文件夹中,会打印出先b后a
所以不知道这两个参数到底是什么意思
是函数体错还是方法错误啊?
作者:
moshaocong
时间:
2005-1-21 09:06
补充一下
上面连续指定打开2个文件
和批量打开差不多
批量打开在相同文件夹下的文件转换会打印先b后面都是a的情况
作者:
moshaocong
时间:
2005-1-25 11:30
UF_part_open()函数只能用于打开部件文件
UF_part_save as()用于保存
为什么我open函数第一次可以打开dxf文件,转换格式成功
打开第二个文件就不能打开了呢
open函数不能用于dxf文件打开,索性都不能打开
为什么第一个可以打开的呢
我实行批量转换的时候,有是会转换成功就是说文件都能打开
可是大部分时候都不能打开,会报错,open返回值是3420007
有人知道这是怎么回事吗?
作者:
zzz
时间:
2005-1-25 13:54
如果可以的话,把你的代码传上来看,一部分也行,看得更清楚。
根据你上面讲的来看,问题应该是你的part已经打开了,第二次打开不行。
作者:
moshaocong
时间:
2005-1-25 15:18
void ProgressShow::CreateFolder(CString cstrSFolder, CString cstrDFolder)
{
structFPath sFPath;
CString cstrTemp;
CString sFileName,dFileName,sFile;
UF_PART_load_status_t error_status;
int unit=1;
tag_t part1;
int scope=1;
int mode=1;
CArray<structFPath,structFPath[$> myArray]
CString sPath=cstrSFolder;
CFileFind tempFind; //声明一个CFileFind类变量,以用来搜索
char tempFileFind[200]; //用于定义搜索格式
sprintf(tempFileFind,"%s\\*.*",cstrSFolder);//匹配格式为*.*,即该目录下的所有文件
BOOL IsFinded=(BOOL)tempFind.FindFile(tempFileFind);//查找第一个文件
while(IsFinded)
{
IsFinded=(BOOL)tempFind.FindNextFile();//递归搜索其他的文件
if(!tempFind.IsDots())//如果不是"."目录
{
cstrSFolder=tempFind.GetFilePath();
cstrTemp=cstrDFolder + "\\" + tempFind.GetFileTitle();
if (tempFind.IsDirectory())
{
LPTSTR lprCopyTo=new char[255];
lstrcpy(lprCopyTo,cstrTemp);//目标文件夹
sPath=lprCopyTo;
CreateDirectory(lprCopyTo,NULL);
sFPath.SPath=cstrSFolder;
sFPath.DPath=cstrTemp;
myArray.Add(sFPath);
}
else
{
CString FileTitle=tempFind.GetFileTitle();
sFileName=tempFind.GetFilePath();
sFile=tempFind.GetFileName();
dFileName=cstrDFolder + "\\" + sFile;
if (equalDxf(sFileName))
{
int err=UF_PART_open(sFileName,[$part1,&error_status)]
if(err==0)
{
UF_PART_save_as(dFileName);
}
else
{
DealError(CurPath,sFileName);
}
CString tempFile=FileTitle+"_dxf.prt";
CString filePath=sPath+"\\"+tempFile;
deleteFile(filePath);
CString fileLog=sPath+"\\"+FileTitle+".log";
deleteFile(fileLog);
CString fileSummary=sPath+"\\"+FileTitle+"_dxf_summary.log";
deleteFile(fileSummary);
iCurFileNum=iCurFileNum+1;
m_CurFile.SetWindowText(sFileName);
DealProgress();
}
}
}
CheckMessageQueue();
}
tempFind.Close();
CheckMessageQueue();
while (myArray.GetSize()!=0)
{
sFPath=myArray.GetAt(0);
myArray.RemoveAt(0,1);
CreateFolder(sFPath.SPath,sFPath.DPath);
}
}
这是我的一个按钮转换函数,涉及UG的是从open以后开始的
作者:
moshaocong
时间:
2005-1-25 15:20
为什么只能打开一个DXF文件,而对于prt文件都可以打开,是不是open只对prt文件有用因为是ug自身的函数.
不过我open也打开了一个dxf文件了呀,为什么别的打开不了了啊
作者:
moshaocong
时间:
2005-1-25 15:26
初始化UF_initialize();和结束UF_terminate();都是分别做在应用程序启动和关闭的地方的
作者:
zzz
时间:
2005-1-25 21:44
既然你有错误号,可以用UF_get_fail_message()来查看一下错误的含义嘛。
作者:
moshaocong
时间:
2005-1-26 08:41
含义就是dxfdwg错,晕
欢迎光临 iCAx开思工具箱 (https://t.icax.org/)
Powered by Discuz! X3.3