如何從Buffer取出座標的點資料 |
尚未結案
|
spaceworld1108
一般會員 發表:30 回覆:19 積分:9 註冊:2004-05-14 發送簡訊給我 |
不好意思請問各位大大 我是新手 有個問題
我使用fgets(Buff,20,tran); 這是Buff[]裡面的資料:
olid 222.stl
facet normal 0 0 -1
outer loop
vertex 10 8.66025 -15
vertex 0 -8.66025 -15
vertex -10 8.66025 -15
endloop
endfacet
我現在想得到vertex 後面3個點座標並將這3個座標分別放入,3維陣列中[x][y][z] 要如何做ㄋ? 請問課位大大
發表人 - spaceworld1108 於 2004/08/17 15:23:26
|
andychang1690
資深會員 發表:20 回覆:694 積分:442 註冊:2003-03-14 發送簡訊給我 |
spaceworld1108: TStrings* Str = new TStringList(); char Buff[80]; AnsiString Msg; fseek(tran, 0, SEEK_SET); while (!feof(tran)) { StrPCopy(Buff,'\0'); fgets(Buff, 80, tran); Msg=Buff; if (Msg.SubString == "vertex ") { Str->CommaText=Msg; // data is "vertex 10 8.66025 -15" // OK Str->Strings[0] is "vertex" // Str->Strings[1] is "10" // Str->Strings[2] is "8.66025" // Str->Strings[3] is "-15" // 數值轉換自行處理 } } delete Str; 請參考!Andy Chang
------
Andy Chang |
spaceworld1108
一般會員 發表:30 回覆:19 積分:9 註冊:2004-05-14 發送簡訊給我 |
|
andychang1690
資深會員 發表:20 回覆:694 積分:442 註冊:2003-03-14 發送簡訊給我 |
引言: 不好意思 StrPCopy(Buff,''\0''); <-好像會出現錯誤 fgets(Buff, 80, tran); Msg=Buff; if (Msg.SubString == "vertex ") <-好像會出現錯誤StrPCopy(Buff,''\0''); 請注意是'\0'而不是''\0'' if (Msg.SubString(1,7) == "vertex ") 或改成 if (Msg.Pos("vertex ") != 0) 都可以 請參考! Andy Chang 發表人 - andychang1690 於 2004/08/18 21:17:57
------
Andy Chang |
spaceworld1108
一般會員 發表:30 回覆:19 積分:9 註冊:2004-05-14 發送簡訊給我 |
謝謝您 我已經可以成功取得
不過請問一下 下面是我的程式
for(;;) <----迴圈
{
if(!feof(tran))
{
fgets(Buff, 1000, tran);
strSource=Buff;
FindTitle = "vertex";
TitlePos = strSource.Pos(FindTitle);
if (strSource.SubString(TitlePos,FindTitle.Length()) == "vertex")
{
strList->CommaText=strSource.SubString(TitlePos FindTitle.Length(),strSource.Length()-TitlePos);
(TitlePos FindTitle.Length(),strSource.Length()-TitlePos);
a[2] = StrToFloat(strList->Strings[1]);
Edit1->Text=a[2]; (<---雖然我可以擷取到點但是只能夠取得第一個vertex 後面的三個點,卻不能取到下一個(後面)vertex的點,上面我已經有採用迴圈搜尋)
} 不好意思在麻煩你一下
|
andychang1690
資深會員 發表:20 回覆:694 積分:442 註冊:2003-03-14 發送簡訊給我 |
引言: 謝謝您 我已經可以成功取得 不過請問一下 下面是我的程式 for(;;) <----迴圈 { if(!feof(tran)) { StrPCopy(Buff,'\0'); fgets(Buff, 1000, tran); strSource=Buff; FindTitle = "vertex"; TitlePos = strSource.Pos(FindTitle); if (strSource.SubString(TitlePos,FindTitle.Length()) == "vertex") { strList->CommaText=strSource.SubString(TitlePos FindTitle.Length(),strSource.Length()-TitlePos); (TitlePos FindTitle.Length(),strSource.Length()-TitlePos); a[2] = StrToFloat(strList->Strings[1]); Edit1->Text=a[2]; (<---雖然我可以擷取到點但是只能夠取得第一個vertex 後面的三個點,卻不能取到下一個(後面)vertex的點,上面我已經有採用迴圈搜尋) } 不好意思在麻煩你一下請注意上面紅字部分把Buff清空! 你把程式寫得便複雜化了! strList->CommaText=strSource; // 字串strSource裡凡是有空白或逗點 // 會自動分離 請參考! Andy Chang
------
Andy Chang |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |