亚洲成人久久久国产91共享福利|91麻豆产精品久久久爱色99中文字幕|日韩精品久久久久久日韩成人 中文字幕|武藤兰高清码av在线|中文字幕人妻一区二区三区久久|许木学长糖心vlog|99久久久成人国产精品|久久久 国产精品|亚洲精品福利电影|99久久久久久国产精品,国产av 中文字幕,91色婷婷综合久久久中文,裸交国产写真

3d打印色彩添加模塊軟件開發(fā)方案

3D打印軟件設(shè)計(jì)算法
2013
01/19
20:31
分享
評(píng)論
本帖最后由 香蕉 于 2013-1-19 20:35 編輯

需求分析
三維打印快速成型機(jī)成型彩色實(shí)體,重要技術(shù)之一是開發(fā)色彩添加軟件模塊,,它是處理 STL 文件數(shù)據(jù)、形成實(shí)體層片輪廓模型和給實(shí)體內(nèi)部添加可漸變色彩信息的主要工具,。根據(jù)成型機(jī)成型彩色實(shí)體的要求色彩添加應(yīng)具有兩大功能:
(1)STL 文件數(shù)據(jù)處理功能
① STL 文件的讀�,。�
② 三角面片拓?fù)浣Y(jié)構(gòu)建立,;
③ 實(shí)體分層算法設(shè)計(jì)和層片輪廓生成,。
(2)層片的色彩漸變插值著色功能
① 層片線性插值著色;
② 層片余弦插值著色,;
③ 層片調(diào) G 色余弦插值著色
④ 層片冪插值著色,。
色彩添加模塊需求分析結(jié)構(gòu)


功能實(shí)現(xiàn)及代碼編程
模塊軟件和硬件開發(fā)環(huán)境
(1)軟件環(huán)境
由于色彩添加模塊用到較為復(fù)雜的算法設(shè)計(jì)和圖形圖像的色彩處理功能,如需建立相關(guān)小三角形面片數(shù)據(jù)結(jié)構(gòu),、拓?fù)浣Y(jié)構(gòu)以及色彩漸變操作等,,因此模塊在軟件層面采用VC++6.0 和 OpenGL 開發(fā)。VC++6.0 是一種面向?qū)ο蟮拈_發(fā)語言,,以功能強(qiáng)大而著稱,,提供許多圖形控制和繪畫功能,能通過 Cclient 類和 CwindowDC 類直接訪問 windows設(shè)備環(huán)境,。對(duì)于顯示器和打印設(shè)備環(huán)境對(duì)象應(yīng)用程序框架會(huì)直接將句柄附在對(duì)象上,,即使對(duì)于其它設(shè)備環(huán)境如內(nèi)存設(shè)備環(huán)境也可將對(duì)象和句柄相聯(lián)系進(jìn)行相關(guān)操作。對(duì)于 GDI對(duì)象的操作如使用刷子填充顏色或使用調(diào)色板增強(qiáng)顏色的描繪能力等都可以使用 MFC庫中的類來訪問,。
OpenGL 也是一種面向?qū)ο蟮恼Z言,,它包含許多像素、圖形庫,、屬性,、幾何變換、三維圖形的控制等
,。這給三維圖形的制作和控制帶來了許多方便,。
(2)硬件環(huán)境
開發(fā)本模塊要求計(jì)算機(jī)能快速處理圖形圖像等數(shù)據(jù),以便具有良好的顯示效果,。開發(fā)和運(yùn)行本模塊的計(jì)算機(jī)硬件環(huán)境配置:
① CPU:intel core2 Duo T5750,,2.0GHz,;
② 內(nèi)存儲(chǔ)器:2GB 金士頓內(nèi)存,DDRⅡ  667MHz,;
③ 顯示卡:NVIDIAGeForce 8400M GS,;
④ 顯示器:DELL 14 英寸 LCD 彩色顯示器;
⑤ 硬盤驅(qū)動(dòng)器:SAMSUNG HM160HI 160GB,;
⑥ 網(wǎng)絡(luò)適配器:Broadcom NetLink(TM)Fast Ethernet 100M bps

模塊界面設(shè)計(jì)
軟件模塊界面設(shè)計(jì)如圖 所示,。使用菜單和工具按鈕實(shí)現(xiàn)模塊功能�,!癝TL 文件拾取”菜單項(xiàng)可實(shí)現(xiàn) STL 文件讀取,、拓?fù)浣Y(jié)構(gòu)的建立、生成層片數(shù)據(jù)等功能,,“色彩插值方法”菜單項(xiàng)可完成余弦插值法,、調(diào) G 色余弦插值法和冪插值法三種插值法的著色功能。
工具欄中的工具按鈕分別可實(shí)現(xiàn),,STL 文件讀取,、拓?fù)浣Y(jié)構(gòu)的建立、層片生成以及三種插值方法的著色功能等,。

