iCAx开思工具箱

标题: 【求助】如何根据象素位置确定该位置处的OBJECT_ID? [打印本页]

作者: lijz    时间: 2003-11-10 22:17
标题: 【求助】如何根据象素位置确定该位置处的OBJECT_ID?
假设UG模型显示在屏幕上,现在我想根据屏幕上的象素位置来判断该象素属于模型中的哪个OBJECT,比如说我给出象素的屏幕坐标(200,300),现在要知道这个位置处的Object_ID,应该怎样实现?请高手指点,不胜感激。
作者: lijz    时间: 2003-11-14 11:07
好几天了没人回答,斑竹帮帮忙啦!
作者: zzz    时间: 2003-11-14 11:58
不会
作者: kangarooxy    时间: 2003-11-14 19:06
通常是遍历所有对象,如果对象的数量很多,通常采用hash table存储实体的ID和对象的指针。我虽然没有这方面的实际编程,但是一般来讲,CAD软件的开发都是遵循这样的准则,你可以这样试一试:
CYourClass:: OnMouseMove()
{
      for( int i=0;i<Object.Count();i++)
     {
     if (Object. IsHighlighted())
     StatusBar.WriteInfo(Object.Type.ToString + Object.Name.ToString());
    }
}
以上伪代码需要在UG open李找到对应的函数,替换之!
希望能帮到你!
作者: lijz    时间: 2003-11-18 10:53
非常感谢!我试试。
作者: lijz    时间: 2003-11-24 22:57
后来想想,上面的方法可能还是不行。我的想法大致是:
for(int i=0; i<winWidth; i++)
{
    for(int j=0; j<winHeight; j++)
    {
        ID=GetObjectIDbyPixel(pixel[j]);
        UsingThisID(ID);
    }
}
按照这样,可能无法实现判断Object.IsHighlighted()。不知该如何实现函数GetObjectIDbyPixel(pixel[j])?
作者: pinkwall    时间: 2003-11-25 01:49
想做拾取??? 这么复杂,呵呵
作者: kangarooxy    时间: 2003-11-25 23:44
lijz wrote:
后来想想,上面的方法可能还是不行。我的想法大致是:  
  for(int i=0; i<winWidth; i++)  
  {  
      for(int j=0; j<winHeight; j++)  
      {  
          ID=GetObjectIDbyPixel(pixel[j]);  
          UsingThisID(ID);  
      }  
  }  
  按照这样,可能无法实现判断Object.IsHighlighted()。不知该如何实现函数GetObjectIDbyPixel(pixel[j])?

--------------------------------------------------------------
GetObjectIDbyPixel(pixel[j]); 这个函数好像没选对,我觉得
这样效率太慢,UG中一定有相应的函数,仔细找找
作者: lijz    时间: 2003-11-26 22:54
怎么也找不到。因为我的程序要一个象素一个象素地处理,可能得用这种方法。
不知道UG中有没有函数能根据object_id确定出这个object在屏幕上显示着的象素,最好还能给出object上每个象素所在位置的三维坐标和法矢量。
最终要实现的功能是:在程序中给定任意一点的屏幕位置坐标,在状态栏显示这一象素点所属的object_id以及模型坐标和法矢量。大家帮忙提些思路吧。
作者: lijz    时间: 2003-12-1 23:15
帮帮我啦!




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