彩神iv

咖迷社區(CAXA彩神iv)

 找回密碼
 立即注冊

QQ登錄

隻需一步,快速開始

查看: 12311|回複: 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

主題

2503

帖子

1萬

積分

超級版主

Rank: 8Rank: 8

積分
14703
板凳
發表於 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

主題

2503

帖子

1萬

積分

超級版主

Rank: 8Rank: 8

積分
14703
5#
發表於 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
6#
發表於 2016-12-17 11:39:43 | 隻看該作者
caxainfo沒有發現寫反寫的函數,再指點下
回複 支持 反對

使用道具 舉報

3

主題

2503

帖子

1萬

積分

超級版主

Rank: 8Rank: 8

積分
14703
7#
發表於 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
8#
發表於 2017-7-31 10:58:56 | 隻看該作者
非常希望得到樓上的幫助
vanchen
回複 支持 反對

使用道具 舉報

6

主題

76

帖子

235

積分

注冊會員

Rank: 2

積分
235
9#
發表於 2017-8-1 11:22:31 | 隻看該作者
能配合caxa電子圖版使用幹嗎
vanchen
回複 支持 反對

使用道具 舉報

3

主題

2503

帖子

1萬

積分

超級版主

Rank: 8Rank: 8

積分
14703
10#
發表於 2017-8-2 08:21:57 | 隻看該作者
電子圖板的二次開發功能強大,在安裝目錄的CRX文件夾中有相關文檔、幫助、例子等。甚至AutoCAD相關的二次開發例子可以嚐試平移過來。
上麵帖子,是針對工藝圖表部分的二次開發功能沒有對外開放,而采用組件對外提供的接口進行二次開發的方法。電子圖板不需要這樣繞,當然上述代碼也適用於電子圖板文件
回複 支持 反對

使用道具 舉報

您需要登錄後才可以回帖 登錄 | 立即注冊

本版積分規則

QQ|Archiver|手機版|小黑屋|咖迷社區(CAXA彩神iv) ( 京ICP備37209418號-1 )

GMT+8, 2024-6-29 04:09 , Processed in 0.140460 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回複 返回頂部 返回列表
彩神iv