Creo二次开发:添加注释

    xiaoxiao2026-05-17  9

    在页面空白处放置一个注释,注释可以在界面中定义。

    //创建注释 int UserNoteCreate(ProDrawing drawing,ProLine notestr,ProVector pos,ProModelitem modelitem,ProSelection* view_sel) {     ProError err;     ProDtlnotetext text;     ProDtlnoteline line;     ProDtlnotedata ndata;     ProView view;     ProDtlattach attach;     ProDtlnote note;     ProSelection csys_sel;     int pid;     err=ProWindowCurrentGet(&pid);     //为注释文本数据分配内存     err=ProDtlnotetextAlloc(&text);     if (err!=PRO_TK_NO_ERROR)         return err;     //将注释文本存入text中     err=ProDtlnotetextStringSet(text,notestr);     if (err!=PRO_TK_NO_ERROR)         return err;     //Allocate memory for the note text line data. User must free memory by ProDtlnotelineFree()     err=ProDtlnotelineAlloc(&line);     if (err!=PRO_TK_NO_ERROR)         return err;     //Add text to the note text line data.     err=ProDtlnotelineTextAdd(line,text);     if (err!=PRO_TK_NO_ERROR)         return err;     //Allocate and initialize memory for note data. User must release memory by ProDtlnotedataFree.     err=ProDtlnotedataAlloc(drawing,&ndata);     if (err!=PRO_TK_NO_ERROR)         return err;     //将一行文本加入到ndata中     err=ProDtlnotedataLineAdd(ndata,line);     if (err!=PRO_TK_NO_ERROR)         return err;     //分配和选择性的填充一个选择对象     err=ProSelectionAlloc(NULL,&modelitem,&csys_sel);     if (err!=PRO_TK_NO_ERROR)         return err;     //获得所选对象的视图句柄     err=ProSelectionViewGet(view_sel[0],&view);     if (err!=PRO_TK_NO_ERROR)         return err;     err=ProSelectionViewSet(view,&csys_sel);     if (err!=PRO_TK_NO_ERROR)         return err;     //Allocate and initialize the memory for a detail attachment. User must release the memory by ProDtlattachFree.     err=ProDtlattachAlloc(PRO_DTLATTACHTYPE_FREE,view,pos,NULL,&attach);     if (err!=PRO_TK_NO_ERROR)         return err;     //将特定的注释依附到我们所选择的对象上     err=ProDtlnotedataAttachmentSet(ndata,attach);     if (err!=PRO_TK_NO_ERROR)         return err;     //创建一个注释     err=ProDtlnoteCreate(drawing,NULL,ndata,&note);     if (err!=PRO_TK_NO_ERROR)         return err;     //显示创建的注释     err=ProDtlnoteShow(&note);     if (err!=PRO_TK_NO_ERROR)         return err;     err=ProDtlnotedataFree(ndata);     err=ProDtlattachFree(attach);     err=ProSelectionFree(&csys_sel);     err=ProDtlnotelineFree(line);     err=ProDtlnotetextFree(text);     //激活当前窗口     ProWindowActivate(pid);     return 0; } void CPart2DDlg::OnBnClickedBtnNoteAdd() {     // TODO: 在此添加控件通知处理程序代码     UpdateData(TRUE);     ProError err;     ProDrawing drawing=NULL;     ProLine notestr;     ProMouseButton button_pressed;     ProVector position;     ProModelitem modelitem;     ProSelection* sel;     int n_sel;     //获取当前模型     err=ProMdlCurrentGet((ProMdl*)&drawing);     if (err!=PRO_TK_NO_ERROR)         return;     //所需添加的注释内容     wcscpy_s(notestr, m_strNoteText);     //获取用户单击鼠标后获得的坐标位置(即注释将要放置的位置)     if (ProMousePickGet(PRO_ANY_BUTTON,&button_pressed,position)!=PRO_TK_NO_ERROR)         return;     //选择一个对象(注释所依附的对象)     err=ProSelect((char*)"feature",1,NULL,NULL,NULL,NULL,&sel,&n_sel);     if (err!=PRO_TK_NO_ERROR||n_sel<1)         return;     //从所选对象中获取模型项     err=ProSelectionModelitemGet(sel[0],&modelitem);     if (err!=PRO_TK_NO_ERROR)         return;     UserNoteCreate(drawing,notestr,position,modelitem,sel); }

    运行结果:

    转载请注明原文地址: https://ju.6miu.com/read-1309773.html
    最新回复(0)