類的定義和設(shè)計(jì)
(1)STL 文件數(shù)據(jù)處理類
STL 文件數(shù)據(jù)處理相關(guān)的類,,如表 。
表  STL 文件數(shù)據(jù)處理類的功能和說明
類名 類的功能和說明
CVertex 三角面片頂點(diǎn)類,,存儲(chǔ)三角面片不重復(fù)的頂點(diǎn)
CEdge 三角面片邊類,,以頂點(diǎn)為表頭存儲(chǔ)三角面片的邊
CBuildTopology 建立三角面片之間,點(diǎn)和線之間的拓?fù)浣Y(jié)構(gòu)
CBuildFigure 三角面片與平面求交,,且生成輪廓模型
類的定義:
Class CVertex
{
public:
int id; //該頂點(diǎn)的 id 號(hào)
float Vx,Vy,Vz; //Vx,、Vy、Vz 分別為該頂點(diǎn)的 x,、y、z 坐標(biāo)
CEdge *firstedge; //firstedge 為指標(biāo),,指向以該頂點(diǎn)為端點(diǎn)的第一條邊
}
Class CEdge
{
public:
int flag; //標(biāo)志域,,取 0 或 1
int sid,eid; //sid,eid 為該邊開始端點(diǎn)和結(jié)束端點(diǎn)的 id 值
int nsid,neid; //nsid,neid 為該邊后序邊的開始端點(diǎn)和結(jié)束端點(diǎn)的 id 值
CEdge *edgenext; //sidenext 為指標(biāo),指向下一條鄰接邊
};
Class CBuildTopology
{
......
OnOpenSTL(); //打開 STL 文件
OnReadVertex(CVertex *,int ); //讀取三角形頂點(diǎn)的個(gè)數(shù),,統(tǒng)計(jì)點(diǎn)的個(gè)數(shù)
OnBuildStruct(CVertex *,int ); //建立三角面片頂點(diǎn)和邊的拓?fù)浣Y(jié)構(gòu)
OnSortVertex(CVertex *); //三角形所有頂點(diǎn)排序,求 Vmin 和 Vmax
};
Class CBuildFigure
{
......
CBuildSlice(CVertex *,Vmin,Vmax); //生成層片
CViewSlice();
......
};
(2)層片的色彩漸變插值方法類
給實(shí)體層片添加漸變色彩相關(guān)的類
層片色彩漸變插值方法類的功能和說明
類名 類的功能和說明
CLineInterpolate 層片線性插值法著色
CCosInterpolate 層片余弦插值法著色
CCosGInterpolate 層片調(diào) G 色余弦插值法著色
CExpInterpolate 層片冪插值法著色
類的定義:
Class CLineInterpolate
{
......
CBrush brush;
......
OnFirstSlice(RGB(BYTE , BYTE , BYTE)); //定義第一層片色彩信息
OnEndSlice(RGB(BYTE,BYTE,BYTE)); //定義最后層片色彩信息
OnLInterpolate(RGB(BYTE,BYTE,BYTE); //為中間層片添加可漸變色彩信息
......
};
Class CCosInterpolate
{
......
CBrush brush;
......
OnFirstSlice(RGB(BYTE , BYTE , BYTE)); //定義第一層片色彩信息
OnEndSlice(RGB(BYTE,BYTE,BYTE)); //定義最后層片色彩信息
OnCInterpolate(RGB(BYTE,BYTE,BYTE); //為中間層片添加可漸變色彩信息
......
};
Class CCosGInterpolate
{
......
CBrush brush;
......
OnFirstSlice(RGB(BYTE , BYTE , BYTE)); //定義第一層片色彩信息
OnEndSlice(RGB(BYTE,BYTE,BYTE)); //定義最后層片色彩信息
OnCGInterpolate(RGB(BYTE,BYTE,BYTE); //為中間層片添加可漸變色彩信息
......
};
Class CExpInterpolate
{
......
CBrush brush;
......
OnFirstSlice(RGB(BYTE , BYTE , BYTE)); //定義第一層片色彩信息
OnEndSlice(RGB(BYTE,BYTE,BYTE)); //定義最后層片色彩信息
OnEInterpolate(RGB(BYTE,BYTE,BYTE); //為中間層片添加可漸變色彩信息
......
};
代碼編程與功能運(yùn)行
(1)STL 文件讀取
使用 UGNX 軟件或 CAD 制圖軟件制作三維實(shí)體圖,,制圖完成后通過菜單選項(xiàng)可形成擴(kuò)展名為“*.stl”文件。常用的三維造型軟件在 “文件”菜單中都有“導(dǎo)出”命令,,然后導(dǎo)出擴(kuò)展名為“*.stl”文件,,再將擴(kuò)展名“stl”手動(dòng)改為“txt”類型文件。若想了解文件格式,,可以使用記事本打開“*.txt”,, 這時(shí)可看到三角面片數(shù)據(jù),。
以球體 sphere.stl 為例,打開 STL 文件程序代碼:
void CBuildTopology::OnOpenstl()
try
{
file.Open("circle1.txt",CFile::modeRead);
this->GetDlgItem(IDC_OPENSTL)->EnableWindow(FALSE);
}
catch(CFileException *e)
{
TCHAR szBuf[256];
e->GetErrorMessage(szBuf,256,NULL);
MessageBox(szBuf,_T("Warning"));
e->Delete();
}
讀取 sphere.txt 文件數(shù)據(jù)的程序代碼:
void CBuildTopology::OnReadVertex(&nlink,36963)
{
int pos,id=0;
CString buf ;

上一篇:全彩色實(shí)體3d打印成型過程原理和設(shè)置
下一篇:MakerWare軟件下載與安裝使用
2#
2013-1-19 20:37:59 | 只看該作者
拓?fù)浣Y(jié)構(gòu)建立
可知,,使用快速分層算法建立三角面片頂點(diǎn)和邊的數(shù)據(jù)結(jié)構(gòu),。數(shù)據(jù)結(jié)構(gòu)建立完成后,對(duì)所有不重復(fù)的頂點(diǎn)重新排序,,則拓?fù)浣Y(jié)構(gòu)建立完成,。
建立拓?fù)浣Y(jié)構(gòu)主要程序代碼:
CBuildTopology::OnBuildStruct(&nlink,36963)
{ ......
file.ReadString(buf);
while(buf!="endsolid")
{
file.ReadString(buf);
if(buf.Find("vertex")+1)
{
for(int i=0;i<3;i++)
{
pos=buf.Find("vertex");
pos=pos+9;
buf=buf.Right(buf.GetLength()-pos);
tempx=buf.Left(14);
pos=buf.Find(" ")+1;
buf=buf.Right(buf.GetLength()-pos);
tempy=buf.Left(14);
pos=buf.Find(" ")+1;
buf=buf.Right(buf.GetLength()-pos);
tempz=buf;
if(i==0)
{
f1=id;
}
if(i==1)
{
f2=id;
}
if(i==2)
{
f3=id;
}
idflag=0;
or(int idtemp=0;idtemp {
if((tempx==nlink[idtemp].Vx)&&(tempy==nlink[idtemp].Vy)&&(tempz==nlink[idtemp]
.Vz))
{
idflag=1;
}
}
if(idflag==0)
{
nlink[id].Vx=tempx;
nlink[id].Vy=tempy;
nlink[id].Vz=tempz;
id++;
}
Cedge *edgei=new Cedge;
edgei->flag=0;
edgei->sid=f1;
edgei->eid=f2;
edgei->nsid=f2;
edgei->neid=f3;
nlink[id].fedg=&edgelink;
......
}
建立拓?fù)浣Y(jié)構(gòu)對(duì)話框

(3)線性插值法
在中式為關(guān)于 i 變量的一次線性函數(shù),直接以此式實(shí)現(xiàn)色彩的漸變
主要程序代碼:
CLineInterpolate::OnPaint()
{
......
for(int i=0;i {
......
brushi.CreateSolidBrush(RGB(ri,gi,bi));
CBrush *pOldBrush=dc.SelectObject(&brushi);
Slice(i);
dc.SelectObject(pOldBrush);
brushi.DeleteObject();
......
}
......
}


(4)余弦插值法
在 4.3.3 節(jié)中式(4.25)為關(guān)于 i 變量的余弦插值法函數(shù),,以此式實(shí)現(xiàn)色彩的漸變主
要程序代碼:
CCosInterpolate::OnPaint()
{
......
for(int i=0;i {
......
brushi.CreateSolidBrush(RGB(ri,gi,bi));
CBrush *pOldBrush=dc.SelectObject(&brushi);
Slice(i);
dc.SelectObject(pOldBrush);
brushi.DeleteObject();
......
}
......
}
色彩添加模塊的開發(fā)過程做了詳細(xì)的說明,。根據(jù)需求分析設(shè)定軟件實(shí)現(xiàn)的功能,一完成 STL 文件數(shù)據(jù)處理,,二為實(shí)體層片添加可漸變色彩信息,;采用 VC++6.0 和OpenGL 開發(fā)工具編程實(shí)現(xiàn)算法,并給出了主要類的定義和算法實(shí)現(xiàn)方法,,根據(jù)算法繪制色彩漸變效果的圖形,。

推動(dòng)3D打印

關(guān)注南極熊

通知

聯(lián)系QQ/微信9:00-16:00

392908259

南極熊3D打印網(wǎng)

致力于推動(dòng)3D打印產(chǎn)業(yè)發(fā)展

快速回復(fù) 返回列表 返回頂部