iCAx开思工具箱

标题: UG二次开发实现从数据库中读取保存的prt,UG自动加载 [打印本页]

作者: skystar2001    时间: 2005-6-8 19:17
标题: UG二次开发实现从数据库中读取保存的prt,UG自动加载
下面是主要代码~
/* TODO: Add your application code here */
  // 定义字符串,保存路径信息
  CString pathname;
  // 数据库连接初始化
  ADOConn m_AdoConn;
  m_AdoConn.OnInitDBConnect();
  // SQL语句,查询数据库
  _bstr_t vSQL;
  vSQL = "select * from mdo where name='D:\\Program Files\\Microsoft Visual Studio .NET 2003\\MyWorkSpace\\SaveIntoDB\\Debug\\aa.prt'";
  _RecordsetPtr m_pRecord;
  m_pRecord = m_AdoConn.GetRecordSet(vSQL);
  // 得到image字段的实际大小
  long IDataSize = m_pRecord->GetFields()->GetItem("image")->ActualSize;
  // 定义缓冲区,把数据库中的image字段的二进制字符保存到缓冲区内
  char* m_pBuffer;
  if(IDataSize>0)
  {
    _variant_t varBLOB;
    varBLOB = m_pRecord->GetFields()->GetItem("image")->GetChunk(IDataSize);
    if(varBLOB.vt == (VT_ARRAY|VT_UI1))
    {
      if(m_pBuffer = new char[IDataSize+1])
      {
        char* pBuf = NULL;
        SafeArrayAccessData(varBLOB.parray, (void**)[$pBuf)]
        memcpy(m_pBuffer, pBuf, IDataSize);
        SafeArrayUnaccessData(varBLOB.parray);
      }
      // 将缓冲区的内容写入文件
      pathname = "D:\\bb.prt";
      CFile file;
      if(!file.Open(pathname, CFile::modeCreate|CFile::modeWrite))
      {
        CString msg;
        msg = "无法打开prt文件!";
        AfxMessageBox(msg);
        return;
      }
      file.Write(m_pBuffer, IDataSize);
      file.Close();
    }
    // 提示消息,告知用户已成功将数据库中prt部件取出,并保存到本地
    CString msg;
    msg = CString("您已经成功将部件文件从资源共享数据库中取出,并保存在本地目录")+ pathname + CString("下!");
    AfxMessageBox(msg);
  }
  // UG加载取出的prt部件
  UF_PART_load_status_t error_status;
  tag_t part;
  char * part_name = "D:\\bb.prt";
  UF_PART_open(part_name, [$part, &error_status)]
  UF_PART_set_display_part(part);
  
/* Terminate the API environment */
UF_CALL(UF_terminate());
}
作者: ZHOUN    时间: 2011-5-23 10:53
看不懂,顶顶
作者: jooter    时间: 2011-6-9 19:57
纯顶了,看不懂啊




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