2008/10/28 15:08

폴더에 있는 파일 알아오기

WIN32_FIND_DATA File_Data;    파일 정보를 구조체

HANDLE hFile;
LPCSTR path = "D:\\EXTool\\test\\ani\\*.woa";

 hFile = FindFirstFile( path, &File_Data);         //폴더에 있는 첫번째 파일 정보를 읽어 온다.

if(hFile == INVALID_HANDLE_VALUE)           //파일읽기 실패  
  return;

do{
  char* temp = new char[sizeof(File_Data.cFileName)];
  //wcscpy(temp,File_Data.cFileName);               //유니코드일경우
    strcpy(temp,File_Data.cFileName);                  
  m_FileName.push_back(temp);
 }while(FindNextFile(hFile,&File_Data));              //다음 파일 정보를 알아온다.

 FindClose(hFile);

Trackback 0 Comment 0
2008/10/28 11:20

List Control

리스트 컨트롤에는 디자인 방식은 큰 아이콘, 작은 아이콘, 리스트, 리포트가 있습니다.

리스트와 리포트에 차이는 리스트는 수평으로 아이템이 늘어나서 수평 스크롤이 생기고,

리포트는 수직이 스크롤이 생김니다.

리스트는 아이템을 바로 추가 해줄수있지만 리포트에서는 컬럼을 만든후에 아이템을 추가 해주어야 함니다.

컬럼 추가하기 -  m_ctrList.InsertColumn(0,_T("이름"),LVCFMT_LEFT,200);
아이템 추가하기 - m_ctrList.InsertItem(0,_T("aaa"));

선택된 아이템 인덱스 알아오기
POSITION pos = m_ctrList.GetFirstSelectedItemPosition();      //처음에 선택된 인덱스 1부터 시작
 while(pos)
{
          int nSelItem = m_ctrList.GetNextSelectedItem(pos);       
           //다음에 선택된 인덱스로 포인터를 돌려주고  그 전에 선택된 인덱스를 돌려준다. 0번부터 시작
}
Trackback 0 Comment 0
2008/10/24 12:54

맥스 SDK를 이용한 익스포팅1

노드 다루기

메인 익스포트 루틴(DoExport)

class MRCexport : public ScenExport {
public:
//지원하는 확장자 개수
            int ExtCount() { return 1;}

          //확장자("MRC")를 돌려준다.
         const TCHAR* Ext(int n) {retunr _T("MRC");}


        //MRC 파일로 익스포트 한다.
     int DoExport(const TCHAR* name, ExpInterface *ei, Interface* i,
                       BOOL suppressPrompts = FALSE, DWORD option=0);
};


맥스가 메인 익스포트 루틴에 넘겨준 Interface를 이용하면 현재의 장면 데이터에 접근할수 있다.
노드에 접근할때는 루트부터 검색하게 되지만 맥스안에서 선택한 객체라면 직접 적근 할수도 있다.

INode* pNode = i->GetSelNode(0);                     //0번째 노드를 찾는다.
INode* const pRoot = i->GetRootNode();             //루트노를 찾는다.

노드 탐색 방법
int count = pNode->NumberOfChidren();            //자식 개수를 알아온다.
INode* pChNode = pNode->GetChildNode(i);    //i 번째 자식

객체의 종류는 노드의 클래스 식별자로 알수있다.
- Class_ID 또는 SuperClassID
익스포트 플러그인에서 필요한 정보는 이 노드가 메시인지 뼈대인지를 알아내는것이다.

메시 알아내기
bool IsMesh(INdoe* pNode)
{
    if(pNode == NULL) retrun false;
    ObjectState os = pNode->EvalWorldState(0);
   if(os.obj->SuperClassID() == GEOMOBJECT_CLASS_ID)
        return turn;
   return false;
}

본 알아내기
bool IsBone(INode* pNode)
{
     if(pNode == NULL) return false;

    ObjectState os = pNode->EvalWorldstate(0);
     if(!os.obj)  return false;

   if(os.obj->ClassID()  == Class_ID(BONE_CLASS_ID,0))
        return true;
   if(os.obj->ClassID()  == Class_ID(DUMMY_CLASS_ID,0))
    return false;
   
  Control *cont = pNode->GetTMController();
    if(cont->ClassID() == BIPSLAVE_CONTROL_CLASS_ID ||   cont->ClassID == BIPBODY_CONTROL_ID)
      return true;

return false;
}

이런식으로 노드들을 탐색하고 어떤 객체인지 판정하다가 메시 노드를 만나면 메시에 정점 데이터를 얻어야 된다.








   
  





 
Trackback 0 Comment 0