咖迷社区(CAXA数码大方)

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 15063|回复: 10

工艺图表2007二次开发问题

[复制链接]

2

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
发表于 2016-3-3 09:31:26 | 显示全部楼层 |阅读模式
有没有CAXA工艺图表2007二次开发的开发手册接口说明文档,有的话麻烦提供给我一份,感谢
回复

使用道具 举报

2

主题

4

帖子

0

积分

新手上路

Rank: 1

积分
0
 楼主| 发表于 2016-3-3 09:38:13 | 显示全部楼层
有没有做过CAXA工艺图表2007二次开发的,获取打开 工艺卡片中的数据,有的话麻烦提供思路或者接口文档说明,邮箱:362032664@qq.com ,感谢
回复 支持 反对

使用道具 举报

3

主题

2507

帖子

1万

积分

超级版主

Rank: 6Rank: 6

积分
14838
发表于 2016-3-4 09:36:54 | 显示全部楼层
没有针对工艺图表的二次开发接口,工艺图表中所带的二次开发全部是针对电子图板而言的。
但有一个变通的方法,随工艺图表版本发布时,总是同时发布提取组件和浏览控件
对于07版,是CAXAinfo和CAXAview;
对于2013版及之后,是CAXACappinfo组件和CAXACappview控件,位置在C:\Program Files\Common Files\CAXA Shared\CAXA Common Component。其中CAXACappinfo组件中接口有对工艺文件的打开、卡片的提取等功能。可以尝试通过此组件进行操作
回复 支持 反对

使用道具 举报

1

主题

12

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2016-12-10 23:30:01 | 显示全部楼层
非常希望得到楼上的帮助
回复 支持 反对

使用道具 举报

3

主题

2507

帖子

1万

积分

超级版主

Rank: 6Rank: 6

积分
14838
发表于 2016-12-12 12:59:01 | 显示全部楼层
首先需要CAXA 组件的许可,采用最新的CAXA组件版本(至少2009之后版本所带的组件)。
对于电子图板,可以参考组件自带的例子,已经很够了。
对于工艺给您几行代码可以做参考:
1.提取卡片表格内容
void CTestComDlg::OnButton2()
{
// TODO: Add your control notification handler code here
// 1.获取输入文件名,输出文件名,模板文件
bool bGetInputName = false;
bool bGetOutPutName = false;
bGetInputName=GetInputFieName(1);
if(!bGetInputName)
  return;
bGetOutPutName=GetOutPutName();
if(!bGetOutPutName)
  return;
//  2.输出到txt
HRESULT hRet;
CLSID clsid;
ICAPPInfo *pInterface=NULL;
ICAPPXmlInfo *pXmlInterface = NULL;
hRet=::CLSIDFromProgID(L"CAXAInfo.CAPPInfo",&clsid);
if(FAILED(hRet))
  return;
hRet=CoCreateInstance(clsid,NULL,CLSCTX_INPROC_SERVER,IID_ICAPPInfo,(void **)&pInterface);
if(FAILED(hRet))
  return;
CString CappFileName = sInputFileName;
CString TxtXmlFileName= sOutPutFileName;
CString sExtFilter = sFileExt;
        VARIANT_BOOL ret;
BSTR BstrEbFileName,BstrTxtXmlFileName;
int iCardMask = 1|2|4|8|16;

BstrEbFileName=CappFileName.AllocSysString();
BstrTxtXmlFileName=TxtXmlFileName.AllocSysString();
if(sExtFilter == "xml")
{
  pXmlInterface =(ICAPPXmlInfo*) pInterface;
  hRet=pXmlInterface->InfoToXmlFile(BstrEbFileName,iCardMask,BstrTxtXmlFileName,&ret);
                pXmlInterface = NULL;
}
else
{
  pXmlInterface =(ICAPPXmlInfo*) pInterface;
  hRet=pXmlInterface->InfoToTxtFile(BstrEbFileName,BstrTxtXmlFileName,&ret);
  pXmlInterface = NULL;
}

if(FAILED(hRet))
{
  ::SysFreeString(BstrEbFileName);
  ::SysFreeString(BstrTxtXmlFileName);
  HandError(pInterface,IID_ICAPPInfo);
  pInterface->Release();
  return;
}
::SysFreeString(BstrEbFileName);
::SysFreeString(BstrTxtXmlFileName);

pInterface->Release();
}

