#include "hgimg.as" ; ; DXFファイルビューアー ; (HSP 2.5β8以降用) ; sdim fname,256 sdim optname,256 sdim s1,256 sdim s2,256 sdim work,256 sdim tools,256 if (hspstat&1) { ; debug中 work=curdir+"\\temp\\" tools=curdir+"\\" } else { ; exe時 work=exedir+"\\temp\\" tools=exedir+"\\" } ; fname = "none" fname = "ball.dxf" goto *boot *prinfo gsel 4 color 192,192,192 boxf 0,0,140,80 color 0,0,0 pos 8,8 mes fname mes ""+polys+"polys" return *cutfname ; fnameのpathを取り除く ; a=0:cuti=0 repeat peek a,fname,cnt if a=0 : break if a='\\' : cuti=cnt+1 loop strmid fname,fname,cuti,256 return *cutext ; s1の拡張子を取り除く ; a=0 strlen cuti,s1 if cuti=0 : return repeat cuti-- if cuti<0 : break peek a,s1,cuti if a='\\' : break if a='.' : poke s1,cuti,0 : break loop return *snapshot dialog "bmp",17,"BMPファイル" if stat=0 : goto *main s1=refstr gsel 0 gosub *cutext s1+=".bmp" bmpsave s1 goto *main1 *loadmx dialog "dxf",16,"dxfファイル" if stat=0 : goto *main fname=refstr goto *mload *allclr hgbye goto *boot2 *boot ; start ; ; screen 0,320,240,0 screen 0,640,480,0 cls 4 screen 4,140,200,8+4 title "mx viewer" cls 1 objmode 1 pos 4,50 objsize 130,24 button "カメラリセット",*creset button "dxf読み込み",*loadmx button "スナップショット",*snapshot button "シーン初期化",*allclr button "終了",*owari *boot2 gsel 0 hgini ;goto *main0 *mload ; model load ; s1=fname gosub *cutext dxfload s1 ; モデルファイル読み込み model = stat ; (変数statにモデルIDが返される) modelshade model,2 regobj a,model gsel 0 ;palcopy 3 gosub *cutfname *main0 ; main loop ; selcpos objsetf3 0.0f, 0.0f, 20.0f selcang objsetf3 0.0f, 0.0f, 0.0f *main1 gosub *prinfo gsel 0:gmode 0,320,240 pos 0,0 color 255,255,255 axis="" dim scan,32 *main repeat objscanf2 scan,320.0f,240.0f hgdraw:a=stat getsync t1,0 if a { pos 0,0 ; mes "ID="+scan.0+"/MD="+scan.1+"/"+scan.2 ; selcpos:objgetstr axis ; mes "P="+axis ; selcang:objgetstr axis ; mes "A="+axis } hgsync 20 title "t"+t1+"/"+a stick k,127 if k&64 { if k&16 : selcang : else : selang if k&1 : objaddf3 0.0f, -0.05f, 0.0f if k&4 : objaddf3 0.0f, 0.05f, 0.0f if k&2 : objaddf3 0.05f, 0.0f, 0.0f if k&8 : objaddf3 -0.05f, 0.0f, 0.0f } else { selcpos if k&1 : objaddf3 0.25f, 0.0f, 0.0f if k&4 : objaddf3 -0.25f, 0.0f, 0.0f if k&16 { if k&2 : objaddf3 0.0f, 0.0f, 0.25f if k&8 : objaddf3 0.0f, 0.0f, -0.25f } else { if k&2 : objaddf3 0.0f, 0.25f, 0.0f if k&8 : objaddf3 0.0f, -0.25f, 0.0f } } loop *creset selcpos objsetf3 0.0f, 0.0f, 20.0f selcang objsetf3 0.0f, 0.0f, 0.0f goto *main *owari end