全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:672
推到 Plurk!
推到 Facebook!

如何從Buffer取出座標的點資料

尚未結案
spaceworld1108
一般會員


發表:30
回覆:19
積分:9
註冊:2004-05-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-08-17 14:55:04 IP:140.118.xxx.xxx 未訂閱
不好意思請問各位大大 我是新手 有個問題 我使用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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-08-17 16:54:58 IP:219.132.xxx.xxx 未訂閱
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-08-18 18:47:16 IP:140.118.xxx.xxx 未訂閱
不好意思 StrPCopy(Buff,''\0''); <-好像會出現錯誤 fgets(Buff, 80, tran); Msg=Buff; if (Msg.SubString == "vertex ") <-好像會出現錯誤
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-08-18 21:15:52 IP:219.132.xxx.xxx 未訂閱
引言: 不好意思 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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-08-23 11:15:25 IP:140.118.xxx.xxx 未訂閱
謝謝您 我已經可以成功取得 不過請問一下 下面是我的程式 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

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-08-23 16:18:11 IP:219.132.xxx.xxx 未訂閱
引言: 謝謝您 我已經可以成功取得 不過請問一下 下面是我的程式 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
系統時間:2024-06-28 5:35:49
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!