2.在单元格中反写字符串
void CTest10Dlg::OnAddtexttocappbutton1()
{
        // TODO: Add your control notification handler code here
        UpdateData(TRUE);
        CString sCellContent="";
        CString sTemp="";
        sTemp=m_sColName+"^"+m_sInsTxtToCxp;//+"&"+m_sInsTxtToCxp;
        CComBSTR bstPath,bstFilePath,bsCellContent;
        bstFilePath = m_sFilePath.AllocSysString();
    bsCellContent =sCellContent .AllocSysString();
        bstPath = m_sImgPath.AllocSysString();
        int iAlignMode = m_ComboxAlignMode.GetCurSel();
        int iFillInMode = m_CheckFillInMode.GetCheck();
        CComBSTR bstCardname,bstColumnName;
        bstCardname = m_sCardName.AllocSysString();
        bstColumnName = sTemp.AllocSysString();

        VARIANT_BOOL bRet;
        OnBtnOpenCxpfile();
        if (NULL != g_pICappInfo)
        {
                CComQIPtr<ICAPPXmlInfo> spCappFillInfo = g_pICappInfo;

                spCappFillInfo->WriteTxtInfoToCard(bstCardname,bstColumnName,m_iRowNum,&bRet);
        }
        OnBtnCloseCxpfile();
}

3.在单元格中反写图片
void CTest10Dlg::OnButtonAddimgtocxp()
{
        // TODO: Add your control notification handler code here
        UpdateData(TRUE);
        CComBSTR bstPath,bstFilePath;
        bstFilePath = m_sFilePath.AllocSysString();
        bstPath = m_sImgPath.AllocSysString();
        int iAlignMode = m_ComboxAlignMode.GetCurSel();
        int iFillInMode = m_CheckFillInMode.GetCheck();
        CComBSTR bstCardname,bstColumnName;
        bstCardname = m_sCardName.AllocSysString();
        bstColumnName = m_sColName.AllocSysString();

        VARIANT_BOOL bRet;
        OnBtnOpenCxpfile();
        if (NULL != g_pICappInfo)
        {
                CComQIPtr<ICAPPXmlInfo> spCappXmlInfo = g_pICappInfo;
                spCappXmlInfo->WriteImgToCard(bstPath,bstCardname,bstColumnName,m_iRowNum,iAlignMode,iFillInMode,&bRet);
        }
        OnBtnCloseCxpfile();
}
回复 支持 反对

使用道具 举报

1

主题

12

帖子

7

积分

新手上路

Rank: 1

积分
7
发表于 2016-12-17 11:39:43 | 显示全部楼层
caxainfo没有发现写反写的函数,再指点下
回复 支持 反对

使用道具 举报

3

主题

2507

帖子

1万

积分

超级版主

Rank: 6Rank: 6

积分
14838
发表于 2016-12-19 10:31:06 | 显示全部楼层
对于exb:
1.标题栏反填文字
void CTest10Dlg::OnBtnSetheaderinfo()
{
        CWaitCursor cursor;
       
        CComBSTR bsTemp;
        LONG lCount=0;
        VARIANT_BOOL ret;
        CComBSTR bsSeparat1 = _T("^");
        CComBSTR bsSeparat2 = _T("&");

        m_strHeaderInfo = _T("THAO^ABCD&CLDMA^零件&图样名称^ABCDEF&单位名称^CAXA&材料^水远镜&图纸编号^SPIDER-007&设计_人员编号^XAXAXA&设计_日期^ASASAS");
        bsTemp = m_strHeaderInfo;

        if (g_pIEbInfo != NULL)
        {
                HRESULT        hRet =  g_pIEbInfo->SetHeaderInfo(bsTemp, bsSeparat1, bsSeparat2, &ret);
        }
        else if (g_pIDwgInfo !=NULL)
        {
                HRESULT        hRet =  g_pIDwgInfo->SetHeaderInfo(bsTemp, bsSeparat1, bsSeparat2, &ret);
        }
       
}

2.明细表反填
void CTest10Dlg::OnBtnSetbominfo()
{
        CWaitCursor cursor;
        if (g_pIEbInfo == NULL || TRUE != m_bExbFlag)
        {
                return;
        }

        CComBSTR bsTemp;
        LONG lCount=0;
        VARIANT_BOOL ret;
        CComBSTR bsSeparat1 = _T("^");
        CComBSTR bsSeparat2 = _T("&");

        m_strBomInfo = _T("AA2^7-00-01^目镜^1^^^^kk^pp^pop&AA3^7-00-02^分化座^1^^^^^&AA4^7-00-03^长水泡^1^^^^^&AA5^7-00-04^调距筒^1^^^^^&AA6^7-00-05^调距^1^^^^^&6^7-00-06^调距弹簧座^1^^^^^&7^7-00-07^物镜^1^^^^^&8^9-03-29^瞄准尖^1^HPb59-1^^^^&9^9-07-09^望远镜镜筒^1^ZL401^^^^&10^9-02-12^定位镜^1^A3");
        bsTemp = m_strBomInfo;

        HRESULT        hRet = g_pIEbInfo->SetBomInfo(bsTemp, bsSeparat1, bsSeparat2, &ret);
       
}


3.标题栏反填图像
void CTest10Dlg::OnButtonAddimg()
{
        // TODO: Add your control notification handler code here
        UpdateData(TRUE);
        CComBSTR bstPath,bstPos;
        bstPos = m_sInsertPos.AllocSysString();
        bstPath = m_sImgPath.AllocSysString();
        int iAlignMode = m_ComboxAlignMode.GetCurSel();
        int iFillInMode = m_CheckFillInMode.GetCheck();
        if (NULL != g_pIEbInfo)
        {
                g_pIEbInfo->SetImageOnHeader(bstPath,bstPos,iAlignMode,(BOOL)iFillInMode);
        }
        else if (NULL != g_pIDwgInfo)
        {
                g_pIDwgInfo->SetImageOnHeader(bstPath,bstPos,iAlignMode,(BOOL)iFillInMode);
        }
}
回复 支持 反对

使用道具 举报

6

主题

76

帖子

235

积分

注册会员

Rank: 2

积分
235
发表于 2017-7-31 10:58:56 | 显示全部楼层
非常希望得到楼上的帮助
回复 支持 反对

使用道具 举报

6

主题

76

帖子

235

积分

注册会员

Rank: 2

积分
235
发表于 2017-8-1 11:22:31 | 显示全部楼层
能配合caxa电子图版使用干吗
回复 支持 反对

使用道具 举报

3

主题

2507

帖子

1万

积分

超级版主

Rank: 6Rank: 6

积分
14838
发表于 2017-8-2 08:21:57 | 显示全部楼层
电子图板的二次开发功能强大,在安装目录的CRX文件夹中有相关文档、帮助、例子等。甚至AutoCAD相关的二次开发例子可以尝试平移过来。
上面帖子,是针对工艺图表部分的二次开发功能没有对外开放,而采用组件对外提供的接口进行二次开发的方法。电子图板不需要这样绕,当然上述代码也适用于电子图板文件
回复 支持 反对

使用道具 举报

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

本版积分规则

手机版|小黑屋|咖迷社区(CAXA数码大方) ( 京ICP备05001831号-1 )

GMT+8, 2025-4-17 01:19 , Processed in 0.187279 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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