COTSSample.cs 119 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Drawing;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. using static OTSDataType.otsdataconst;
  8. using OTSModelSharp;
  9. using System.Xml;
  10. using OTSModelSharp.ResourceManage;
  11. using static OTSModelSharp.ResourceManage.ResourceID;
  12. namespace OTSDataType
  13. {
  14. public enum OTS_ITEM_TYPES
  15. {
  16. INVALID = -1,
  17. BOOL = 0,
  18. INT = 1,
  19. DOUBLE = 2,
  20. STRING = 3,
  21. COMBO = 4,
  22. TIME = 5,
  23. TIME_SPAN = 6,
  24. FILE_LIST = 7
  25. }
  26. public class COTSSample : ISlo
  27. {
  28. const string NOT_APPLIED = "N/A";
  29. private string m_strName;
  30. private string m_strHoleName;
  31. private bool m_bParamLock;
  32. // Measuren Switch
  33. private bool m_bSwitch;
  34. // system STD Switch
  35. private bool m_bSysSTDSwitch;
  36. private CSampleParam m_poMsrParams;
  37. private CDomain m_poMsrArea;
  38. private CSEMDataMsr m_poSEMDataMsr;
  39. private CMsrSampleStatus m_Status;
  40. private CMsrDisplayResults m_poMsrResults;
  41. private MEMBRANE_TYPE m_membraneType;
  42. private List<COTSFieldData> m_listFieldData;
  43. private List<CPropItemGrp> m_listPropItemGrp;
  44. public COTSSample()
  45. {
  46. // initialization
  47. Init();
  48. }
  49. void Init()
  50. {
  51. m_strName = "";
  52. m_strHoleName = "";
  53. m_bParamLock = false;
  54. m_bSwitch = true;
  55. m_bSysSTDSwitch = true;
  56. m_poMsrParams = new CSampleParam();
  57. m_poMsrArea = new CDomain();
  58. m_poSEMDataMsr = new CSEMDataMsr();
  59. m_Status = new CMsrSampleStatus();
  60. m_poMsrResults = new CMsrDisplayResults();
  61. m_membraneType = MEMBRANE_TYPE.Abrasive;
  62. m_listFieldData = new List<COTSFieldData>();
  63. m_listPropItemGrp = new List<CPropItemGrp>();
  64. }
  65. //设置工作样品的属性值
  66. public bool SetParamVal(OTS_SAMPLE_PROP_GRID_ITEMS ItemId, OTS_ITEM_TYPES ValType, object objVal)
  67. {
  68. bool bSetFalg = false;
  69. switch (ValType)
  70. {
  71. case OTS_ITEM_TYPES.BOOL:
  72. {
  73. //设置工作样品值失败
  74. if (!SetPropboolData(ItemId, (bool)objVal))
  75. {
  76. bSetFalg = false;
  77. }
  78. else
  79. {
  80. bSetFalg = true;
  81. }
  82. }
  83. break;
  84. case OTS_ITEM_TYPES.INT:
  85. {
  86. //设置工作样品值失败
  87. if (!SetPropIntData(ItemId, (int)objVal))
  88. {
  89. bSetFalg = false;
  90. }
  91. else
  92. {
  93. bSetFalg = true;
  94. }
  95. }
  96. break;
  97. case OTS_ITEM_TYPES.DOUBLE:
  98. {
  99. //设置工作样品值失败
  100. if (!SetPropdoubleData(ItemId, Convert.ToDouble(objVal)))
  101. {
  102. bSetFalg = false;
  103. }
  104. else
  105. {
  106. bSetFalg = true;
  107. }
  108. }
  109. break;
  110. case OTS_ITEM_TYPES.STRING:
  111. {
  112. //设置工作样品值失败
  113. if (!SetPropStringData(ItemId, (string)objVal))
  114. {
  115. bSetFalg = false;
  116. }
  117. else
  118. {
  119. bSetFalg = true;
  120. }
  121. }
  122. break;
  123. case OTS_ITEM_TYPES.COMBO:
  124. {
  125. //设置工作样品值失败
  126. if (!SetPropComboData(ItemId, (int)objVal))
  127. {
  128. bSetFalg = false;
  129. }
  130. else
  131. {
  132. bSetFalg = true;
  133. }
  134. }
  135. break;
  136. case OTS_ITEM_TYPES.TIME:
  137. {
  138. //设置工作样品值失败
  139. if (!SetPropTimeData(ItemId, (DateTime)objVal))
  140. {
  141. bSetFalg = false;
  142. }
  143. else
  144. {
  145. bSetFalg = true;
  146. }
  147. }
  148. break;
  149. case OTS_ITEM_TYPES.TIME_SPAN:
  150. {
  151. //设置工作样品值失败
  152. if (!SetPropTimeSpanData(ItemId, (TimeSpan)objVal))
  153. {
  154. bSetFalg = false;
  155. }
  156. else
  157. {
  158. bSetFalg = true;
  159. }
  160. }
  161. break;
  162. case OTS_ITEM_TYPES.FILE_LIST:
  163. {
  164. //设置工作样品值失败
  165. if (!SetPropFileListData(ItemId, (string)objVal))
  166. {
  167. bSetFalg = false;
  168. }
  169. else
  170. {
  171. bSetFalg = true;
  172. }
  173. }
  174. break;
  175. default:
  176. bSetFalg = false;
  177. break;
  178. }
  179. return bSetFalg;
  180. }
  181. public bool SetPropboolData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, bool a_bValue)
  182. {
  183. switch (a_nId)
  184. {
  185. case OTS_SAMPLE_PROP_GRID_ITEMS.SWITCH:
  186. {
  187. m_bSwitch = a_bValue;
  188. }
  189. break;
  190. case OTS_SAMPLE_PROP_GRID_ITEMS.SYS_STD_SWITCH:
  191. {
  192. m_bSysSTDSwitch = a_bValue;
  193. }
  194. break;
  195. case OTS_SAMPLE_PROP_GRID_ITEMS.USING_XRAY:
  196. {
  197. //int m_UsingXray = a_bValue ? 1 : 0;
  198. m_poMsrParams.GetXRayParam().SetUsingXray(a_bValue);
  199. }
  200. break;
  201. default:
  202. {
  203. // something wrong, return false
  204. return false;
  205. }
  206. }
  207. // failed, return false
  208. return true;
  209. }
  210. public CDomain GetMsrArea() { return m_poMsrArea; }
  211. public bool SetPropdoubleData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, double a_dValue)
  212. {
  213. switch (a_nId)
  214. {
  215. case OTS_SAMPLE_PROP_GRID_ITEMS.MAGNIFICATION:
  216. {
  217. // value validation
  218. if (a_dValue < MAGNIFICATION_MIN || a_dValue > MAGNIFICATION_MAX)
  219. {
  220. return false;
  221. }
  222. m_poSEMDataMsr.SetMagnification(a_dValue);
  223. }
  224. break;
  225. case OTS_SAMPLE_PROP_GRID_ITEMS.PIXEL_SIZE:
  226. {
  227. if (a_dValue < PIXELSIZE_MIN || a_dValue > PIXELSIZE_MAX)
  228. {
  229. return false;
  230. }
  231. //m_poMsrParams.GetImageScanParam().SetImagePixelSize((OTS_FIVE_TIES_OPTIONS)(int)a_dValue);
  232. int nScanFieldSize = CalculateScanFieldSize(a_dValue);
  233. m_poSEMDataMsr.SetScanFieldSize(nScanFieldSize);
  234. }
  235. break;
  236. case OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MIN:
  237. {
  238. if (PARTICLE_AREA_MIN > a_dValue || a_dValue > PARTICLE_AREA_MAX)
  239. {
  240. return false;
  241. }
  242. CDoubleRange oIncArea = new CDoubleRange();
  243. double start = m_poMsrParams.GetImageProcessParam().GetIncAreaRange().GetStart();
  244. double end = m_poMsrParams.GetImageProcessParam().GetIncAreaRange().GetEnd();
  245. oIncArea.SetStart(a_dValue);
  246. oIncArea.SetEnd(end);
  247. m_poMsrParams.GetImageProcessParam().SetIncAreaRange(oIncArea);
  248. }
  249. break;
  250. case OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MAX:
  251. {
  252. if (PARTICLE_AREA_MIN > a_dValue || a_dValue > PARTICLE_AREA_MAX)
  253. {
  254. return false;
  255. }
  256. CDoubleRange oIncArea = new CDoubleRange();
  257. double start = m_poMsrParams.GetImageProcessParam().GetIncAreaRange().GetStart();
  258. double end = m_poMsrParams.GetImageProcessParam().GetIncAreaRange().GetEnd();
  259. oIncArea.SetStart(start);
  260. oIncArea.SetEnd(a_dValue);
  261. m_poMsrParams.GetImageProcessParam().SetIncAreaRange(oIncArea);
  262. }
  263. break;
  264. case OTS_SAMPLE_PROP_GRID_ITEMS.XRAY_QUANTIFY_MINSIZE:
  265. {
  266. if (0 >= a_dValue)
  267. {
  268. return false;
  269. }
  270. m_poMsrParams.GetXRayParam().SetQuantifyMinSize(a_dValue);
  271. }
  272. break;
  273. // read only property, tread as default.
  274. case OTS_SAMPLE_PROP_GRID_ITEMS.WORKING_DISTANCE:
  275. case OTS_SAMPLE_PROP_GRID_ITEMS.RATIO:
  276. case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_TO_MEASURE_AREA:
  277. case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_AREA:
  278. case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_PARTICLE_AREA:
  279. default:
  280. {
  281. // something wrong, return false
  282. return false;
  283. }
  284. //break;
  285. }
  286. // ok, return true
  287. return true;
  288. }
  289. // duplication
  290. public void Duplicate(COTSSample a_oSource)
  291. {
  292. // copy data over
  293. m_strName = a_oSource.m_strName;
  294. m_strHoleName = a_oSource.m_strHoleName;
  295. m_bParamLock = a_oSource.m_bParamLock;
  296. m_bSwitch = a_oSource.m_bSwitch;
  297. m_bSysSTDSwitch = a_oSource.m_bSysSTDSwitch;
  298. m_poMsrParams = new CSampleParam(a_oSource.m_poMsrParams);
  299. m_poMsrArea = new CDomain(a_oSource.m_poMsrArea);
  300. m_poSEMDataMsr = new CSEMDataMsr(a_oSource.m_poSEMDataMsr);
  301. m_Status = new CMsrSampleStatus(a_oSource.m_Status);
  302. m_poMsrResults = new CMsrDisplayResults(a_oSource.m_poMsrResults);
  303. m_membraneType = a_oSource.m_membraneType;
  304. }
  305. // calculate scan field size
  306. public int CalculateScanFieldSize(double a_dPixelSize)
  307. {
  308. // scan field size
  309. int nScanFiledSize = 0;
  310. // make sure SEM is valid
  311. if (!m_poSEMDataMsr.Equals(new CSEMDataMsr()))
  312. {
  313. // get image size
  314. OTS_IMAGE_RESULOTION_OPTIONS nImageSizeId = m_poMsrParams.GetImageScanParam().GetImageResulotion();
  315. long nResulotionId = RESOLUTION_ID_FIRST_TIE + (long)nImageSizeId;
  316. int nImageSize = RESOLUTION_VALUE[nResulotionId].Width;
  317. // calculate scan field size
  318. nScanFiledSize = (int)((a_dPixelSize * (double)nImageSize) + 0.5);
  319. }
  320. // return scan field size
  321. return nScanFiledSize;
  322. }
  323. public bool GetBSESize(out int a_nWidth, out int a_nHeight)
  324. {
  325. // scan parameters
  326. CSampleParam pMsrParam = GetMsrParams();
  327. COTSImgScanPrm pImgScanParam = pMsrParam.GetImageScanParam();
  328. // get image size
  329. OTS_IMAGE_RESULOTION_OPTIONS nImageSizeId = pImgScanParam.GetImageResulotion();
  330. int nResulotionId = RESOLUTION_ID_FIRST_TIE + (int)nImageSizeId;
  331. Size sizePixelImage = RESOLUTION_VALUE[nResulotionId];
  332. // get scan field size
  333. a_nWidth = sizePixelImage.Width;
  334. a_nHeight = sizePixelImage.Height;
  335. return true;
  336. }
  337. // name
  338. public string GetName() { return m_strName; }
  339. public void SetName(string a_strName) { m_strName = a_strName; }
  340. // sample hole
  341. public string GetSampleHoleName() { return m_strHoleName; }
  342. public void SetSampleHoleName(string a_strHoleName) { m_strHoleName = a_strHoleName; }
  343. // param modify lock
  344. public bool GetParamLock() { return m_bParamLock; }
  345. public void SetParamLock(bool a_bParamLock) { m_bParamLock = a_bParamLock; }
  346. // switch
  347. public bool GetSwitch() { return m_bSwitch; }
  348. public void SetSwitch(bool a_bSwitch) { m_bSwitch = a_bSwitch; }
  349. // STDSwitch
  350. public bool IfUsingSysSTD() { return m_bSysSTDSwitch; }
  351. public void SetSysSTDSwitch(bool a_bSysSTDSwitch) { m_bSysSTDSwitch = a_bSysSTDSwitch; }
  352. // measurement parameter
  353. public CSampleParam GetMsrParams() { return m_poMsrParams; }
  354. public void SetMsrParams(CSampleParam a_poMsrParams)
  355. {
  356. m_poMsrParams = a_poMsrParams;
  357. }
  358. // measurement area
  359. public void SetMsrArea(CDomain a_poMsrArea)
  360. {
  361. m_poMsrArea = a_poMsrArea;
  362. }
  363. // SEM data (measurement)
  364. public CSEMDataMsr GetSEMDataMsr() { return m_poSEMDataMsr; }
  365. public void SetSEMDataMsr(CSEMDataMsr a_poSEMDataMsr)
  366. {
  367. m_poSEMDataMsr = a_poSEMDataMsr;
  368. }
  369. // measure status
  370. public CMsrSampleStatus GetMsrStatus() { return m_Status; }
  371. public void SetMsrStatus(CMsrSampleStatus a_poMsrStatus)
  372. {
  373. m_Status = a_poMsrStatus;
  374. }
  375. // fields
  376. public List<COTSFieldData> GetFieldsData() { return m_listFieldData; }
  377. public void SetFieldsData(List<COTSFieldData> a_listFieldData)
  378. {
  379. m_listFieldData = a_listFieldData;
  380. }
  381. public void AddFieldData(COTSFieldData f)
  382. {
  383. m_listFieldData.Add(f);
  384. }
  385. // measure results
  386. public CMsrDisplayResults GetMsrResults() { return m_poMsrResults; }
  387. public void SetMsrResults(CMsrDisplayResults a_poMsrResults)
  388. {
  389. m_poMsrResults = a_poMsrResults;
  390. }
  391. // has measure results test
  392. public bool HasMeasureResult()
  393. {
  394. // result items is not empty
  395. bool bHasResult = (m_poMsrResults.GetResultItems().Count != 0);
  396. return bHasResult;
  397. }
  398. public MEMBRANE_TYPE GetMembraneType() { return m_membraneType; }
  399. public void SetMembraneType(MEMBRANE_TYPE val) { m_membraneType = val; }
  400. // BOOL data (1)
  401. public bool GetPropBOOLData(int a_nId, out bool a_bValue)
  402. {
  403. switch (a_nId)
  404. {
  405. case (int)OTS_SAMPLE_PROP_GRID_ITEMS.SWITCH:
  406. {
  407. a_bValue = m_bSwitch;
  408. }
  409. break;
  410. case (int)OTS_SAMPLE_PROP_GRID_ITEMS.SYS_STD_SWITCH:
  411. {
  412. a_bValue = m_bSysSTDSwitch;
  413. }
  414. break;
  415. case (int)OTS_SAMPLE_PROP_GRID_ITEMS.USING_XRAY:
  416. {
  417. a_bValue = m_poMsrParams.GetXRayParam().GetUsingXray() ;
  418. }
  419. break;
  420. default:
  421. {
  422. a_bValue = false;
  423. // something wrong, return FALSE
  424. return false;
  425. }
  426. break;
  427. }
  428. // ok, return TRUE
  429. return true;
  430. }
  431. public bool GetPropIntData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, out int a_nValue)
  432. {
  433. switch (a_nId)
  434. {
  435. case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_PARTICLE:
  436. {
  437. a_nValue = m_poMsrParams.GetImageScanParam().GetStopParamParticles();
  438. }
  439. break;
  440. case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_FIELD:
  441. {
  442. a_nValue = m_poMsrParams.GetImageScanParam().GetStopParamFields();
  443. }
  444. break;
  445. case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_TIME:
  446. {
  447. a_nValue = m_poMsrParams.GetImageScanParam().GetStopParamMeasTime();
  448. }
  449. break;
  450. case OTS_SAMPLE_PROP_GRID_ITEMS.BG_GRAY_MIN:
  451. {
  452. a_nValue = m_poMsrParams.GetImageProcessParam().GetBGGray().GetStart();
  453. }
  454. break;
  455. case OTS_SAMPLE_PROP_GRID_ITEMS.BG_GRAY_MAX:
  456. {
  457. a_nValue = m_poMsrParams.GetImageProcessParam().GetBGGray().GetEnd();
  458. }
  459. break;
  460. case OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_GRAY_MIN:
  461. {
  462. a_nValue = m_poMsrParams.GetImageProcessParam().GetParticleGray().GetStart();
  463. }
  464. break;
  465. case OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_GRAY_MAX:
  466. {
  467. a_nValue = m_poMsrParams.GetImageProcessParam().GetParticleGray().GetEnd();
  468. }
  469. break;
  470. case OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_COUNTS:
  471. {
  472. a_nValue = m_poMsrParams.GetXRayParam().GetAnalyExpCount();
  473. }
  474. break;
  475. case OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_RESOLUTION:
  476. {
  477. a_nValue = (int)m_poMsrParams.GetXRayParam().GetMidAnalyAQTime();
  478. }
  479. break;
  480. case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_FIELDS:
  481. {
  482. a_nValue = m_poSEMDataMsr.GetTotalFields();
  483. }
  484. break;
  485. case OTS_SAMPLE_PROP_GRID_ITEMS.COMPLETED_FIELDS:
  486. {
  487. a_nValue = m_Status.GetCompletedFields();
  488. }
  489. break;
  490. case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_PARTICLE:
  491. {
  492. a_nValue = (int)m_poMsrResults.GetTotalParticleNumber();
  493. }
  494. break;
  495. case OTS_SAMPLE_PROP_GRID_ITEMS.FIELDSTOP_AREAPERCENTAGE:
  496. {
  497. a_nValue = m_poMsrParams.GetImageScanParam().GetFieldAreaPercentage();
  498. }
  499. break;
  500. case OTS_SAMPLE_PROP_GRID_ITEMS.FIELDSTOP_LARGEPARTICLES:
  501. {
  502. a_nValue = m_poMsrParams.GetImageScanParam().GetFieldLargeParticleNum();
  503. }
  504. break;
  505. case OTS_SAMPLE_PROP_GRID_ITEMS.FIELDSTOP_LARGEPARTICLESPERCENTAGE:
  506. {
  507. a_nValue = m_poMsrParams.GetImageScanParam().GetFieldLargeParticlesPercentage();
  508. }
  509. break;
  510. case OTS_SAMPLE_PROP_GRID_ITEMS.FIELDSTOP_SMALLPARTICLES:
  511. {
  512. a_nValue = m_poMsrParams.GetImageScanParam().GetFieldSmallParticleNum();
  513. }
  514. break;
  515. case OTS_SAMPLE_PROP_GRID_ITEMS.FIELDSTOP_SMALLPARTICLESPERCENTAGE:
  516. {
  517. a_nValue = m_poMsrParams.GetImageScanParam().GetFieldSmallParticlesPercentage();
  518. }
  519. break;
  520. case OTS_SAMPLE_PROP_GRID_ITEMS.XRAY_FASTTIME:
  521. {
  522. a_nValue = m_poMsrParams.GetXRayParam().GetFastXrayTime();
  523. }
  524. break;
  525. case OTS_SAMPLE_PROP_GRID_ITEMS.XrayLimit:
  526. {
  527. a_nValue = m_poMsrParams.GetXRayParam().GetXrayLimit();
  528. }
  529. break;
  530. default:
  531. {
  532. // something wrong, return false
  533. a_nValue = -1;
  534. return false;
  535. }
  536. }
  537. // ok, return true
  538. return true;
  539. }
  540. public bool SetPropFileListData(OTS_SAMPLE_PROP_GRID_ITEMS itemId, string objVal)
  541. {
  542. throw new NotImplementedException();
  543. }
  544. public bool SetPropIntData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, int a_nValue)
  545. {
  546. switch (a_nId)
  547. {
  548. case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_PARTICLE:
  549. {
  550. // value validation
  551. if (STOP_PARAM_PARTICLE_MIN >= a_nValue || a_nValue > STOP_PARAM_PARTICLE_MAX)
  552. {
  553. return false;
  554. }
  555. if (m_poMsrParams.GetImageScanParam().GetStopParamParticles() != a_nValue)
  556. {
  557. m_poMsrParams.GetImageScanParam().SetStopParamParticles(a_nValue);
  558. m_Status.SetStatus(OTS_MSR_SAMPLE_STATUS.UNMEASURED);
  559. }
  560. }
  561. break;
  562. case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_FIELD:
  563. {
  564. if (STOP_PARAM_FIELD_MIN >= a_nValue || a_nValue > STOP_PARAM_FIELD_MAX)
  565. {
  566. return false;
  567. }
  568. if (m_poMsrParams.GetImageScanParam().GetStopParamFields() != a_nValue)
  569. {
  570. m_poMsrParams.GetImageScanParam().SetStopParamFields(a_nValue);
  571. m_Status.SetStatus(OTS_MSR_SAMPLE_STATUS.UNMEASURED);
  572. }
  573. }
  574. break;
  575. case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_TIME:
  576. {
  577. if (STOP_PARAM_MSR_TINE_MIN >= a_nValue || a_nValue > STOP_PARAM_MSR_TINE_MAX)
  578. {
  579. return false;
  580. }
  581. if (m_poMsrParams.GetImageScanParam().GetStopParamMeasTime() != a_nValue)
  582. {
  583. m_poMsrParams.GetImageScanParam().SetStopParamMeasTime(a_nValue);
  584. m_Status.SetStatus(OTS_MSR_SAMPLE_STATUS.UNMEASURED);
  585. }
  586. }
  587. break;
  588. case OTS_SAMPLE_PROP_GRID_ITEMS.BG_GRAY_MIN:
  589. {
  590. if (GRAY_LEVEL_MIN > a_nValue || a_nValue > GRAY_LEVEL_MAX)
  591. {
  592. return false;
  593. }
  594. if (m_poMsrParams == null)
  595. {
  596. return false;
  597. }
  598. COTSImageProcParam pImageProcessParam = m_poMsrParams.GetImageProcessParam();
  599. if (pImageProcessParam == null)
  600. {
  601. return false;
  602. }
  603. CIntRange oBGGray = m_poMsrParams.GetImageProcessParam().GetBGGray();
  604. oBGGray.SetStart(a_nValue);
  605. m_poMsrParams.GetImageProcessParam().SetBGGray(oBGGray);
  606. }
  607. break;
  608. case OTS_SAMPLE_PROP_GRID_ITEMS.BG_GRAY_MAX:
  609. {
  610. if (GRAY_LEVEL_MIN > a_nValue || a_nValue > GRAY_LEVEL_MAX)
  611. {
  612. return false;
  613. }
  614. CIntRange oBGGray = m_poMsrParams.GetImageProcessParam().GetBGGray();
  615. oBGGray.SetEnd(a_nValue);
  616. m_poMsrParams.GetImageProcessParam().SetBGGray(oBGGray);
  617. }
  618. break;
  619. case OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_GRAY_MIN:
  620. {
  621. if (GRAY_LEVEL_MIN > a_nValue || a_nValue > GRAY_LEVEL_MAX)
  622. {
  623. return false;
  624. }
  625. CIntRange oParticleGray = m_poMsrParams.GetImageProcessParam().GetParticleGray();
  626. oParticleGray.SetStart(a_nValue);
  627. m_poMsrParams.GetImageProcessParam().SetParticleGray(oParticleGray);
  628. }
  629. break;
  630. case OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_GRAY_MAX:
  631. {
  632. if (GRAY_LEVEL_MIN > a_nValue || a_nValue > GRAY_LEVEL_MAX)
  633. {
  634. return false;
  635. }
  636. CIntRange oParticleGray = m_poMsrParams.GetImageProcessParam().GetParticleGray();
  637. oParticleGray.SetEnd(a_nValue);
  638. m_poMsrParams.GetImageProcessParam().SetParticleGray(oParticleGray);
  639. }
  640. break;
  641. case OTS_SAMPLE_PROP_GRID_ITEMS.LOW_COUNTS:
  642. {
  643. if (COUNTS_MIN > a_nValue)
  644. {
  645. return false;
  646. }
  647. //m_poMsrParams.GetXRayParam().SetXRaySearchCount(a_nValue);
  648. }
  649. break;
  650. case OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_COUNTS:
  651. {
  652. if (COUNTS_MIN > a_nValue)
  653. {
  654. return false;
  655. }
  656. m_poMsrParams.GetXRayParam().SetAnalyExpCount(a_nValue);
  657. }
  658. break;
  659. case OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_RESOLUTION:
  660. {
  661. if (0 >= a_nValue)
  662. {
  663. return false;
  664. }
  665. m_poMsrParams.GetXRayParam().SetMidAnalyAQTime(a_nValue);
  666. }
  667. break;
  668. case OTS_SAMPLE_PROP_GRID_ITEMS.FIELDSTOP_AREAPERCENTAGE:
  669. {
  670. m_poMsrParams.GetImageScanParam().SetFieldAreaPercentage(a_nValue);
  671. }
  672. break;
  673. case OTS_SAMPLE_PROP_GRID_ITEMS.FIELDSTOP_LARGEPARTICLES:
  674. {
  675. m_poMsrParams.GetImageScanParam().SetFieldLargeParticleNum(a_nValue);
  676. }
  677. break;
  678. case OTS_SAMPLE_PROP_GRID_ITEMS.FIELDSTOP_LARGEPARTICLESPERCENTAGE:
  679. {
  680. m_poMsrParams.GetImageScanParam().SetFieldLargeParticlePercentage(a_nValue);
  681. }
  682. break;
  683. case OTS_SAMPLE_PROP_GRID_ITEMS.FIELDSTOP_SMALLPARTICLES:
  684. {
  685. if (0 >= a_nValue)
  686. {
  687. return false;
  688. }
  689. m_poMsrParams.GetImageScanParam().SetFieldSmallParticleNum(a_nValue);
  690. }
  691. break;
  692. case OTS_SAMPLE_PROP_GRID_ITEMS.FIELDSTOP_SMALLPARTICLESPERCENTAGE:
  693. {
  694. if ((0 >= a_nValue) || (100 < a_nValue))
  695. {
  696. return false;
  697. }
  698. m_poMsrParams.GetImageScanParam().SetFieldSmallParticlePercentage(a_nValue);
  699. }
  700. break;
  701. case OTS_SAMPLE_PROP_GRID_ITEMS.XRAY_FASTTIME:
  702. {
  703. if (0 >= a_nValue)
  704. {
  705. return false;
  706. }
  707. m_poMsrParams.GetXRayParam().SetFastXrayTime(a_nValue);
  708. }
  709. break;
  710. case OTS_SAMPLE_PROP_GRID_ITEMS.XrayLimit:
  711. {
  712. if (0 >= a_nValue)
  713. {
  714. return false;
  715. }
  716. m_poMsrParams.GetXRayParam().SetXrayLimit(a_nValue);
  717. }
  718. break;
  719. // read only properties, treat same as default
  720. case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_FIELDS:
  721. case OTS_SAMPLE_PROP_GRID_ITEMS.COMPLETED_FIELDS:
  722. case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_PARTICLE:
  723. default:
  724. {
  725. // something wrong, return false
  726. return false;
  727. }
  728. }
  729. // ok, return true
  730. return true;
  731. }
  732. public bool SetPropItemGrpsForIncA()
  733. {
  734. if (m_listPropItemGrp != null)
  735. {
  736. if (m_listPropItemGrp.Count > 0)
  737. {
  738. m_listPropItemGrp.Clear();
  739. }
  740. }
  741. // property items group
  742. OTS_SAMPLE_PROP_GRID_ITEM_GROUPS a_nId = 0;
  743. for (int i = (int)OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.MIN; i <= (int)OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.MAX; i++)
  744. {
  745. // items list
  746. List<CPropItem> a_listPropItems = new List<CPropItem>();
  747. a_nId = (OTS_SAMPLE_PROP_GRID_ITEM_GROUPS)i;
  748. if (m_poMsrParams.m_runmode == RunMode.PlainMode)
  749. {
  750. if (a_nId != OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.GENERAL)
  751. {
  752. break;//if it's plainmode then only display the general parameter section.
  753. }
  754. }
  755. CPropItemGrp poPropItemGrp = new CPropItemGrp();
  756. // property items group name
  757. string strGrpName = string.Empty;
  758. strGrpName = ResourceData.GetSourceTitleString((OTS_SAMPLE_PROP_GRID_ITEM_GROUPS)a_nId);
  759. if (strGrpName == "")
  760. {
  761. return false;
  762. }
  763. // group name and id
  764. poPropItemGrp.SetName(strGrpName);
  765. poPropItemGrp.SetGroupId(a_nId);
  766. // set group items list
  767. OTS_SAMPLE_PROP_GRID_ITEMS nItemId;
  768. CPropItem poPropItem;
  769. bool bShow = true;
  770. //分组编号
  771. int modelResource = ResourceID.GrpGeneral;
  772. switch (a_nId)
  773. {
  774. case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.GENERAL:
  775. {
  776. modelResource = ResourceID.GrpGeneral;
  777. // name
  778. poPropItem = new CPropItem();
  779. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.SAMPLE_NAME;
  780. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.STRING, false, bShow);
  781. a_listPropItems.Add(poPropItem);
  782. // hole
  783. poPropItem = new CPropItem();
  784. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.SAMPLE_HOLE_NAME;
  785. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.STRING, false, bShow);
  786. a_listPropItems.Add(poPropItem);
  787. // switch
  788. poPropItem = new CPropItem();
  789. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.SWITCH;
  790. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.BOOL, false, bShow);
  791. a_listPropItems.Add(poPropItem);
  792. // system STD
  793. poPropItem = new CPropItem();
  794. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.SYS_STD_SWITCH;
  795. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.BOOL, false, bShow);
  796. a_listPropItems.Add(poPropItem);
  797. // STD file name
  798. poPropItem = new CPropItem();
  799. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.STD_FILE_NAME;
  800. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.FILE_LIST, false, bShow);
  801. a_listPropItems.Add(poPropItem);
  802. // Steel technology
  803. poPropItem = new CPropItem();
  804. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.STEEL_TECHNOLOGY;
  805. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
  806. a_listPropItems.Add(poPropItem);
  807. }
  808. break;
  809. case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.IMAGESCAN:
  810. {
  811. modelResource = ResourceID.GrpImageScan;
  812. // start mode
  813. COTSImgScanPrm pScanParam = m_poMsrParams.GetImageScanParam();
  814. poPropItem = new CPropItem();
  815. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.START_MODE;
  816. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
  817. a_listPropItems.Add(poPropItem);
  818. //// stop mode
  819. poPropItem = new CPropItem();
  820. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.STOP_MODE;
  821. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.STRING, true, bShow);
  822. a_listPropItems.Add(poPropItem);
  823. //// stop parameter
  824. poPropItem = new CPropItem();
  825. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_PARTICLE;
  826. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
  827. a_listPropItems.Add(poPropItem);
  828. // field
  829. poPropItem = new CPropItem();
  830. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_FIELD;
  831. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
  832. a_listPropItems.Add(poPropItem);
  833. // used time
  834. poPropItem = new CPropItem();
  835. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_TIME;
  836. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
  837. a_listPropItems.Add(poPropItem);
  838. // scan speed
  839. poPropItem = new CPropItem();
  840. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.SCAN_SPEED;
  841. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
  842. a_listPropItems.Add(poPropItem);
  843. // image resolution
  844. poPropItem = new CPropItem();
  845. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.IMAGE_RESOLUTION;
  846. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
  847. a_listPropItems.Add(poPropItem);
  848. }
  849. break;
  850. case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.IMAGE_PROCESS:
  851. {
  852. modelResource = ResourceID.GrpImageProcess;
  853. COTSImageProcParam pProcParam = m_poMsrParams.GetImageProcessParam();
  854. poPropItem = new CPropItem();
  855. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.BGREMOVE_TYPE;
  856. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
  857. a_listPropItems.Add(poPropItem);
  858. switch (m_poMsrParams.GetImageProcessParam().GetBGRemoveType())
  859. {
  860. case OTS_BGREMOVE_TYPE.AUTO:
  861. poPropItem = new CPropItem();
  862. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.AUTOBGREMOVE_TYPE;
  863. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
  864. a_listPropItems.Add(poPropItem);
  865. // particle area min
  866. poPropItem = new CPropItem();
  867. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MIN;
  868. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.DOUBLE, false, bShow);
  869. a_listPropItems.Add(poPropItem);
  870. // particle area max
  871. poPropItem = new CPropItem();
  872. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MAX;
  873. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.DOUBLE, false, bShow);
  874. a_listPropItems.Add(poPropItem);
  875. break;
  876. case OTS_BGREMOVE_TYPE.MANUAL:
  877. // BG gray level min
  878. poPropItem = new CPropItem();
  879. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.BG_GRAY_MIN;
  880. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
  881. a_listPropItems.Add(poPropItem);
  882. // BG gray level max
  883. poPropItem = new CPropItem();
  884. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.BG_GRAY_MAX;
  885. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
  886. a_listPropItems.Add(poPropItem);
  887. //---------------------------------------
  888. // particle gray level min
  889. poPropItem = new CPropItem();
  890. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_GRAY_MIN;
  891. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
  892. a_listPropItems.Add(poPropItem);
  893. // particle gray level max
  894. poPropItem = new CPropItem();
  895. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_GRAY_MAX;
  896. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
  897. a_listPropItems.Add(poPropItem);
  898. //----------------------------------------
  899. // particle area min
  900. poPropItem = new CPropItem();
  901. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MIN;
  902. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.DOUBLE, false, bShow);
  903. a_listPropItems.Add(poPropItem);
  904. // particle area max
  905. poPropItem = new CPropItem();
  906. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MAX;
  907. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.DOUBLE, false, bShow);
  908. a_listPropItems.Add(poPropItem);
  909. break;
  910. }
  911. }
  912. break;
  913. case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.XRAY:
  914. {
  915. modelResource = ResourceID.GrpXray;
  916. COTSXRayParam pXrayParam = m_poMsrParams.GetXRayParam();
  917. // UsingXray
  918. poPropItem = new CPropItem();
  919. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.USING_XRAY;
  920. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.BOOL, false, bShow);
  921. a_listPropItems.Add(poPropItem);
  922. //quantify size
  923. poPropItem = new CPropItem();
  924. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.XRAY_QUANTIFY_MINSIZE;
  925. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.DOUBLE, false, bShow);
  926. a_listPropItems.Add(poPropItem);
  927. // scan mode
  928. poPropItem = new CPropItem();
  929. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.SCAN_MODE;
  930. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
  931. a_listPropItems.Add(poPropItem);
  932. // analysis
  933. poPropItem = new CPropItem();
  934. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_RESOLUTION;//big particle AQTime
  935. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
  936. a_listPropItems.Add(poPropItem);
  937. //fast xray time.
  938. poPropItem = new CPropItem();
  939. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.XRAY_FASTTIME;//small particle AQTime
  940. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
  941. a_listPropItems.Add(poPropItem);
  942. // analysis counts
  943. poPropItem = new CPropItem();
  944. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_COUNTS;
  945. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
  946. a_listPropItems.Add(poPropItem);
  947. // XrayLimit
  948. poPropItem = new CPropItem();
  949. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.XrayLimit;
  950. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
  951. a_listPropItems.Add(poPropItem);
  952. }
  953. break;
  954. case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.SEM:
  955. {
  956. modelResource = ResourceID.GrpSEMParameter;
  957. // does SEM data (measure) set?
  958. CSEMDataMsr m_TempSEMDataMsr = new CSEMDataMsr();
  959. if ((m_poSEMDataMsr.GetScanFieldSize100() == m_TempSEMDataMsr.GetScanFieldSize100())
  960. && (m_poSEMDataMsr.GetTotalFields() == m_TempSEMDataMsr.GetTotalFields())
  961. && (m_poSEMDataMsr.GetWorkingDistance() == m_TempSEMDataMsr.GetWorkingDistance())
  962. && (m_poSEMDataMsr.GetScanFieldSize() == m_TempSEMDataMsr.GetScanFieldSize()))
  963. {
  964. // magnification
  965. poPropItem = new CPropItem();
  966. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.MAGNIFICATION;
  967. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.STRING, true, true);
  968. a_listPropItems.Add(poPropItem);
  969. // pixel size
  970. poPropItem = new CPropItem();
  971. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PIXEL_SIZE;
  972. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.STRING, true, true);
  973. a_listPropItems.Add(poPropItem);
  974. // working distance
  975. poPropItem = new CPropItem();
  976. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.WORKING_DISTANCE;
  977. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.STRING, true, true);
  978. a_listPropItems.Add(poPropItem);
  979. // total field
  980. poPropItem = new CPropItem();
  981. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_FIELDS;
  982. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.STRING, true, true);
  983. a_listPropItems.Add(poPropItem);
  984. // total area
  985. poPropItem = new CPropItem();
  986. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_TO_MEASURE_AREA;
  987. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.DOUBLE, true, true);
  988. a_listPropItems.Add(poPropItem);
  989. }
  990. else
  991. {
  992. // magnification
  993. poPropItem = new CPropItem();
  994. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.MAGNIFICATION;
  995. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.DOUBLE, false, true);
  996. a_listPropItems.Add(poPropItem);
  997. // pixel size
  998. poPropItem = new CPropItem();
  999. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PIXEL_SIZE;
  1000. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.DOUBLE, false, true);
  1001. a_listPropItems.Add(poPropItem);
  1002. // working distance
  1003. poPropItem = new CPropItem();
  1004. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.WORKING_DISTANCE;
  1005. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.DOUBLE, true, true);
  1006. a_listPropItems.Add(poPropItem);
  1007. // total field
  1008. poPropItem = new CPropItem();
  1009. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_FIELDS;
  1010. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.INT, true, true);
  1011. a_listPropItems.Add(poPropItem);
  1012. // total area
  1013. poPropItem = new CPropItem();
  1014. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_TO_MEASURE_AREA;
  1015. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.DOUBLE, true, true);
  1016. a_listPropItems.Add(poPropItem);
  1017. }
  1018. }
  1019. break;
  1020. case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.MEASURE_STATUS:
  1021. {
  1022. modelResource = ResourceID.GrpMeasureState;
  1023. // measure status
  1024. poPropItem = new CPropItem();
  1025. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.MEASURE_STATAU;
  1026. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.STRING, true, true);
  1027. a_listPropItems.Add(poPropItem);
  1028. // has measure result?
  1029. if (HasMeasureResult())
  1030. {
  1031. // start time
  1032. poPropItem = new CPropItem();
  1033. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.START_TIME;
  1034. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.TIME, true, true);
  1035. a_listPropItems.Add(poPropItem);
  1036. // used time
  1037. poPropItem = new CPropItem();
  1038. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.USED_TIME;
  1039. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.TIME_SPAN, true, true);
  1040. a_listPropItems.Add(poPropItem);
  1041. // finish time
  1042. poPropItem = new CPropItem();
  1043. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.FINISH_TIME;
  1044. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.TIME, true, true);
  1045. a_listPropItems.Add(poPropItem);
  1046. // completed fields
  1047. poPropItem = new CPropItem();
  1048. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.COMPLETED_FIELDS;
  1049. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.INT, true, true);
  1050. a_listPropItems.Add(poPropItem);
  1051. }
  1052. }
  1053. break;
  1054. case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.MEASURE_RESULTS:
  1055. {
  1056. modelResource = ResourceID.GrpMeasureResult;
  1057. // has measure result?
  1058. if (HasMeasureResult())
  1059. {
  1060. // radio
  1061. poPropItem = new CPropItem();
  1062. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.RATIO;
  1063. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.DOUBLE, true, true);
  1064. a_listPropItems.Add(poPropItem);
  1065. // total measured area
  1066. poPropItem = new CPropItem();
  1067. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_AREA;
  1068. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.DOUBLE, true, true);
  1069. a_listPropItems.Add(poPropItem);
  1070. // total particles
  1071. poPropItem = new CPropItem();
  1072. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_PARTICLE;
  1073. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.INT, true, true);
  1074. a_listPropItems.Add(poPropItem);
  1075. // total particle area
  1076. poPropItem = new CPropItem();
  1077. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_PARTICLE_AREA;
  1078. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.DOUBLE, true, true);
  1079. a_listPropItems.Add(poPropItem);
  1080. }
  1081. }
  1082. break;
  1083. default:
  1084. {
  1085. // something wrong here, return nullptr
  1086. break;
  1087. }
  1088. }
  1089. poPropItemGrp.SetItemsList(a_listPropItems);
  1090. m_listPropItemGrp.Add(poPropItemGrp);
  1091. }
  1092. // return property items group
  1093. return true; ;
  1094. }
  1095. public bool SetPropItemGrpsForCleanlinessSys()
  1096. {
  1097. if (m_listPropItemGrp != null)
  1098. {
  1099. if (m_listPropItemGrp.Count > 0)
  1100. {
  1101. m_listPropItemGrp.Clear();
  1102. }
  1103. }
  1104. // property items group
  1105. OTS_SAMPLE_PROP_GRID_ITEM_GROUPS a_nId = 0;
  1106. for (int i = (int)OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.MIN; i <= (int)OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.MAX; i++)
  1107. {
  1108. // items list
  1109. List<CPropItem> a_listPropItems = new List<CPropItem>();
  1110. a_nId = (OTS_SAMPLE_PROP_GRID_ITEM_GROUPS)i;
  1111. if (m_poMsrParams.m_runmode == RunMode.PlainMode)
  1112. {
  1113. if (a_nId != OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.GENERAL)
  1114. {
  1115. break;//if it's plain mode then only display the general parameter section.
  1116. }
  1117. }
  1118. CPropItemGrp poPropItemGrp = new CPropItemGrp();
  1119. // property items group name
  1120. string strGrpName = string.Empty;
  1121. strGrpName = ResourceData.GetSourceTitleString((OTS_SAMPLE_PROP_GRID_ITEM_GROUPS)a_nId);
  1122. if (strGrpName == "")
  1123. {
  1124. return false;
  1125. }
  1126. // group name and id
  1127. poPropItemGrp.SetName(strGrpName);
  1128. poPropItemGrp.SetGroupId(a_nId);
  1129. // set group items list
  1130. OTS_SAMPLE_PROP_GRID_ITEMS nItemId;
  1131. CPropItem poPropItem;
  1132. bool bShow = true;
  1133. //分组编号
  1134. int modelResource = ResourceID.GrpGeneral;
  1135. switch (a_nId)
  1136. {
  1137. case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.GENERAL:
  1138. {
  1139. modelResource = ResourceID.GrpGeneral;
  1140. // name
  1141. poPropItem = new CPropItem();
  1142. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.SAMPLE_NAME;
  1143. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.STRING, false, bShow);
  1144. a_listPropItems.Add(poPropItem);
  1145. // hole
  1146. poPropItem = new CPropItem();
  1147. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.SAMPLE_HOLE_NAME;
  1148. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.STRING, false, bShow);
  1149. a_listPropItems.Add(poPropItem);
  1150. // switch
  1151. poPropItem = new CPropItem();
  1152. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.SWITCH;
  1153. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.BOOL, false, bShow);
  1154. a_listPropItems.Add(poPropItem);
  1155. // STD file name
  1156. poPropItem = new CPropItem();
  1157. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.STD_FILE_NAME;
  1158. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.FILE_LIST, false, bShow);
  1159. a_listPropItems.Add(poPropItem);
  1160. }
  1161. break;
  1162. case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.IMAGESCAN:
  1163. {
  1164. modelResource = ResourceID.GrpImageScan;
  1165. // start mode
  1166. COTSImgScanPrm pScanParam = m_poMsrParams.GetImageScanParam();
  1167. poPropItem = new CPropItem();
  1168. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.START_MODE;
  1169. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
  1170. a_listPropItems.Add(poPropItem);
  1171. //// stop mode
  1172. poPropItem = new CPropItem();
  1173. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.STOP_MODE;
  1174. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
  1175. a_listPropItems.Add(poPropItem);
  1176. //// stop parameter
  1177. //switch (m_poMsrParams.GetImageScanParam().GetStopMode())
  1178. //{
  1179. // case OTS_MEASURE_STOP_MODE.ParticleMode:
  1180. // {
  1181. // // particle
  1182. // poPropItem = new CPropItem();
  1183. // nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_PARTICLE;
  1184. // poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
  1185. // a_listPropItems.Add(poPropItem);
  1186. // }
  1187. // break;
  1188. // case OTS_MEASURE_STOP_MODE.FieldMode:
  1189. // {
  1190. // // field
  1191. // poPropItem = new CPropItem();
  1192. // nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_FIELD;
  1193. // poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
  1194. // a_listPropItems.Add(poPropItem);
  1195. // }
  1196. // break;
  1197. // case OTS_MEASURE_STOP_MODE.TimeMode:
  1198. // {
  1199. // // used time
  1200. // poPropItem = new CPropItem();
  1201. // nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_TIME;
  1202. // poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
  1203. // a_listPropItems.Add(poPropItem);
  1204. // }
  1205. // break;
  1206. // case OTS_MEASURE_STOP_MODE.CoverMode:
  1207. // default:
  1208. // {
  1209. // // no stop parameter item
  1210. // }
  1211. // break;
  1212. //}
  1213. // scan speed
  1214. poPropItem = new CPropItem();
  1215. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.SCAN_SPEED;
  1216. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
  1217. a_listPropItems.Add(poPropItem);
  1218. // image resolution
  1219. poPropItem = new CPropItem();
  1220. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.IMAGE_RESOLUTION;
  1221. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
  1222. a_listPropItems.Add(poPropItem);
  1223. }
  1224. break;
  1225. case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.IMAGE_PROCESS:
  1226. {
  1227. modelResource = ResourceID.GrpImageProcess;
  1228. COTSImageProcParam pProcParam = m_poMsrParams.GetImageProcessParam();
  1229. poPropItem = new CPropItem();
  1230. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.BGREMOVE_TYPE;
  1231. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
  1232. a_listPropItems.Add(poPropItem);
  1233. switch (m_poMsrParams.GetImageProcessParam().GetBGRemoveType())
  1234. {
  1235. case OTS_BGREMOVE_TYPE.AUTO:
  1236. poPropItem = new CPropItem();
  1237. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.AUTOBGREMOVE_TYPE;
  1238. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
  1239. a_listPropItems.Add(poPropItem);
  1240. // particle area min
  1241. poPropItem = new CPropItem();
  1242. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MIN;
  1243. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.DOUBLE, false, bShow);
  1244. a_listPropItems.Add(poPropItem);
  1245. // particle area max
  1246. poPropItem = new CPropItem();
  1247. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MAX;
  1248. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.DOUBLE, false, bShow);
  1249. a_listPropItems.Add(poPropItem);
  1250. break;
  1251. case OTS_BGREMOVE_TYPE.MANUAL:
  1252. // BG gray level min
  1253. poPropItem = new CPropItem();
  1254. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.BG_GRAY_MIN;
  1255. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
  1256. a_listPropItems.Add(poPropItem);
  1257. // BG gray level max
  1258. poPropItem = new CPropItem();
  1259. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.BG_GRAY_MAX;
  1260. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
  1261. a_listPropItems.Add(poPropItem);
  1262. //here,no longer consider the gray range of particles,for we can get the same result by regulate the background range.(gsp 2021.8.13)
  1263. //---------------------------------------------
  1264. // particle gray level min
  1265. poPropItem = new CPropItem();
  1266. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_GRAY_MIN;
  1267. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
  1268. a_listPropItems.Add(poPropItem);
  1269. // particle gray level max
  1270. poPropItem = new CPropItem();
  1271. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_GRAY_MAX;
  1272. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
  1273. a_listPropItems.Add(poPropItem);
  1274. //----------------------------------------------
  1275. // particle area min
  1276. poPropItem = new CPropItem();
  1277. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MIN;
  1278. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.DOUBLE, false, bShow);
  1279. a_listPropItems.Add(poPropItem);
  1280. // particle area max
  1281. poPropItem = new CPropItem();
  1282. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MAX;
  1283. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.DOUBLE, false, bShow);
  1284. a_listPropItems.Add(poPropItem);
  1285. break;
  1286. }
  1287. }
  1288. break;
  1289. case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.XRAY:
  1290. {
  1291. modelResource = ResourceID.GrpXray;
  1292. COTSXRayParam pXrayParam = m_poMsrParams.GetXRayParam();
  1293. //using xray
  1294. poPropItem = new CPropItem();
  1295. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.USING_XRAY;
  1296. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.BOOL, false, bShow);
  1297. a_listPropItems.Add(poPropItem);
  1298. // scan mode
  1299. poPropItem = new CPropItem();
  1300. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.SCAN_MODE;
  1301. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.COMBO, false, bShow);
  1302. a_listPropItems.Add(poPropItem);
  1303. //quantify analysis min size
  1304. poPropItem = new CPropItem();
  1305. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.XRAY_QUANTIFY_MINSIZE;
  1306. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.DOUBLE, false, bShow);
  1307. a_listPropItems.Add(poPropItem);
  1308. // analysis
  1309. poPropItem = new CPropItem();
  1310. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_RESOLUTION;
  1311. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
  1312. a_listPropItems.Add(poPropItem);
  1313. //fast xray time.
  1314. poPropItem = new CPropItem();
  1315. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.XRAY_FASTTIME;
  1316. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
  1317. a_listPropItems.Add(poPropItem);
  1318. // analysis counts
  1319. poPropItem = new CPropItem();
  1320. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_COUNTS;
  1321. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
  1322. a_listPropItems.Add(poPropItem);
  1323. // XrayLimit
  1324. poPropItem = new CPropItem();
  1325. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.XrayLimit;
  1326. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.INT, false, bShow);
  1327. a_listPropItems.Add(poPropItem);
  1328. }
  1329. break;
  1330. case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.SEM:
  1331. {
  1332. modelResource = ResourceID.GrpSEMParameter;
  1333. // does SEM data (measure) set?
  1334. CSEMDataMsr m_TempSEMDataMsr = new CSEMDataMsr();
  1335. if ((m_poSEMDataMsr.GetScanFieldSize100() == m_TempSEMDataMsr.GetScanFieldSize100())
  1336. && (m_poSEMDataMsr.GetTotalFields() == m_TempSEMDataMsr.GetTotalFields())
  1337. && (m_poSEMDataMsr.GetWorkingDistance() == m_TempSEMDataMsr.GetWorkingDistance())
  1338. && (m_poSEMDataMsr.GetScanFieldSize() == m_TempSEMDataMsr.GetScanFieldSize()))
  1339. {
  1340. // magnification
  1341. poPropItem = new CPropItem();
  1342. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.MAGNIFICATION;
  1343. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.STRING, true, true);
  1344. a_listPropItems.Add(poPropItem);
  1345. // pixel size
  1346. poPropItem = new CPropItem();
  1347. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PIXEL_SIZE;
  1348. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.STRING, true, true);
  1349. a_listPropItems.Add(poPropItem);
  1350. // working distance
  1351. poPropItem = new CPropItem();
  1352. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.WORKING_DISTANCE;
  1353. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.STRING, true, true);
  1354. a_listPropItems.Add(poPropItem);
  1355. // total field
  1356. poPropItem = new CPropItem();
  1357. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_FIELDS;
  1358. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.STRING, true, true);
  1359. a_listPropItems.Add(poPropItem);
  1360. // total area
  1361. poPropItem = new CPropItem();
  1362. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_TO_MEASURE_AREA;
  1363. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.DOUBLE, true, true);
  1364. a_listPropItems.Add(poPropItem);
  1365. }
  1366. else
  1367. {
  1368. // magnification
  1369. poPropItem = new CPropItem();
  1370. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.MAGNIFICATION;
  1371. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.DOUBLE, false, true);
  1372. a_listPropItems.Add(poPropItem);
  1373. // pixel size
  1374. poPropItem = new CPropItem();
  1375. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.PIXEL_SIZE;
  1376. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.DOUBLE, false, true);
  1377. a_listPropItems.Add(poPropItem);
  1378. // working distance
  1379. poPropItem = new CPropItem();
  1380. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.WORKING_DISTANCE;
  1381. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.DOUBLE, true, true);
  1382. a_listPropItems.Add(poPropItem);
  1383. // total field
  1384. poPropItem = new CPropItem();
  1385. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_FIELDS;
  1386. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.INT, true, true);
  1387. a_listPropItems.Add(poPropItem);
  1388. // total area
  1389. poPropItem = new CPropItem();
  1390. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_TO_MEASURE_AREA;
  1391. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.DOUBLE, true, true);
  1392. a_listPropItems.Add(poPropItem);
  1393. }
  1394. }
  1395. break;
  1396. case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.MEASURE_STATUS:
  1397. {
  1398. modelResource = ResourceID.GrpMeasureState;
  1399. // measure status
  1400. poPropItem = new CPropItem();
  1401. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.MEASURE_STATAU;
  1402. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.STRING, true, true);
  1403. a_listPropItems.Add(poPropItem);
  1404. // has measure result?
  1405. if (HasMeasureResult())
  1406. {
  1407. // start time
  1408. poPropItem = new CPropItem();
  1409. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.START_TIME;
  1410. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.TIME, true, true);
  1411. a_listPropItems.Add(poPropItem);
  1412. // used time
  1413. poPropItem = new CPropItem();
  1414. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.USED_TIME;
  1415. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.TIME_SPAN, true, true);
  1416. a_listPropItems.Add(poPropItem);
  1417. // finish time
  1418. poPropItem = new CPropItem();
  1419. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.FINISH_TIME;
  1420. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.TIME, true, true);
  1421. a_listPropItems.Add(poPropItem);
  1422. // completed fields
  1423. poPropItem = new CPropItem();
  1424. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.COMPLETED_FIELDS;
  1425. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.INT, true, true);
  1426. a_listPropItems.Add(poPropItem);
  1427. }
  1428. }
  1429. break;
  1430. case OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.MEASURE_RESULTS:
  1431. {
  1432. modelResource = ResourceID.GrpMeasureResult;
  1433. // has measure result?
  1434. if (HasMeasureResult())
  1435. {
  1436. // radio
  1437. poPropItem = new CPropItem();
  1438. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.RATIO;
  1439. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.DOUBLE, true, true);
  1440. a_listPropItems.Add(poPropItem);
  1441. // total measured area
  1442. poPropItem = new CPropItem();
  1443. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_AREA;
  1444. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.INT, true, true);
  1445. a_listPropItems.Add(poPropItem);
  1446. // total particles
  1447. poPropItem = new CPropItem();
  1448. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_PARTICLE;
  1449. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.INT, true, true);
  1450. a_listPropItems.Add(poPropItem);
  1451. // total particle area
  1452. poPropItem = new CPropItem();
  1453. nItemId = OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_PARTICLE_AREA;
  1454. poPropItem.SetSmplParameter(modelResource, nItemId, OTS_ITEM_TYPES.INT, true, true);
  1455. a_listPropItems.Add(poPropItem);
  1456. }
  1457. }
  1458. break;
  1459. default:
  1460. {
  1461. // something wrong here, return nullptr
  1462. break;
  1463. }
  1464. }
  1465. poPropItemGrp.SetItemsList(a_listPropItems);
  1466. m_listPropItemGrp.Add(poPropItemGrp);
  1467. }
  1468. // return property items group
  1469. return true; ;
  1470. }
  1471. public List<CPropItemGrp> GetPropItemGrps()
  1472. {
  1473. return m_listPropItemGrp;
  1474. }
  1475. public bool GetRelatedPropItem(OTS_SAMPLE_PROP_GRID_ITEMS itemID, ref OTS_SAMPLE_PROP_GRID_ITEMS a_nRelatedPropId)
  1476. {
  1477. switch (itemID)
  1478. {
  1479. // general group
  1480. case OTS_SAMPLE_PROP_GRID_ITEMS.SAMPLE_NAME:
  1481. case OTS_SAMPLE_PROP_GRID_ITEMS.SAMPLE_HOLE_NAME:
  1482. case OTS_SAMPLE_PROP_GRID_ITEMS.SWITCH:
  1483. case OTS_SAMPLE_PROP_GRID_ITEMS.SYS_STD_SWITCH:
  1484. case OTS_SAMPLE_PROP_GRID_ITEMS.MEASURE_PARAM_FILE_NAME:
  1485. case OTS_SAMPLE_PROP_GRID_ITEMS.STD_FILE_NAME:
  1486. // image param group
  1487. case OTS_SAMPLE_PROP_GRID_ITEMS.START_MODE:
  1488. case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_MODE:
  1489. case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_PARTICLE:
  1490. case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_FIELD:
  1491. case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_TIME:
  1492. case OTS_SAMPLE_PROP_GRID_ITEMS.SCAN_SPEED:
  1493. {
  1494. a_nRelatedPropId = OTS_SAMPLE_PROP_GRID_ITEMS.INVALID;
  1495. return false;
  1496. }
  1497. case OTS_SAMPLE_PROP_GRID_ITEMS.IMAGE_RESOLUTION:
  1498. {
  1499. a_nRelatedPropId = OTS_SAMPLE_PROP_GRID_ITEMS.PIXEL_SIZE;
  1500. }
  1501. break;
  1502. // image process param
  1503. case OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MIN:
  1504. {
  1505. a_nRelatedPropId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MAX;
  1506. }
  1507. break;
  1508. case OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MAX:
  1509. {
  1510. a_nRelatedPropId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MIN;
  1511. }
  1512. break;
  1513. case OTS_SAMPLE_PROP_GRID_ITEMS.BG_GRAY_MIN:
  1514. {
  1515. a_nRelatedPropId = OTS_SAMPLE_PROP_GRID_ITEMS.BG_GRAY_MAX;
  1516. }
  1517. break;
  1518. case OTS_SAMPLE_PROP_GRID_ITEMS.BG_GRAY_MAX:
  1519. {
  1520. a_nRelatedPropId = OTS_SAMPLE_PROP_GRID_ITEMS.BG_GRAY_MIN;
  1521. }
  1522. break;
  1523. case OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_GRAY_MIN:
  1524. {
  1525. a_nRelatedPropId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_GRAY_MAX;
  1526. }
  1527. break;
  1528. case OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_GRAY_MAX:
  1529. {
  1530. a_nRelatedPropId = OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_GRAY_MIN;
  1531. }
  1532. break;
  1533. // x-ray param
  1534. case OTS_SAMPLE_PROP_GRID_ITEMS.SEARCH_RESOLUTION:
  1535. case OTS_SAMPLE_PROP_GRID_ITEMS.LOW_COUNTS:
  1536. case OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_RESOLUTION:
  1537. case OTS_SAMPLE_PROP_GRID_ITEMS.SCAN_MODE:
  1538. case OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_COUNTS:
  1539. {
  1540. a_nRelatedPropId = OTS_SAMPLE_PROP_GRID_ITEMS.INVALID;
  1541. return false;
  1542. }
  1543. break;
  1544. // SEM data
  1545. case OTS_SAMPLE_PROP_GRID_ITEMS.MAGNIFICATION:
  1546. {
  1547. a_nRelatedPropId = OTS_SAMPLE_PROP_GRID_ITEMS.PIXEL_SIZE;
  1548. }
  1549. break;
  1550. case OTS_SAMPLE_PROP_GRID_ITEMS.PIXEL_SIZE:
  1551. {
  1552. a_nRelatedPropId = OTS_SAMPLE_PROP_GRID_ITEMS.MAGNIFICATION;
  1553. }
  1554. break;
  1555. case OTS_SAMPLE_PROP_GRID_ITEMS.WORKING_DISTANCE:
  1556. case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_FIELDS:
  1557. case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_TO_MEASURE_AREA:
  1558. // measure status
  1559. case OTS_SAMPLE_PROP_GRID_ITEMS.MEASURE_STATAU:
  1560. case OTS_SAMPLE_PROP_GRID_ITEMS.START_TIME:
  1561. case OTS_SAMPLE_PROP_GRID_ITEMS.USED_TIME:
  1562. case OTS_SAMPLE_PROP_GRID_ITEMS.FINISH_TIME:
  1563. case OTS_SAMPLE_PROP_GRID_ITEMS.COMPLETED_FIELDS:
  1564. // measure results
  1565. case OTS_SAMPLE_PROP_GRID_ITEMS.RATIO:
  1566. case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_AREA:
  1567. case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_PARTICLE:
  1568. case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_PARTICLE_AREA:
  1569. {
  1570. a_nRelatedPropId = OTS_SAMPLE_PROP_GRID_ITEMS.INVALID;
  1571. return false;
  1572. }
  1573. break;
  1574. default:
  1575. {
  1576. // something wrong, return FALSE
  1577. return false;
  1578. }
  1579. break;
  1580. }
  1581. // ok, return TRUE
  1582. return true;
  1583. }
  1584. public bool GetRelatedPropItemGrp(OTS_SAMPLE_PROP_GRID_ITEMS itemID, ref OTS_SAMPLE_PROP_GRID_ITEM_GROUPS groupID)
  1585. {
  1586. switch (itemID)
  1587. {
  1588. // general group
  1589. case OTS_SAMPLE_PROP_GRID_ITEMS.SAMPLE_NAME:
  1590. case OTS_SAMPLE_PROP_GRID_ITEMS.SAMPLE_HOLE_NAME:
  1591. case OTS_SAMPLE_PROP_GRID_ITEMS.SWITCH:
  1592. case OTS_SAMPLE_PROP_GRID_ITEMS.SYS_STD_SWITCH:
  1593. case OTS_SAMPLE_PROP_GRID_ITEMS.MEASURE_PARAM_FILE_NAME:
  1594. case OTS_SAMPLE_PROP_GRID_ITEMS.STD_FILE_NAME:
  1595. // image param group
  1596. // image param group
  1597. case OTS_SAMPLE_PROP_GRID_ITEMS.START_MODE:
  1598. case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_MODE:
  1599. case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_PARTICLE:
  1600. case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_FIELD:
  1601. case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_PARAM_TIME:
  1602. case OTS_SAMPLE_PROP_GRID_ITEMS.SCAN_SPEED:
  1603. {
  1604. groupID = OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.IMAGE_PROCESS;
  1605. return false;
  1606. }
  1607. case OTS_SAMPLE_PROP_GRID_ITEMS.IMAGE_RESOLUTION:
  1608. {
  1609. groupID = OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.IMAGE_PROCESS;
  1610. }
  1611. break;
  1612. // image process param
  1613. case OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MIN:
  1614. case OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MAX:
  1615. case OTS_SAMPLE_PROP_GRID_ITEMS.BG_GRAY_MIN:
  1616. case OTS_SAMPLE_PROP_GRID_ITEMS.BG_GRAY_MAX:
  1617. case OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_GRAY_MIN:
  1618. case OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_GRAY_MAX:
  1619. // x-ray param
  1620. case OTS_SAMPLE_PROP_GRID_ITEMS.SEARCH_RESOLUTION:
  1621. case OTS_SAMPLE_PROP_GRID_ITEMS.LOW_COUNTS:
  1622. case OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_RESOLUTION:
  1623. case OTS_SAMPLE_PROP_GRID_ITEMS.SCAN_MODE:
  1624. case OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_COUNTS:
  1625. case OTS_SAMPLE_PROP_GRID_ITEMS.WORKING_DISTANCE:
  1626. case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_FIELDS:
  1627. case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_TO_MEASURE_AREA:
  1628. // measure status
  1629. case OTS_SAMPLE_PROP_GRID_ITEMS.MEASURE_STATAU:
  1630. case OTS_SAMPLE_PROP_GRID_ITEMS.START_TIME:
  1631. case OTS_SAMPLE_PROP_GRID_ITEMS.USED_TIME:
  1632. case OTS_SAMPLE_PROP_GRID_ITEMS.FINISH_TIME:
  1633. case OTS_SAMPLE_PROP_GRID_ITEMS.COMPLETED_FIELDS:
  1634. // measure results
  1635. case OTS_SAMPLE_PROP_GRID_ITEMS.RATIO:
  1636. case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_AREA:
  1637. case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_PARTICLE:
  1638. case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_PARTICLE_AREA:
  1639. {
  1640. groupID = OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.MEASURE_RESULTS;
  1641. return false;
  1642. }
  1643. break;
  1644. default:
  1645. {
  1646. // something wrong, return FALSE
  1647. groupID = OTS_SAMPLE_PROP_GRID_ITEM_GROUPS.INVALID;
  1648. return false;
  1649. }
  1650. break;
  1651. }
  1652. // ok, return TRUE
  1653. return true;
  1654. }
  1655. // double data (4)
  1656. public bool GetPropdoubleData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, out double a_dValue)
  1657. {
  1658. switch (a_nId)
  1659. {
  1660. case OTS_SAMPLE_PROP_GRID_ITEMS.MAGNIFICATION:
  1661. {
  1662. a_dValue = m_poSEMDataMsr.GetMagnification();
  1663. }
  1664. break;
  1665. case OTS_SAMPLE_PROP_GRID_ITEMS.PIXEL_SIZE:
  1666. {
  1667. a_dValue = CalculatePixelSize();
  1668. }
  1669. break;
  1670. case OTS_SAMPLE_PROP_GRID_ITEMS.WORKING_DISTANCE:
  1671. {
  1672. a_dValue = m_poSEMDataMsr.GetWorkingDistance();
  1673. }
  1674. break;
  1675. case OTS_SAMPLE_PROP_GRID_ITEMS.RATIO:
  1676. {
  1677. a_dValue = m_poMsrResults.GetRatio();
  1678. }
  1679. break;
  1680. case OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MIN:
  1681. {
  1682. a_dValue = m_poMsrParams.GetImageProcessParam().GetIncAreaRange().GetStart();
  1683. }
  1684. break;
  1685. case OTS_SAMPLE_PROP_GRID_ITEMS.PARTICLE_AREA_MAX:
  1686. {
  1687. a_dValue = m_poMsrParams.GetImageProcessParam().GetIncAreaRange().GetEnd();
  1688. }
  1689. break;
  1690. case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_TO_MEASURE_AREA:
  1691. {
  1692. double dFieldArea = 0; // this area should be the field area
  1693. dFieldArea = CalculateAFieldArea();
  1694. a_dValue = m_poSEMDataMsr.GetTotalFields() * dFieldArea;
  1695. }
  1696. break;
  1697. case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_AREA:
  1698. {
  1699. a_dValue = m_poMsrResults.GetMeasuredArea();
  1700. }
  1701. break;
  1702. case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_PARTICLE_AREA:
  1703. {
  1704. a_dValue = m_poMsrResults.GetTotalParticleArea();
  1705. }
  1706. break;
  1707. case OTS_SAMPLE_PROP_GRID_ITEMS.XRAY_QUANTIFY_MINSIZE:
  1708. {
  1709. a_dValue = m_poMsrParams.GetXRayParam().GetFeatureModeMinSize();
  1710. }
  1711. break;
  1712. default:
  1713. {
  1714. // something wrong, return false
  1715. a_dValue = -1;
  1716. return false;
  1717. }
  1718. }
  1719. // ok, return true
  1720. return true;
  1721. }
  1722. // string data (7)
  1723. public bool GetPropStringData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, out string a_strValue)
  1724. {
  1725. switch (a_nId)
  1726. {
  1727. case OTS_SAMPLE_PROP_GRID_ITEMS.SAMPLE_NAME:
  1728. {
  1729. a_strValue = m_strName;
  1730. }
  1731. break;
  1732. case OTS_SAMPLE_PROP_GRID_ITEMS.SAMPLE_HOLE_NAME:
  1733. {
  1734. a_strValue = m_strHoleName;
  1735. }
  1736. break;
  1737. case OTS_SAMPLE_PROP_GRID_ITEMS.MAGNIFICATION:
  1738. {
  1739. a_strValue = NOT_APPLIED;
  1740. }
  1741. break;
  1742. case OTS_SAMPLE_PROP_GRID_ITEMS.PIXEL_SIZE:
  1743. {
  1744. a_strValue = NOT_APPLIED;
  1745. }
  1746. break;
  1747. case OTS_SAMPLE_PROP_GRID_ITEMS.WORKING_DISTANCE:
  1748. {
  1749. a_strValue = NOT_APPLIED;
  1750. }
  1751. break;
  1752. case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_FIELDS:
  1753. {
  1754. a_strValue = NOT_APPLIED;
  1755. }
  1756. break;
  1757. case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_TO_MEASURE_AREA:
  1758. {
  1759. a_strValue = NOT_APPLIED;
  1760. }
  1761. break;
  1762. case OTS_SAMPLE_PROP_GRID_ITEMS.MEASURE_STATAU:
  1763. {
  1764. OTS_MSR_SAMPLE_STATUS nStatus = m_Status.GetStatus();
  1765. string strStatus = nStatus.ToString();
  1766. strStatus = XmlResourceData.GetInstance().GetStringByKey(GrpMeasureResult, IDS_MEASURE_STATUS_FIRST + (int)nStatus);
  1767. a_strValue = strStatus;
  1768. }
  1769. break;
  1770. case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_MODE:
  1771. {
  1772. a_strValue = m_poMsrParams.GetImageScanParam().GetStopMode();
  1773. }
  1774. break;
  1775. default:
  1776. {
  1777. // something wrong, return false
  1778. a_strValue = NOT_APPLIED;
  1779. return false;
  1780. }
  1781. //break;
  1782. }
  1783. // ok, return true
  1784. return true;
  1785. }
  1786. public bool SetPropStringData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, string a_strValue)
  1787. {
  1788. switch (a_nId)
  1789. {
  1790. case OTS_SAMPLE_PROP_GRID_ITEMS.SAMPLE_NAME:
  1791. {
  1792. //we think the samplename as the Identification of the sample,if we change the name then reset the status.
  1793. //so we can remeasure the sample by change the sample name.
  1794. if (m_strName != a_strValue)
  1795. {
  1796. m_strName = a_strValue;
  1797. m_Status = new CMsrSampleStatus();
  1798. }
  1799. }
  1800. break;
  1801. case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_MODE:
  1802. {
  1803. if (m_poMsrParams.GetImageScanParam().GetStopMode() != a_strValue)
  1804. {
  1805. m_poMsrParams.GetImageScanParam().SetStopMode(a_strValue);
  1806. m_Status = new CMsrSampleStatus();
  1807. }
  1808. }
  1809. break;
  1810. // read only property, tread as default.
  1811. case OTS_SAMPLE_PROP_GRID_ITEMS.SAMPLE_HOLE_NAME:
  1812. case OTS_SAMPLE_PROP_GRID_ITEMS.MAGNIFICATION:
  1813. case OTS_SAMPLE_PROP_GRID_ITEMS.PIXEL_SIZE:
  1814. case OTS_SAMPLE_PROP_GRID_ITEMS.WORKING_DISTANCE:
  1815. case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_FIELDS:
  1816. case OTS_SAMPLE_PROP_GRID_ITEMS.TOTAL_TO_MEASURE_AREA:
  1817. case OTS_SAMPLE_PROP_GRID_ITEMS.MEASURE_STATAU:
  1818. default:
  1819. {
  1820. // something wrong, return false
  1821. return false;
  1822. }
  1823. //break;
  1824. }
  1825. // ok, return true
  1826. return true;
  1827. }
  1828. // combo data (7)
  1829. public bool GetPropComboData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, out int a_nValue)
  1830. {
  1831. switch (a_nId)
  1832. {
  1833. case OTS_SAMPLE_PROP_GRID_ITEMS.START_MODE:
  1834. {
  1835. a_nValue = (int)m_poMsrParams.GetImageScanParam().GetFieldStartMode();
  1836. }
  1837. break;
  1838. case OTS_SAMPLE_PROP_GRID_ITEMS.SCAN_SPEED:
  1839. {
  1840. a_nValue = (int)m_poMsrParams.GetImageScanParam().GetScanImageSpeed();
  1841. }
  1842. break;
  1843. case OTS_SAMPLE_PROP_GRID_ITEMS.IMAGE_RESOLUTION:
  1844. {
  1845. a_nValue = (int)m_poMsrParams.GetImageScanParam().GetImageResulotion();
  1846. }
  1847. break;
  1848. case OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_RESOLUTION:
  1849. {
  1850. a_nValue = (int)m_poMsrParams.GetXRayParam().GetAnalySpeed();
  1851. }
  1852. break;
  1853. case OTS_SAMPLE_PROP_GRID_ITEMS.SCAN_MODE:
  1854. {
  1855. a_nValue = (int)m_poMsrParams.GetXRayParam().GetScanMode();
  1856. }
  1857. break;
  1858. case OTS_SAMPLE_PROP_GRID_ITEMS.MEMBRANE_TYPE:
  1859. {
  1860. a_nValue = (int)this.GetMembraneType();
  1861. }
  1862. break;
  1863. case OTS_SAMPLE_PROP_GRID_ITEMS.FIELD_STOP_TYPE:
  1864. {
  1865. a_nValue = (int)m_poMsrParams.GetImageScanParam().GetFieldStopMode();
  1866. }
  1867. break;
  1868. case OTS_SAMPLE_PROP_GRID_ITEMS.BGREMOVE_TYPE:
  1869. {
  1870. a_nValue = (int)m_poMsrParams.GetImageProcessParam().GetBGRemoveType();
  1871. }
  1872. break;
  1873. case OTS_SAMPLE_PROP_GRID_ITEMS.AUTOBGREMOVE_TYPE:
  1874. {
  1875. a_nValue = (int)m_poMsrParams.GetImageProcessParam().GetAutoBGRemoveType();
  1876. }
  1877. break;
  1878. case OTS_SAMPLE_PROP_GRID_ITEMS.STEEL_TECHNOLOGY:
  1879. {
  1880. a_nValue = (int)m_poMsrParams.GetSteelTechnology();
  1881. }
  1882. break;
  1883. default:
  1884. {
  1885. // something wrong, return false
  1886. a_nValue = 0;
  1887. return false;
  1888. }
  1889. //break;
  1890. }
  1891. // ok, return true
  1892. return true;
  1893. }
  1894. public bool SetPropComboData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, int a_nValue)
  1895. {
  1896. switch (a_nId)
  1897. {
  1898. case OTS_SAMPLE_PROP_GRID_ITEMS.STEEL_TECHNOLOGY:
  1899. {
  1900. if (STEEL_TECHNOLOGY.GeneralProcessMode > (STEEL_TECHNOLOGY)a_nValue || (STEEL_TECHNOLOGY)a_nValue > STEEL_TECHNOLOGY.RareEarthMode)
  1901. {
  1902. return false;
  1903. }
  1904. m_poMsrParams.SetSteelTechnology((STEEL_TECHNOLOGY)a_nValue);
  1905. }
  1906. break;
  1907. case OTS_SAMPLE_PROP_GRID_ITEMS.START_MODE:
  1908. {
  1909. if (OTS_GET_IMAGE_MODE.FROM_CENTER > (OTS_GET_IMAGE_MODE)a_nValue || (OTS_GET_IMAGE_MODE)a_nValue > OTS_GET_IMAGE_MODE.RANDOM)
  1910. {
  1911. return false;
  1912. }
  1913. m_poMsrParams.GetImageScanParam().SetStartImageMode((OTS_GET_IMAGE_MODE)a_nValue);
  1914. }
  1915. break;
  1916. case OTS_SAMPLE_PROP_GRID_ITEMS.SCAN_SPEED:
  1917. {
  1918. if (OTS_IMAGE_SCANSPEED_OPTIONS.low > (OTS_IMAGE_SCANSPEED_OPTIONS)a_nValue || (OTS_IMAGE_SCANSPEED_OPTIONS)a_nValue > OTS_IMAGE_SCANSPEED_OPTIONS.high)
  1919. {
  1920. return false;
  1921. }
  1922. m_poMsrParams.GetImageScanParam().SetScanImageSpeed((OTS_IMAGE_SCANSPEED_OPTIONS)a_nValue);
  1923. }
  1924. break;
  1925. case OTS_SAMPLE_PROP_GRID_ITEMS.IMAGE_RESOLUTION:
  1926. {
  1927. if (OTS_IMAGE_RESULOTION_OPTIONS._512_384 > (OTS_IMAGE_RESULOTION_OPTIONS)a_nValue || (OTS_IMAGE_RESULOTION_OPTIONS)a_nValue > OTS_IMAGE_RESULOTION_OPTIONS._4096_3072)
  1928. {
  1929. return false;
  1930. }
  1931. m_poMsrParams.GetImageScanParam().SetImageResulotion((OTS_IMAGE_RESULOTION_OPTIONS)a_nValue);
  1932. }
  1933. break;
  1934. case OTS_SAMPLE_PROP_GRID_ITEMS.SEARCH_RESOLUTION:
  1935. {
  1936. if (OTS_IMAGE_SCANSPEED_OPTIONS.low > (OTS_IMAGE_SCANSPEED_OPTIONS)a_nValue || (OTS_IMAGE_SCANSPEED_OPTIONS)a_nValue > OTS_IMAGE_SCANSPEED_OPTIONS.high)
  1937. {
  1938. return false;
  1939. }
  1940. //m_poMsrParams.GetXRayParam().SetSearchSpeed((OTS_IMAGE_SCANSPEED_OPTIONS)a_nValue);
  1941. }
  1942. break;
  1943. case OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_RESOLUTION:
  1944. {
  1945. if (OTS_IMAGE_SCANSPEED_OPTIONS.low > (OTS_IMAGE_SCANSPEED_OPTIONS)a_nValue || (OTS_IMAGE_SCANSPEED_OPTIONS)a_nValue > OTS_IMAGE_SCANSPEED_OPTIONS.high)
  1946. {
  1947. return false;
  1948. }
  1949. m_poMsrParams.GetXRayParam().SetAnalySpeed((OTS_IMAGE_SCANSPEED_OPTIONS)a_nValue);
  1950. }
  1951. break;
  1952. case OTS_SAMPLE_PROP_GRID_ITEMS.SCAN_MODE:
  1953. {
  1954. if (OTS_X_RAY_SCAN_MODE.PointMode > (OTS_X_RAY_SCAN_MODE)a_nValue || (OTS_X_RAY_SCAN_MODE)a_nValue > OTS_X_RAY_SCAN_MODE.FeatureMode)
  1955. {
  1956. return false;
  1957. }
  1958. m_poMsrParams.GetXRayParam().SetScanMode((OTS_X_RAY_SCAN_MODE)a_nValue);
  1959. }
  1960. break;
  1961. case OTS_SAMPLE_PROP_GRID_ITEMS.MEMBRANE_TYPE:
  1962. {
  1963. if (MEMBRANE_TYPE.MIN > (MEMBRANE_TYPE)a_nValue || (MEMBRANE_TYPE)a_nValue > MEMBRANE_TYPE.MAX)
  1964. {
  1965. return false;
  1966. }
  1967. this.SetMembraneType((MEMBRANE_TYPE)a_nValue);
  1968. }
  1969. break;
  1970. case OTS_SAMPLE_PROP_GRID_ITEMS.FIELD_STOP_TYPE:
  1971. {
  1972. //if (OTS_MEASURE_FIELD_STOP_MODE.MIN > (OTS_MEASURE_FIELD_STOP_MODE)a_nValue || (OTS_MEASURE_FIELD_STOP_MODE)a_nValue > OTS_MEASURE_FIELD_STOP_MODE.MAX)
  1973. //{
  1974. // return false;
  1975. //}
  1976. m_poMsrParams.GetImageScanParam().SetFieldStopMode((OTS_MEASURE_FIELD_STOP_MODE)a_nValue);
  1977. }
  1978. break;
  1979. case OTS_SAMPLE_PROP_GRID_ITEMS.BGREMOVE_TYPE:
  1980. {
  1981. //if (OTS_BGREMOVE_TYPE.MIN > (OTS_BGREMOVE_TYPE)a_nValue || (OTS_BGREMOVE_TYPE)a_nValue > OTS_BGREMOVE_TYPE.MAX)
  1982. //{
  1983. // return false;
  1984. //}
  1985. m_poMsrParams.GetImageProcessParam().SetBGRemoveType((OTS_BGREMOVE_TYPE)a_nValue);
  1986. }
  1987. break;
  1988. case OTS_SAMPLE_PROP_GRID_ITEMS.AUTOBGREMOVE_TYPE:
  1989. {
  1990. //if (OTS_AUTOBGREMOVE_TYPE.MIN > (OTS_AUTOBGREMOVE_TYPE)a_nValue || (OTS_AUTOBGREMOVE_TYPE)a_nValue > OTS_AUTOBGREMOVE_TYPE.MAX)
  1991. //{
  1992. // return false;
  1993. //}
  1994. m_poMsrParams.GetImageProcessParam().SetAutoBGRemoveType((OTS_AUTOBGREMOVE_TYPE)a_nValue);
  1995. }
  1996. break;
  1997. default:
  1998. {
  1999. // something wrong, return false
  2000. return false;
  2001. }
  2002. //break;
  2003. }
  2004. // ok, return true
  2005. return true;
  2006. }
  2007. public bool GetPropComboStrings(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, List<string> a_listComboStrings)
  2008. {
  2009. // clear the strings list
  2010. a_listComboStrings.Clear();
  2011. // set the strings list
  2012. string strItem;
  2013. switch (a_nId)
  2014. {
  2015. case OTS_SAMPLE_PROP_GRID_ITEMS.START_MODE:
  2016. {
  2017. for (int i = (int)OTS_GET_IMAGE_MODE.FROM_CENTER; i <= (int)OTS_GET_IMAGE_MODE.RANDOM; ++i)
  2018. {
  2019. //ResourceID;
  2020. strItem = XmlResourceData.GetInstance().GetStringByKey(GrpImageScan, IDS_IMAGE_MODE_FIRST + i);
  2021. a_listComboStrings.Add(strItem);
  2022. }
  2023. }
  2024. break;
  2025. case OTS_SAMPLE_PROP_GRID_ITEMS.STOP_MODE:
  2026. {
  2027. for (int i = (int)OTS_MEASURE_STOP_MODE.CoverMode; i <= (int)OTS_MEASURE_STOP_MODE.TimeMode; ++i)
  2028. {
  2029. strItem = XmlResourceData.GetInstance().GetStringByKey(GrpImageScan, IDS_MEASURE_STOP_MODE_FIRST + i);
  2030. a_listComboStrings.Add(strItem);
  2031. }
  2032. }
  2033. break;
  2034. case OTS_SAMPLE_PROP_GRID_ITEMS.SCAN_SPEED:
  2035. case OTS_SAMPLE_PROP_GRID_ITEMS.SEARCH_RESOLUTION:
  2036. //case OTS_SAMPLE_PROP_GRID_ITEMS.ANALYSIS_RESOLUTION:
  2037. {
  2038. for (int i = (int)OTS_IMAGE_SCANSPEED_OPTIONS.low; i <= (int)OTS_IMAGE_SCANSPEED_OPTIONS.high; ++i)
  2039. {
  2040. strItem = XmlResourceData.GetInstance().GetStringByKey(GrpImageScan, IDS_THREE_TIES_OPTIONS_FIRST + i);
  2041. a_listComboStrings.Add(strItem);
  2042. }
  2043. }
  2044. break;
  2045. case OTS_SAMPLE_PROP_GRID_ITEMS.IMAGE_RESOLUTION:
  2046. {
  2047. for (int i = 0; i < Enum.GetValues(typeof(OTS_IMAGE_RESULOTION_OPTIONS)).Length; i++)
  2048. {
  2049. strItem = RESOLUTION_STRINGS[RESOLUTION_ID_FIRST_TIE + i];
  2050. a_listComboStrings.Add(strItem);
  2051. }
  2052. }
  2053. break;
  2054. case OTS_SAMPLE_PROP_GRID_ITEMS.SCAN_MODE:
  2055. {
  2056. for (int i = (int)OTS_X_RAY_SCAN_MODE.PointMode; i <= (int)OTS_X_RAY_SCAN_MODE.FeatureMode; ++i)
  2057. {
  2058. strItem = XmlResourceData.GetInstance().GetStringByKey(GrpXray, IDS_X_RAY_SCAN_MODE_FIRST + i);
  2059. a_listComboStrings.Add(strItem);
  2060. }
  2061. }
  2062. break;
  2063. case OTS_SAMPLE_PROP_GRID_ITEMS.STEEL_TECHNOLOGY:
  2064. {
  2065. for (int i = (int)STEEL_TECHNOLOGY.GeneralProcessMode; i <= (int)STEEL_TECHNOLOGY.RareEarthMode; ++i)
  2066. {
  2067. strItem = XmlResourceData.GetInstance().GetStringByKey(GrpGeneral, IDS_STEEL_TECHNOLOGY + i);
  2068. a_listComboStrings.Add(strItem);
  2069. }
  2070. }
  2071. break;
  2072. case OTS_SAMPLE_PROP_GRID_ITEMS.BGREMOVE_TYPE:
  2073. {
  2074. for (int i = 0; i <(int)Enum.GetValues(typeof(OTS_BGREMOVE_TYPE)).Length; ++i)
  2075. {
  2076. strItem = XmlResourceData.GetInstance().GetStringByKey(GrpImageProcess, IDS_BGREMOVE_TYPE + i);
  2077. a_listComboStrings.Add(strItem);
  2078. }
  2079. }
  2080. break;
  2081. case OTS_SAMPLE_PROP_GRID_ITEMS.AUTOBGREMOVE_TYPE:
  2082. {
  2083. for (int i = (int)OTS_AUTOBGREMOVE_TYPE.MIDDLE; i <= (int)OTS_AUTOBGREMOVE_TYPE.UPWARD; ++i)
  2084. {
  2085. strItem = XmlResourceData.GetInstance().GetStringByKey(GrpImageProcess, IDS_AUTOBGREMOVE_TYPE + i);
  2086. a_listComboStrings.Add(strItem);
  2087. }
  2088. }
  2089. break;
  2090. default:
  2091. {
  2092. // something wrong, return false
  2093. return false;
  2094. }
  2095. //break;
  2096. }
  2097. // ok, return true
  2098. return true;
  2099. }
  2100. // time data
  2101. public bool GetPropTimeData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, ref DateTime a_oValue)
  2102. {
  2103. switch (a_nId)
  2104. {
  2105. case OTS_SAMPLE_PROP_GRID_ITEMS.START_TIME:
  2106. {
  2107. a_oValue = m_Status.GetStartTime();
  2108. }
  2109. break;
  2110. case OTS_SAMPLE_PROP_GRID_ITEMS.FINISH_TIME:
  2111. {
  2112. a_oValue = m_Status.GetEndTime();
  2113. }
  2114. break;
  2115. default:
  2116. {
  2117. // something wrong, return false
  2118. return false;
  2119. }
  2120. }
  2121. // ok, return true
  2122. return true;
  2123. }
  2124. public bool SetPropTimeData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, DateTime a_oValue)
  2125. {
  2126. switch (a_nId)
  2127. {
  2128. // read only property, tread as default.
  2129. case OTS_SAMPLE_PROP_GRID_ITEMS.START_TIME:
  2130. break;
  2131. case OTS_SAMPLE_PROP_GRID_ITEMS.FINISH_TIME:
  2132. break;
  2133. default:
  2134. {
  2135. // something wrong, return false
  2136. return false;
  2137. }
  2138. }
  2139. // ok, return true
  2140. return true;
  2141. }
  2142. // time span data (1)
  2143. public bool GetPropTimeSpanData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, ref TimeSpan a_oValue)
  2144. {
  2145. switch (a_nId)
  2146. {
  2147. case OTS_SAMPLE_PROP_GRID_ITEMS.USED_TIME:
  2148. {
  2149. a_oValue = m_Status.GetUsedTime();
  2150. }
  2151. break;
  2152. default:
  2153. {
  2154. // something wrong, return false
  2155. return false;
  2156. }
  2157. }
  2158. // ok, return true
  2159. return true;
  2160. }
  2161. public bool SetPropTimeSpanData(OTS_SAMPLE_PROP_GRID_ITEMS a_nId, TimeSpan a_oValue)
  2162. {
  2163. switch (a_nId)
  2164. {
  2165. // read only property, tread as default.
  2166. case OTS_SAMPLE_PROP_GRID_ITEMS.USED_TIME:
  2167. break;
  2168. default:
  2169. {
  2170. // something wrong, return false
  2171. return false;
  2172. }
  2173. }
  2174. // ok, return true
  2175. return true;
  2176. }
  2177. public double CalculatePixelSize()
  2178. {
  2179. // pixel size
  2180. double dPixelSize = 0.0;
  2181. // make sure SEM is valid
  2182. if (m_poSEMDataMsr != new CSEMDataMsr())
  2183. {
  2184. // get scan field size
  2185. int nScanFieldSize = m_poSEMDataMsr.GetScanFieldSize();
  2186. // get image size
  2187. OTS_IMAGE_RESULOTION_OPTIONS nImageSizeId = m_poMsrParams.GetImageScanParam().GetImageResulotion();
  2188. long nResulotionId = RESOLUTION_ID_FIRST_TIE + (long)nImageSizeId;
  2189. int nImageSize = RESOLUTION_VALUE[nResulotionId].Width;
  2190. // calculate pixel size
  2191. dPixelSize = (double)nScanFieldSize / (double)nImageSize;
  2192. }
  2193. // return pixel size
  2194. return dPixelSize;
  2195. }
  2196. public Size GetResolutionSize()
  2197. {
  2198. // get scan field size
  2199. int nScanFieldSize = m_poSEMDataMsr.GetScanFieldSize();
  2200. // get image size
  2201. OTS_IMAGE_RESULOTION_OPTIONS nImageSizeId = m_poMsrParams.GetImageScanParam().GetImageResulotion();
  2202. long nResulotionId = RESOLUTION_ID_FIRST_TIE + (long)nImageSizeId;
  2203. return RESOLUTION_VALUE[nResulotionId];
  2204. }
  2205. public CPropItem GetPropItemById(OTS_SAMPLE_PROP_GRID_ITEMS a_nId)
  2206. {
  2207. CPropItem pPropItem = new CPropItem();
  2208. bool isExist = false;
  2209. if (m_listPropItemGrp.Count > 0)
  2210. {
  2211. foreach (CPropItemGrp poPropItemGrp in m_listPropItemGrp)
  2212. {
  2213. List<CPropItem> listPropItems = poPropItemGrp.GetItemsList();
  2214. if (listPropItems.Count > 0)
  2215. {
  2216. foreach (CPropItem cPropItem in listPropItems)
  2217. {
  2218. if (cPropItem.GetSmplItemId() == a_nId)
  2219. {
  2220. pPropItem = cPropItem;
  2221. isExist = true;
  2222. break;
  2223. }
  2224. }
  2225. if (isExist)
  2226. {
  2227. break;
  2228. }
  2229. }
  2230. }
  2231. }
  2232. return pPropItem;
  2233. }
  2234. public string GetItemValueStr(OTS_SAMPLE_PROP_GRID_ITEMS ItemID)
  2235. {
  2236. COTSSample cSample = new COTSSample();
  2237. //CString strItemID = ItemId;
  2238. string valStr = "";
  2239. CPropItem itm = GetPropItemById(ItemID);
  2240. switch ((OTS_ITEM_TYPES)itm.GetTypeId())
  2241. {
  2242. case OTS_ITEM_TYPES.BOOL:
  2243. {
  2244. bool bflag = false;
  2245. if (GetPropBOOLData((int)ItemID, out bflag))
  2246. {
  2247. valStr = bflag ? "1" : "0";
  2248. }
  2249. }
  2250. break;
  2251. case OTS_ITEM_TYPES.INT:
  2252. {
  2253. int iVal = 0;
  2254. if (GetPropIntData(ItemID, out iVal))
  2255. {
  2256. valStr = iVal.ToString();
  2257. }
  2258. }
  2259. break;
  2260. case OTS_ITEM_TYPES.DOUBLE:
  2261. {
  2262. double dVal = 0;
  2263. if (GetPropdoubleData(ItemID, out dVal))
  2264. {
  2265. valStr = dVal.ToString("f2");//点后面几个0就保留几位
  2266. }
  2267. }
  2268. break;
  2269. case OTS_ITEM_TYPES.STRING:
  2270. {
  2271. string StrVal = "";
  2272. if (GetPropStringData(ItemID, out StrVal))
  2273. {
  2274. valStr = StrVal;
  2275. }
  2276. }
  2277. break;
  2278. case OTS_ITEM_TYPES.COMBO:
  2279. {
  2280. List<string> StrVal = new List<string>();
  2281. if (GetPropComboStrings(ItemID, StrVal))
  2282. {
  2283. int index = 0;
  2284. GetPropComboData(ItemID, out index);
  2285. if (index > (int)StrVal.Count)
  2286. {
  2287. valStr = StrVal[0];
  2288. break;
  2289. }
  2290. valStr = StrVal[index];
  2291. }
  2292. }
  2293. break;
  2294. case OTS_ITEM_TYPES.TIME:
  2295. {
  2296. System.DateTime dt = new System.DateTime();
  2297. if (GetPropTimeData(ItemID, ref dt))
  2298. {
  2299. valStr = dt.ToString();
  2300. }
  2301. }
  2302. break;
  2303. case OTS_ITEM_TYPES.TIME_SPAN:
  2304. {
  2305. System.TimeSpan TimeSpanValue = new System.TimeSpan();
  2306. if (GetPropTimeSpanData(ItemID, ref TimeSpanValue))
  2307. {
  2308. int v = (int)TimeSpanValue.TotalSeconds;
  2309. valStr = v.ToString();
  2310. }
  2311. }
  2312. break;
  2313. case OTS_ITEM_TYPES.FILE_LIST:
  2314. {
  2315. //CMsrParams object represent a project param file. It includes PartSTD file ImgProcessParam ImgScanParam XrayParam four parts content.
  2316. int iPos = -1;
  2317. List<string> sFileNameList;
  2318. if (OTS_SAMPLE_PROP_GRID_ITEMS.MEASURE_PARAM_FILE_NAME == (OTS_SAMPLE_PROP_GRID_ITEMS)ItemID)
  2319. {
  2320. valStr = m_poMsrParams.GetName();
  2321. }
  2322. if (OTS_SAMPLE_PROP_GRID_ITEMS.STD_FILE_NAME == (OTS_SAMPLE_PROP_GRID_ITEMS)ItemID)
  2323. {
  2324. valStr = m_poMsrParams.GetSTDName();
  2325. }
  2326. }
  2327. break;
  2328. default:
  2329. break;
  2330. }
  2331. return valStr;
  2332. }
  2333. // calculate field area
  2334. public double CalculateAFieldArea()
  2335. {
  2336. // pixel size
  2337. double dAFieldArea = 0.0;
  2338. // make sure SEM is valid
  2339. if (m_poSEMDataMsr != new CSEMDataMsr())
  2340. {
  2341. // get image size
  2342. OTS_IMAGE_RESULOTION_OPTIONS nImageSizeId = m_poMsrParams.GetImageScanParam().GetImageResulotion();
  2343. long nResulotionId = RESOLUTION_ID_FIRST_TIE + (long)nImageSizeId;
  2344. int nImageSize = RESOLUTION_VALUE[nResulotionId].Width;
  2345. int nHeight = RESOLUTION_VALUE[nResulotionId].Height;
  2346. // pixel size (micros)
  2347. double dPixelSize = 0;
  2348. dPixelSize = CalculatePixelSize();
  2349. // calculate pixel size
  2350. dAFieldArea = (double)nImageSize * nHeight * dPixelSize * dPixelSize * 0.000001;// mm^2
  2351. }
  2352. // return pixel size
  2353. return dAFieldArea;
  2354. }
  2355. public bool GetBSESize(int a_nWidth, int a_nHeight)
  2356. {
  2357. // scan parameters
  2358. CSampleParam pMsrParam = GetMsrParams();
  2359. COTSImgScanPrm pImgScanParam = pMsrParam.GetImageScanParam();
  2360. // get image size
  2361. OTS_IMAGE_RESULOTION_OPTIONS nImageSizeId = pImgScanParam.GetImageResulotion();
  2362. int nResulotionId = RESOLUTION_ID_FIRST_TIE + (int)nImageSizeId;
  2363. Size sizePixelImage = RESOLUTION_VALUE[nResulotionId];
  2364. // get scan field size
  2365. a_nWidth = sizePixelImage.Width;
  2366. a_nHeight = sizePixelImage.Height;
  2367. return true;
  2368. }
  2369. public override void Serialize(bool isStoring, XmlDocument classDoc, XmlNode rootNode)
  2370. {
  2371. xString xstrSampleName = new xString();
  2372. xString xstrHoleName = new xString();
  2373. xBool xParamLock = new xBool();
  2374. xBool xSwitch = new xBool();
  2375. xBool xSysSTDSwitch = new xBool();
  2376. Slo slo = new Slo();
  2377. slo.Register("SampleName", xstrSampleName);
  2378. slo.Register("HoleName", xstrHoleName);
  2379. slo.Register("ParamLock", xParamLock);
  2380. slo.Register("Switch", xSwitch);
  2381. slo.Register("UseSysSTD", xSysSTDSwitch);
  2382. slo.Register("MsrArea", m_poMsrArea);
  2383. slo.Register("MsrParams", m_poMsrParams);
  2384. slo.Register("SEMDataMsr", m_poSEMDataMsr);
  2385. if (isStoring)
  2386. {
  2387. xstrSampleName.AssignValue(m_strName);
  2388. xstrHoleName.AssignValue(m_strHoleName);
  2389. xParamLock.AssignValue(m_bParamLock);
  2390. xSwitch.AssignValue(m_bSwitch);
  2391. xSysSTDSwitch.AssignValue(m_bSysSTDSwitch);
  2392. slo.Serialize(true, classDoc, rootNode);
  2393. }
  2394. else
  2395. {
  2396. slo.Serialize(false, classDoc, rootNode);
  2397. m_strName = xstrSampleName.value();
  2398. m_strHoleName = xstrHoleName.value();
  2399. m_bParamLock = xParamLock.value();
  2400. m_bSwitch = xSwitch.value();
  2401. m_bSysSTDSwitch = xSysSTDSwitch.value();
  2402. }
  2403. }
  2404. }
  2405. }