需求:根據(jù)客戶選擇產(chǎn)品的可選配置即寡,繪制對(duì)應(yīng)的工程圖紙;
1.圖紙支持放大縮小不變形
2.繪制側(cè)面三個(gè)面(記 A硼啤、B、C 面)锋爪,來繪制平視圖
3.繪制俯視圖(記 D 面)丙曙,并且包含半弧形等形狀
4.工程圖紙中有長(zhǎng)寬高等標(biāo)注信息
5.圖形中設(shè)置的每個(gè)組件爸业,可能每款的參數(shù)都不一樣,最后的成品要?jiǎng)討B(tài)生成
6.最終SVG還要能集成到PDF中亏镰,并“自動(dòng)”橫豎屏布局等
7.添加扇形開門動(dòng)畫等功能(這個(gè)是我后來自己添加上去的)
圖中的所有的尺寸扯旷,都是可變的,線條都是繪制出來的索抓;
方案
接到需求的第一想法钧忽,就是使用SVG來實(shí)現(xiàn)成品的繪圖;
SVG(Scalable Vector Graphics)可縮放的矢量圖形逼肯,它是基于XML正好可以滿足需求耸黑;當(dāng)然H5操作的話,會(huì)更方便哦篮幢。
不過當(dāng)前項(xiàng)目大刊,我是完全用PHP繪制的!
問題點(diǎn)
1.對(duì)SVG的語法還是0基礎(chǔ)
2.時(shí)間緊迫三椿,加上其他業(yè)務(wù)功能的開發(fā)也就2個(gè)星期的時(shí)間(目前公司沒有測(cè)試缺菌,自己還要測(cè)試)
3.雖然覺得SVG方案可行,但是網(wǎng)上也沒有搜索到類似的PHP實(shí)現(xiàn)的案例搜锰,心理還是有點(diǎn)“慌”
4.后來發(fā)現(xiàn)伴郁,把SVG集成到PDF中,SVG的某些屬性失效了蛋叼,到時(shí)PDF中比較難看(比如 marker 標(biāo)簽焊傅,textPath 等,好幾處坑再等著狈涮,具體忘記了)
5.比較麻煩的點(diǎn)狐胎,還要了解產(chǎn)品的基本結(jié)構(gòu)
總結(jié)
使用PHP繪制工程圖,還是很有意思的歌馍,也很有挑戰(zhàn)的顽爹。
繪制復(fù)雜工程圖,不僅要畫出圖來骆姐,還要方便自己維護(hù)(我大概寫了40多個(gè)處理類,來分別處理不同的對(duì)象)捏题。
這里面設(shè)計(jì)到坐標(biāo)計(jì)算比較復(fù)雜玻褪,要有耐心了解產(chǎn)品結(jié)構(gòu)和靜心調(diào)試!