PROCEDURE Get3D_Size_All; LABEL 999; CONST vLayerType=154; {レイヤの種類} ltDesign=1; ltSheet=2; pPrimShowUnitMark=163; {単位記号の表示(主単位)} OK_Button = 1; Cancel_Button = 2; WS_name='3D_Size_List'; L_title='Layer'; C_title='Class'; N_title='Name'; W_title='Width'; H_title='Height'; D_title='Depth'; SV_Chunk=2; {メニュー 上} s3DSelect=-349; {ツール 3Dセレクションポインタ} VAR Show_UM :BOOLEAN; WS_hd,L_hd :HANDLE; {L_hd:Get3D_Object内ではキープされない} i :INTEGER; O_sta,T_sta,L_sta :INTEGER; FUNCTION Get3D_ObjectF(TO_hd:HANDLE):BOOLEAN; {TO_hd=NILでは実行されない} CONST vObjectIs3D=650;{ステータス 3Dオブジェクト} tGROUP=11; {グループ} tSYMBOL=15; {シンボル} tLAYERLINK=29; {リンク図形} PROCEDURE Load_3D_Size(TO_hd:HANDLE); 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; BEGIN IF GetLayer(TO_hd)<>L_hd THEN BEGIN ReDrawAll; L_hd:=GetLayer(TO_hd); { AlrtDialog(GetLName(L_hd));} END; IF GetObjectVariableBoolean(TO_hd,vObjectIs3D) THEN BEGIN CASE GetType(TO_hd) OF tGROUP,tLAYERLINK: {スキップ}; tSYMBOL: Load_3D_Size(TO_hd); OTHERWISE Load_3D_Size(TO_hd); END; END; Get3D_ObjectF:=FALSE; END; FUNCTION DIALOG_Selector(VAR O_sta,T_sta,L_sta:INTEGER):LONGINT; CONST iO_Gb=3; iT_Gb=4; iL_Gb=5; iO_Rb=10; O_num=4; iT_Rb=20; T_num=3; iL_Rb=30; L_num=5; VAR D_ID:LONGINT; PROCEDURE HandleEvents( VAR item : LONGINT; data : LONGINT); FUNCTION Select_State(num,Rb:INTEGER):INTEGER; LABEL 99; VAR i:INTEGER; BEGIN FOR i:=1 TO num DO IF ItemSel(Rb+i)=TRUE THEN GOTO 99; 99: CASE i OF 1:Select_State:=0; 2:Select_State:=1; 3:Select_State:=2; 4:Select_State:=4; 5:Select_State:=8; END; END; BEGIN CASE item OF SetupDialogC: BEGIN SetItem(iO_Rb+1,TRUE); SetItem(iT_Rb+2,TRUE); SetItem(iL_Rb+2,TRUE); END; OK_Button: BEGIN O_sta:=Select_State(O_num,iO_Rb); T_sta:=Select_State(T_num,iT_Rb); L_sta:=Select_State(L_num,iL_Rb); END; END; END; BEGIN D_ID := CreateLayout('処理オプションを選択',FALSE,'OK','キャンセル'); CreateGroupBox (D_ID,iO_Gb,'図形選択オプション',TRUE); CreateGroupBox (D_ID,iT_Gb,'検索オプション',TRUE); CreateGroupBox (D_ID,iL_Gb,'レイヤ選択オプション',TRUE); SetFirstLayoutItem (D_ID,iO_Gb); SetBelowItem (D_ID,iO_Gb,iT_Gb,0,0); SetBelowItem (D_ID,iT_Gb,iL_Gb,0,0); CreateRadioButton (D_ID,iO_Rb+1,'All'); CreateRadioButton (D_ID,iO_Rb+2,'Visible'); CreateRadioButton (D_ID,iO_Rb+3,'Selected'); CreateRadioButton (D_ID,iO_Rb+4,'Unlocked'); SetFirstGroupItem (D_ID,iO_Gb,iO_Rb+1); SetRightItem (D_ID,iO_Rb+1,iO_Rb+2,0,0); SetRightItem (D_ID,iO_Rb+2,iO_Rb+3,0,0); SetRightItem (D_ID,iO_Rb+3,iO_Rb+4,0,0); CreateRadioButton (D_ID,iT_Rb+1,'Shallow'); CreateRadioButton (D_ID,iT_Rb+2,'Groups'); CreateRadioButton (D_ID,iT_Rb+3,'Deep'); SetFirstGroupItem (D_ID,iT_Gb,iT_Rb+1); SetRightItem (D_ID,iT_Rb+1,iT_Rb+2,0,0); SetRightItem (D_ID,iT_Rb+2,iT_Rb+3,0,0); CreateRadioButton (D_ID,iL_Rb+1,'Current'); CreateRadioButton (D_ID,iL_Rb+2,'All'); CreateRadioButton (D_ID,iL_Rb+3,'Visible'); CreateRadioButton (D_ID,iL_Rb+4,'Editable'); CreateRadioButton (D_ID,iL_Rb+5,'Snappable'); SetFirstGroupItem (D_ID,iL_Gb,iL_Rb+1); SetRightItem (D_ID,iL_Rb+1,iL_Rb+2,0,0); SetRightItem (D_ID,iL_Rb+2,iL_Rb+3,0,0); SetRightItem (D_ID,iL_Rb+3,iL_Rb+4,0,0); SetRightItem (D_ID,iL_Rb+4,iL_Rb+5,0,0); IF VerifyLayout(D_ID) THEN DIALOG_Selector:=RunLayoutDialog(D_ID,HandleEvents); END; BEGIN IF GetObjectVariableInt(ActLayer,vLayerType)=ltSheet THEN BEGIN AlrtDialog('このツールはシートレイヤでは使用できません'); GOTO 999; END; IF DIALOG_Selector(O_sta,T_sta,L_sta)=OK_Button THEN BEGIN 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; ForEachObjectInLayer(Get3D_ObjectF,O_sta,T_sta,L_sta); 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); END; 999:END; Run(Get3D_Size_All);