iCAx开思工具箱

标题: 【原创】给mizzle的例子--Treeview与特征遍历结合 [打印本页]

作者: pinkwall    时间: 2004-3-11 02:48
标题: 【原创】给mizzle的例子--Treeview与特征遍历结合
刚做的一个Treeview与特征遍历结合
  
用MFC和open Api简单模仿了一下UG本身的feature列表
  
运行时,须打开一个模型文件
作者: pinkwall    时间: 2004-3-11 02:49
选择Tree view 中的feature 图形区中的相应模型高亮显示
  
UG feature列表中的相应项也同时高亮,
  
效果图
作者: tsingtsang    时间: 2004-3-11 08:06
呵呵   顶一下   继续
作者: taiga2001    时间: 2004-3-11 09:23
qiang!!!
作者: mizzle    时间: 2004-3-11 21:52
谢谢谢谢了,真是好人呢,从你这里学了不少东西,希望大虾们都能发扬这种风格!
作者: bunny    时间: 2004-3-11 21:54
给pinkwall加分吧……3Q
作者: zhenglight    时间: 2004-3-12 11:45
给pinkwall加分吧
作者: fourwood    时间: 2004-3-13 11:11
强烈建议给pinkwall加分!可惜俺不能下载代码,郁闷!拜托可否把源程序贴出来。
作者: pinkwall    时间: 2004-3-13 17:31
MFC DLL程序框架,无ug styler对话框,只贴重要代码段
  
TreeView.cpp
  
/////////////////////////////////////////////////////////////////////////////
// The one and only CTreeViewApp object
  
CTreeViewApp theApp;
  
extern "C" __declspec(dllexport) void ufusr(char *param, int *retcode, int rlen)
{
  
  int  response   = 0;
                int  error_code = 0;
  tag_t part;
  char  part_name[256 + 1];  
    
  UF_initialize();
  
  part = UF_PART_ask_display_part( );
  
  if(part != NULL_TAG)
  {
  UF_CALL(UF_PART_ask_part_name(part, part_name));
    
  AFX_MANAGE_STATE(AfxGetStaticModuleState());
  CTreeViewDlg dlg;
  dlg.m_PartName = part_name;
  dlg.m_PartTag = part;
  dlg.DoModal();  
                }
  else
  {
  uc1601("请打开或新建一个prt文件!",1);
  }
  UF_terminate();
}
作者: pinkwall    时间: 2004-3-13 17:37
TreeViewDlg.cpp
  
BOOL CTreeViewDlg::OnInitDialog()  
{
    CDialog::OnInitDialog();
    int feature_count = 0;
    int type;
    tag_t feature;
    char *feature_name = NULL;
    int   dialog_response = 0;
  
    /* 设定TreeView控件的显示参数 */
   DWORD dwStyle = GetWindowLong(m_ctrTree.m_hWnd,GWL_STYLE);
   dwStyle |= TVS_HASBUTTONS | TVS_HASLINES | TVS_LINESATROOT;
   SetWindowLong(m_ctrTree.m_hWnd,GWL_STYLE,dwStyle);
  
   if (!UF_CALL(UF_initialize()))
  {
      /* 加入TreeView的根节点 */  
     m_hRoot = m_ctrTree.InsertItem("features");
     /* 定义遍历和显示的为当前part文件中的特征feature,同样可以定义遍历实体body等 */
     type = UF_feature_type;  
     feature = NULL_TAG;
    /* 传入一个NULL_TAG提示系统开始遍历 */
    UF_CALL(UF_OBJ_cycle_objs_in_part(m_PartTag, type, [$feature))]
    /* 遍历part中的所有特征feature,直到最后一个 */
   while ( feature != NULL_TAG )
   {
      /* 纪录特征个数 */
      feature_count++;
  
     if(feature != NULL_TAG)
    {
        /* 在TreeView控件中加入遍历到的特征名称,作为子节点 */
       UF_CALL(UF_MODL_ask_feat_name(feature,[$feature_name))]
       HTREEITEM hChild = m_ctrTree.InsertItem(feature_name,m_hRoot);
    }
    /* 遍历语句 */
    UF_CALL(UF_OBJ_cycle_objs_in_part(m_PartTag, type, [$feature))]
   }
  
     UF_CALL(UF_terminate());
}
  
    m_strFeatNum.Format("%d",feature_count);
  
    UpdateData(FALSE);  
    /* 打开TreeView的所有节点 */
   m_ctrTree.Expand(m_hRoot,TVE_EXPAND);
  
   return TRUE;  // return TRUE unless you set the focus to a control
        // EXCEPTION: OCX Property Pages should return FALSE
}
  
。。。。。。
  
void CTreeViewDlg::OnSelchangedTree2(NMHDR* pNMHDR, LRESULT* pResult)  
{
    NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
    TVITEM item = pNMTreeView->itemNew;
    char name[30+1];
    tag_t  set;
    CString ItemText;
   // TODO: Add your control notification handler code here
    if(item.hItem == m_hRoot)
  return;
    if (!UF_CALL(UF_initialize()))
    {
        UF_DISP_refresh();
       /* 取得当前所选TreeView控件的子节点 */
        HTREEITEM hTreeCurrent = m_ctrTree.GetSelectedItem();
        ItemText = m_ctrTree.GetItemText(hTreeCurrent);
        strcpy(name,ItemText.GetBuffer(ItemText.GetLength()));  
        /* 从名称得到feature的tag */
       UF_CALL(UF_MODL_ask_set_from_name (name, [$set))]  
       if(m_highlight != NULL_TAG)
      {
          UF_CALL(UF_DISP_set_highlight (m_highlight, 0));
      }
      /* 高亮显示所选feature,与UG的Feature列表相关联 */
     UF_CALL(UF_DISP_set_highlight (set, 1));
     m_highlight = set;
     UF_CALL(UF_terminate());
    }
     *pResult = 0;
}
  
。。。。
作者: lknoodle    时间: 2004-3-14 10:41
强烈要求给pinkwall加分!!!
作者: imyourkobe    时间: 2007-8-6 10:24
需要什么设置啊    could not create output directory 'F:\UG_App'  出错啊
作者: icaxhjy88    时间: 2007-8-10 19:59
开思网上现在这种人已不多了,强烈要求给pinkwall加分
作者: 3328    时间: 2008-9-29 19:52
02x 终于找到了




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