PROCEDURE Get3D_Size_All; LABEL 99,999; CONST vLayerType=154; {レイヤの種類} ltDesign=1; ltSheet=2; pPrimShowUnitMark=163; {単位記号の表示(主単位)} SV_Chunk=2; {メニュー 上} s3DSelect=-349; {ツール 3Dセレクションポインタ} vObjectIs3D=650; {ステータス 3Dオブジェクト} WS_name='3D_Size_List'; L_title='Layer'; C_title='Class'; N_title='Name'; W_title='Width'; H_title='Height'; D_title='Depth'; tGROUP=11; {グループ} tSYMBOL=15; {シンボル} tLAYERLINK=29; {リンク図形} VAR Show_UM :BOOLEAN; WS_hd,L_hd :HANDLE; i :INTEGER; PROCEDURE Load_3D_Size(WS_hd,TO_hd:HANDLE; G_sta:STRING; VAR i:INTEGER); VAR name :STRING; width,height,depth :REAL; c_CR,c_CC,t_RR,l_RC,t_RS,b_RR,r_RC,b_RS :INTEGER; BEGIN i:=i+1; IF GetType(TO_hd)=tSYMBOL THEN name:=GetSymName(TO_hd) ELSE BEGIN name:=GetName(TO_hd); IF ( name='' ) | ( name='none' ) THEN name:=Concat('Type=',GetType(TO_hd)); END; Get3DInfo(TO_hd,height,width,depth); Message(Concat(i,' 名前=',name,' 幅=',width,',高さ=',height,',奥行き=',depth)); InsertWSRows(WS_hd,1+i,1); { LoadCell(1+i,1,GetLName(GetLayer(TO_hd))); LoadCell(1+i,2,GetClass(TO_hd)); LoadCell(1+i,3,name); LoadCell(1+i,4,Num2StrF(width)); LoadCell(1+i,5,Num2StrF(height)); LoadCell(1+i,6,Num2StrF(depth)); } SetWSCellFormula(WS_hd,1+i,1,1+i,1,GetLName(GetLayer(TO_hd))); SetWSCellFormula(WS_hd,1+i,2,1+i,2,GetClass(TO_hd)); SetWSCellFormula(WS_hd,1+i,3,1+i,3,name); SetWSCellFormula(WS_hd,1+i,4,1+i,5,Num2StrF(width)); SetWSCellFormula(WS_hd,1+i,5,1+i,5,Num2StrF(height)); SetWSCellFormula(WS_hd,1+i,6,1+i,6,Num2StrF(depth)); END; PROCEDURE Get3D_Group(WS_hd,TO_hd:HANDLE; VAR i:INTEGER); CONST G_sta=' (In Group)'; VAR GO_hd :HANDLE; BEGIN GO_hd:=FInGroup(TO_hd); WHILE GO_hd<>NIL DO BEGIN IF GetObjectVariableBoolean(GO_hd,vObjectIs3D) THEN BEGIN CASE GetType(GO_hd) OF tGROUP: Get3D_Group(WS_hd,GO_hd,i); tLAYERLINK: {スキップ リンク図形}; tSYMBOL: Load_3D_Size(WS_hd,GO_hd,G_sta,i); OTHERWISE Load_3D_Size(WS_hd,GO_hd,G_sta,i); END; END; GO_hd:=NEXTObj(GO_hd); END; END; PROCEDURE Get3D_Object(WS_hd,L_hd:HANDLE; VAR i:INTEGER); VAR TO_hd :HANDLE; BEGIN TO_hd:=FInLayer(L_hd); IF TO_hd<>NIL THEN BEGIN WHILE TO_hd<>NIL DO BEGIN IF GetObjectVariableBoolean(TO_hd,vObjectIs3D) THEN BEGIN CASE GetType(TO_hd) OF tGROUP: Get3D_Group(WS_hd,TO_hd,i); tLAYERLINK: {スキップ リンク図形}; tSYMBOL: Load_3D_Size(WS_hd,TO_hd,'',i); OTHERWISE Load_3D_Size(WS_hd,TO_hd,'',i); END; END; TO_hd:=NextObj(TO_hd); END; END; END; BEGIN IF GetObjectVariableInt(ActLayer,vLayerType)=ltSheet THEN BEGIN AlrtDialog('このツールはシートレイヤでは使用できません'); GOTO 999; END; WS_hd:=CreateWS(WS_name,1,6); { TargetSprdSheet(WS_hd); SelectSS(WS_hd); LoadCell(1,1,L_title); LoadCell(1,2,C_title); LoadCell(1,3,N_title); LoadCell(1,4,W_title); LoadCell(1,5,H_title); LoadCell(1,6,D_title); } SetWSCellFormula(WS_hd,1,1,1,1,L_title); SetWSCellFormula(WS_hd,1,2,1,2,C_title); SetWSCellFormula(WS_hd,1,3,1,3,N_title); SetWSCellFormula(WS_hd,1,4,1,5,W_title); SetWSCellFormula(WS_hd,1,5,1,5,H_title); SetWSCellFormula(WS_hd,1,6,1,6,D_title); Show_UM:=GetPref(pPrimShowUnitMark); IF Show_UM THEN SetPref(pPrimShowUnitMark,FALSE); DoMenuTextByName('Standard Views',SV_Chunk); { SetTool(s3DSelect);} i:=0; L_hd:=FLayer; WHILE (L_hd <> NIL) DO BEGIN IF GetObjectVariableInt(L_hd,vLayerType)=ltDesign THEN Get3D_Object(WS_hd,L_hd,i); L_hd:=NextLayer(L_hd); END; DoMenuTextByName('Previous View',0); SetPref(pPrimShowUnitMark,Show_UM); AlrtDialog(Concat(i,'のオブジェクトのサイズを取得しました')); { SetWSSelection(WS_hd,1,1,1,1,0,1,1,0);} ShowWS(WS_hd,TRUE); 999:END; Run(Get3D_Size_All);