Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

As an example, let's create a ne wcut new cut starting from the internal cut "Princess 3s". The previous appraiser contained the following description of this cut:

Code Block
[cut]
  Name:       "Princess 3s"
  Quality:    EX VG GD FR
  Parameters: DownHeight_GIA (%) \
    DownAngleLevel0 (°) \
    GirdleHeight_GIA (%) \
    Table (%) \
    FullHeight (%) \
    GirdleRatio (.) \
    UpAngle (°) \
    UpAngleLevel1 (°) \
    UpCleanLevel1 (%) \
    VirtualCuletOffsetX (°) \
    VirtualCuletOffsetY (°) \
    DownCleanLevel1 (%) \
    UpHeight_GIA (%) \
    DownCleanLevel2 (%) \
    Unknown_33 (°)
  Optimize:   Table Table Table \
    DownAngleLevel0 DownAngleLevel0 DownAngleLevel0 \
    GirdleHeight GirdleHeight_GIA GirdleHeight_GIA \
    UpAngle UpAngle UpAngle_uHFix \
    DownAngle DownHeight_GIA DownHeight_GIA \
    GirdleRatio GirdleRatio GirdleRatio \
    UpAngleLevel0 UpAngle UpAngle \
    DownAngleLevel1 DownCleanLevel1 DownCleanLevel1 \
    Culet VirtualCuletOffsetX VirtualCuletOffsetX \
    CuletOffsetX VirtualCuletOffsetY VirtualCuletOffsetY \
    OP_1 UpAngleLevel1 UpAngleLevel1 \
    OP_2 UpCleanLevel1 UpCleanLevel1 \
    OP_3 VirtualCuletOffsetX VirtualCuletOffsetX \
    OP_4 VirtualCuletOffsetY VirtualCuletOffsetY \
    OP_5 DownCleanLevel2 DownCleanLevel2 \
    OP_6 Unknown_33 Unknown_33 \
  Mass: 0.01  100000 \
    52 63.0 55 61 1.5 3.5 66.5 72 67.0 74.0 0.980 1.040 33 45 28 40 45 55 -1.00 +1.00 -1.00 +1.00 70 80 8 13 25 40 5 10 \
    50 65.0 54 63 1.3 4.5 64.5 75 65.0 76.0 0.970 1.050 32 48 27 43 43 57 -1.02 +1.02 -1.02 +1.02 65 85 7 15 24 42 4 11 \
    48 66.0 53 64 1.1 5.5 62.5 77 63.0 78.0 0.960 1.060 31 50 26 45 41 59 -1.04 +1.04 -1.02 +1.04 60 90 6 16 23 43 3 12 \
    46 69.0 52 65 1.0 6.5 60.5 79 61.0 80.5 0.920 1.080 30 52 25 47 40 60 -1.09 +1.09 -1.04 +1.09 50 95 5 17 20 45 2 14
[end]
 
; Check 2456250 diamonds. Inside group 682500. Weights: 1.05993 1.07332 1.02597 1.12828
[fixedcut]
  Name: "Princess 3s"
  Parameters: Table (%) DownHeight_GIA UpCleanLevel1 (%) UpAngle (°) DownAngleLevel0 (°) DownCleanLevel1 (%) DownCleanLevel2 (%) GirdleAngle (°) VirtualCuletOffsetX (°) VirtualCuletOffsetY (°) GirdleHeight_GIA (%)
  OptimizationSet1: EX 71.99945100 0.60249450 52.49950050 33.00119900 60.99940100 79.99900100 39.99850100 5.00049900 0.00000000 0.00000000 3.49980100
  OptimizationSet2: EX 71.99945100 0.60249450 52.49950050 33.00119900 60.99940100 79.99900100 39.99850100 5.00049900 0.00000000 0.00000000 3.49980100
  OptimizationSet2: EX 71.99945100 0.52001099 50.00000000 44.99880100 60.99940100 79.99900100 39.99850100 5.00049900 0.00000000 0.00000000 3.49980100
  OptimizationSet2: EX 69.07679981 0.52001099 50.00000000 42.86079851 60.99940100 79.99900100 39.99850100 5.00049900 0.00000000 0.00000000 2.00009950
  OptimizationSet2: EX 71.99945100 0.57500000 50.00000000 44.99880100 60.99940100 79.99900100 39.99850100 5.00049900 0.00000000 0.00000000 3.49980100
; Check 2456250 diamonds. Inside group 737500. Weights: 1.10070 1.13218 1.12642 1.20632
  OptimizationSet1: VG 74.99895100 0.61249250 53.49930050 32.00159900 62.99910100 84.99800100 41.99820100 4.00069900 0.00000000 0.00000000 4.49968100
  OptimizationSet2: VG 74.99895100 0.61249250 53.49930050 32.00159900 62.99910100 84.99800100 41.99820100 4.00069900 0.00000000 0.00000000 4.49968100
  OptimizationSet2: VG 66.79725341 0.50001499 50.00000000 44.92031219 62.99910100 84.99800100 41.99820100 4.00069900 0.00000000 0.00000000 4.49968100
  OptimizationSet2: VG 72.37447550 0.61249250 46.50069950 47.99840100 62.99910100 84.99800100 41.99820100 4.00069900 0.00000000 0.00000000 1.30031900
  OptimizationSet2: VG 72.37447550 0.57500000 50.00000000 47.99840100 62.99910100 84.99800100 41.99820100 4.00069900 0.00000000 0.00000000 4.49968100
; Check 2456250 diamonds. Inside group 825625. Weights: 1.16290 1.16801 1.17259 1.26076
  OptimizationSet1: GD 76.99855100 0.65998201 50.00000000 31.00189900 63.99890100 89.99700100 42.99800100 3.00089900 0.00000000 0.00000000 5.49956100
  OptimizationSet2: GD 76.99855100 0.65998201 50.00000000 31.00189900 63.99890100 89.99700100 42.99800100 3.00089900 0.00000000 0.00000000 5.49956100
  OptimizationSet2: GD 66.12251648 0.48001799 50.00000000 46.19225951 63.99890100 89.99700100 42.99800100 3.00089900 0.00000000 0.00000000 5.49956100
  OptimizationSet2: GD 69.75000000 0.61499100 45.50089950 49.99810100 63.99890100 89.99700100 42.99800100 3.00089900 0.00000000 0.00000000 1.10043900
  OptimizationSet2: GD 69.75000000 0.57000000 45.50089950 49.99810100 63.99890100 89.99700100 42.99800100 3.00089900 0.00000000 0.00000000 5.49956100
; Check 2456250 diamonds. Inside group 868375. Weights: 1.17799 1.20275 1.22186 1.32968
  OptimizationSet1: FR 78.99815100 0.68997701 50.00000000 30.00219900 64.99870100 94.99550100 44.99750100 2.00119900 0.00000000 0.00000000 5.12472550
  OptimizationSet2: FR 78.99815100 0.68997701 50.00000000 30.00219900 64.99870100 94.99550100 44.99750100 2.00119900 0.00000000 0.00000000 5.12472550
  OptimizationSet2: FR 65.55792105 0.46002299 50.00000000 47.45263260 64.99870100 94.99550100 44.99750100 2.00119900 0.00000000 0.00000000 6.49945100
  OptimizationSet2: FR 69.75000000 0.63248850 45.00099950 51.99780100 64.99870100 94.99550100 44.99750100 2.00119900 0.00000000 0.00000000 1.00054900
  OptimizationSet2: FR 69.75000000 0.57500000 45.00099950 51.99780100 64.99870100 94.99550100 44.99750100 2.00119900 0.00000000 0.00000000 6.49945100

  Start: [cutname]     69.25000000 0.57500000 50.00000000 39.00000000 58.00000000 79.99900100 39.99850100 5.00049900 0.00000000 0.00000000 3.00000000
[end]

Graded

...

parameters

The graded parameters are those listed in the line В качестве оцениваемых значений будет использовать параметры указанные в строке Parameters.

Info
Backslash ("\") at the end of a line indicates continuation of the line.

...

Grading of parameters

Для оценки выбранных параметров создадим набор редактируемых интервалов для раздела CutTo grade the selected parameters, let us create a set of editable intervals of cut parameters.

Code Block
interval : Restriction_Table               : DC_TableDiameter         : : : EX 66.5 72 VG 64.5 75 GD 62.5 77 FR 60.5 79 : (%) : "Intervals for Table"
interval : Restriction_CrownAngle          : DC_CrownAngle            : : : EX 33 45 VG 32.0 48 GD 31 50 FR 30 52 : (°) : "Intervals for Crown Angle"
interval : Restriction_CrownAngle2         : DC_CrownAngleLevel2      : : : EX 28 40 VG 27 43 GD 26 45 FR 25 47 : (°) : "Intervals for Crown Angle Level 2"
interval : Restriction_CrownCleanLevel1    : DC_CrownCleanLevel1      : : : EX 45 55 VG 43 57 GD 41 59 FR 40 60 : (%) : "Intervals for Crown Clean Level 1"
interval : Restriction_PavilionAngle1      : DC_PavilionAngleLevel1   : : : EX 55 61 VG 54 63 GD 53 64 FR 52 65 : (°) : "Intervals for Pavilion Angle Level 1"
interval : Restriction_PavilionCleanLevel1 : DC_PavilionCleanLevel1   : : : EX 70 80 VG 65 85 GD 60 90 FR 50 95 : (%) : "Intervals for Pavilion Clean Level 1"
interval : Restriction_PavilionCleanLevel2 : DC_PavilionCleanLevel2   : : : EX 25 40 VG 24 42 GD 23 43 FR 20 45 : (%) : "Intervals for Pavilion Clean Level 2"
interval : Restriction_GirdleRatio         : DC_GirdleRatio           : : : EX 0.98 1.04 VG 0.97 1.05 GD 0.96 1.06 FR 0.92 1.08 : (.) : "Intervals for Girdle Ratio"
interval : Restriction_GirdleBezel         : DC_GirdleThickness       : : : EX 1.5 3.5 VG 1.3 4.5 GD 1.1 5.5 FR 1 6.5 : (%) : "Intervals for Girdle Thickness"
interval : Restriction_VirtualCuletX       : DC_VirtualCuletOffsetX   : : : EX -1.0 1.0 VG -1.02 1.02 GD -1.04 1.04 FR -1.09 1.09 : (°) : "Intervals for Virtual Culet X"
interval : Restriction_VirtualCuletY       : DC_VirtualCuletOffsetY   : : : EX -1.0 1.0 VG -1.02 1.02 GD -1.02 1.04 FR -1.04 1.09 : (°) : "Intervals for Virtual Culet Y"
interval : Restriction_CornerBreakAngle    : DC_CornerBreakAngle      : : : EX 5 10 VG 4 11 GD 3 12 FR 2 14 : (°) : "Intervals for Corner Break Angle"
interval : Restriction_CrownHeight         : DC_CrownHeight           : : : EX 8.0 13 VG 7 15 GD 6 16 FR 5 17 : (%) : "Intervals for Crown Height"
interval : Restriction_PavilionDepthBezel  : DC_PavilionDepthBezel    : : : EX 52 63 VG 50 65 GD 48 66 FR 46 69 : (%) : "Intervals for Pavilion Depth"
interval : Restriction_TotalHeight         : DC_TotalHeight           : : : EX 67 74 VG 65 76 GD 63 78 FR 61 80.5 : (%) : "Intervals for Total Height"

Overall stone grading

По существующему соглашению, общая оценка камня состоит из оценки оценки Restrictions и Symmetry. Могут быть и дополнительные оценки, но для рассматриваемой огранки пока есть только Restrictions. Поэтому, для начала соберём все оценки выбранных параметров в оценку RestrictionsConventionally, the overall grade is composed of all cut grades (Restriction_*) and symmetry grades. Since we have not definedМ any symmetry parameters, there are only cut grades. To begin with, let us assemble them all into one composite grade called Restrictions:

Code Block
grading : Restrictions : Restriction_CornerBreakAngle Restriction_TotalHeight Restriction_CrownAngle Restriction_GirdleBezel \
  Restriction_CrownAngle2 Restriction_CrownHeight Restriction_PavilionDepthBezel Restriction_PavilionAngle1 Restriction_Table \
  Restriction_VirtualCuletX Restriction_VirtualCuletY Restriction_GirdleRatio Restriction_CrownCleanLevel1 Restriction_PavilionCleanLevel1 \
  Restriction_PavilionCleanLevel2 : Bad : 

а затем создадим финальную оценку Main, состоящую из одной RestrictionsNow let us create a final grade consisting or Restrictions alone:

Code Block
grading : Main : Restrictions : Bad : Final

Individual grading of parameters

Для индикации в панели бриллианта индивидуальной оценки каждого параметра необходимо определить список с названием IndividualList и задать в нём соответствие параметра и его интерваловTo display the individual parameter grades in the diamond panel, we have to define a list called IndividualList and set up the correspondence between parameters and their intervals.

Code Block
intervallist : IndividualList : name id : \
  Restriction_CornerBreakAngle, DC_CornerBreakAngle; \
  Restriction_TotalHeight, DC_TotalHeight; \
  Restriction_CrownAngle, DC_CrownAngle; \
  Restriction_GirdleBezel, DC_GirdleThickness; \
  Restriction_CrownAngle2, DC_CrownAngleLevel2; \
  Restriction_CrownHeight, DC_CrownHeight; \
  Restriction_PavilionDepthBezel, DC_PavilionDepthBezel; \
  Restriction_PavilionAngle1, DC_PavilionAngleLevel1; \
  Restriction_Table, DC_TableDiameter; \
  Restriction_VirtualCuletX, DC_VirtualCuletOffsetX; \
  Restriction_VirtualCuletY, DC_VirtualCuletOffsetY; \
  Restriction_GirdleRatio, DC_GirdleRatio; \
  Restriction_CrownCleanLevel1, DC_CrownCleanLevel1; \
  Restriction_PavilionCleanLevel1, DC_PavilionCleanLevel1; \
  Restriction_PavilionCleanLevel2, DC_PavilionCleanLevel2; \
  : "List for individual grading of parameters in Panel"

Optimization parameters

Список параметров, используемых в оптимизации составляется по списку Optimize исходного оценщикаThe optimization parameters must be mentioned in the list called Optimize.

Code Block
Optimize: \
  DC_TableDiameter DC_TableDiameter DC_TableDiameter \
  DC_GirdleThicknessValue DC_GirdleThicknessBezel DC_GirdleThicknessBezel \
  DC_CrownAngle_Table DC_CrownAngle_Table DC_CrownAngle_CrownHeight_Fixed \
  DC_PavilionAngle DC_PavilionDepthBezel DC_PavilionDepthBezel \
  DC_GirdleRatio DC_GirdleRatio DC_GirdleRatio \
  DC_CrownAngleLevel1 DC_CrownAngle_Table DC_CrownAngle_Table \
  DC_PavilionAngleLevel1 DC_PavilionAngleLevel1 DC_PavilionAngleLevel1 \
  DC_PavilionAngleLevel2 DC_PavilionCleanLevel1 DC_PavilionCleanLevel1 \
  DC_Culet DC_VirtualCuletOffsetX DC_VirtualCuletOffsetX \
  DC_CuletX DC_VirtualCuletOffsetY DC_VirtualCuletOffsetY \
  OP_1 DC_CrownAngleLevel2 DC_CrownAngleLevel2 \
  OP_2 DC_CrownCleanLevel1 DC_CrownCleanLevel1 \
  OP_3 DC_VirtualCuletOffsetX DC_VirtualCuletOffsetX \
  OP_4 DC_VirtualCuletOffsetY DC_VirtualCuletOffsetY \
  OP_5 DC_PavilionCleanLevel2 DC_PavilionCleanLevel2 \
  OP_6 DC_CornerBreakAngle DC_CornerBreakAngle \

Optimization intervals

Необходимо явно указать наборы оптимизационных интервалов. Имена таких интервалов должны начинаться с opt_ To set up the intervals for optimization parameters, we define a set of optimization intervals. These intervals must be named opt_*. и каждый из них должен быть связан непосредственно с идентификатором параметра огранки. (?)

Code Block
optimizationinterval : opt_ca  : DC_CornerBreakAngle             : : Restriction_CornerBreakAngle    : left : right : , : (°) : "Optimization for Corner Break Angle"
optimizationinterval : opt_th  : DC_TotalHeight                  : : Restriction_TotalHeight         : left : right : , : (%) : "Optimization for Total Height"
optimizationinterval : opt_b   : DC_CrownAngle_Table             : : Restriction_CrownAngle          : left : right : , : (°) : "Optimization for Crown Angle"
optimizationinterval : opt_gi  : DC_GirdleThicknessBezel         : : Restriction_GirdleBezel         : left : right : , : (%) : "Optimization for Girdle Thickness"
optimizationinterval : opt_b2  : DC_CrownAngleLevel2             : : Restriction_CrownAngle2         : left : right : , : (°) : "Optimization for Crown Angle Level 2"
optimizationinterval : opt_hc  : DC_CrownHeight_CrownAngle_Fixed : : Restriction_CrownHeight         : left : right : , : (%) : "Optimization for Crown Height"
optimizationinterval : opt_pdb : DC_PavilionDepthBezel           : : Restriction_PavilionDepthBezel  : left : right : , : (%) : "Optimization for Pavilion Depth"
optimizationinterval : opt_a1  : DC_PavilionAngleLevel1          : : Restriction_PavilionAngle1      : left : right : , : (°) : "Optimization for Pavilion Angle Level 1"
optimizationinterval : opt_t   : DC_TableDiameter                : : Restriction_Table               : left : right : , : (%) : "Optimization for Table"
optimizationinterval : opt_vcx : DC_VirtualCuletOffsetX          : : Restriction_VirtualCuletX       : left : right : , : (°) : "Optimization for Virtual Culet X"
optimizationinterval : opt_vcy : DC_VirtualCuletOffsetY          : : Restriction_VirtualCuletY       : left : right : , : (°) : "Optimization for Virtual Culet Y"
optimizationinterval : opt_rt  : DC_GirdleRatio                  : : Restriction_GirdleRatio         : left : right : , : (.) : "Optimization for Girdle Ratio"
optimizationinterval : opt_c1  : DC_CrownCleanLevel1             : : Restriction_CrownCleanLevel1    : left : right : , : (%) : "Optimization for Crown Clean Level 1"
optimizationinterval : opt_p1  : DC_PavilionCleanLevel1          : : Restriction_PavilionCleanLevel1 : left : right : , : (%) : "Optimization for Pavilion Clean Level 1"
optimizationinterval : opt_p2  : DC_PavilionCleanLevel2          : : Restriction_PavilionCleanLevel2 : left : right : , : (%) : "Optimization for Pavilion Clean Level 2"

Start form and optimization forms

Поскольку оценщик является редактируемым, то после изменения границ интервалов имеющиеся оптимизационные формы могут выйти за пределы нужной группы, что сильно снизит эффективность работы алгоритмов. Выход за пределы группы стартовой формы вообще сделает оптимизацию по данной огранке неработоспособной. Для пересчёта форм они должны быть заданы следующим образом.

Since the appraiser is editable, once the intervals are changed, the optimization forms might fall out of the corresponding groups, which would lower the algorithm performance. If the starting form would fall out of the group too, it would render the optimization inoperable. The forms should be listed in the file so as to make them capable of automatic recalculation:

Code Block
form
Code Block
form : "Start and optimization" : Start "DMCs\Princess 3s_Start.dmc"; \
  SetDiamond1 EX DMCs\Princess_3s_EX_Set1.dmcx, VG DMCs\Princess_3s_VG_Set1.dmcx, GD DMCs\Princess_3s_GD_Set1.dmcx, FR DMCs\Princess_3s_FR_Set1.dmcx; \
  SetDiamond2 EX DMCs\Princess_3s_EX_Set2.dmcx, VG DMCs\Princess_3s_VG_Set2.dmcx, GD DMCs\Princess_3s_GD_Set2.dmcx, FR DMCs\Princess_3s_FR_Set2.dmcx \
  : allacceptable : auto : Type1 : "Standard 10 optimization min-max forms for all grades"

В некоторых случаях автоматический пересчёт оптимизационных форм невозможен. Например, оценщик 15Sep2016 использует для огранки BrilliantF64 помимо интервальных ещё и не интервальные оценки из Facetware. В этом случае необходимо отключить автоматический пересчёт форм, заменив Sometimes automatic recalculation is impossible. For example, the appraiser 15Sep2016 uses non-interval Facetware grades for cutting type BrilliantF64. When working with such appraisers, the automatic recalculation should be turned off by changing "... : auto : ..." на to "... : fixed : ...". При этом также необходимо помнить, что после изменения интервалов этой огранки необходимо вручную заменить в оценщике dmc и dmcx файлы с формами. Редактор оценщиков в настоящее время не располагает такими возможностями. Всё что он сделает - это выведет в терминале программы предупреждение о том, что стартовая форма или "такая-то оптимизационная форма" не находится в пределах нужной группы и будет её игнорировать.

Conclusion

After being edited, the forms (*.dmc and *.dmcx files) should be recalculated manually. Currently the appraiser editor offers no interface for this. If the forms falls out of the group, the appraiser would raise a warning in the terminal, telling that a certain form is out of the group and would be ignored in the calculation.

Conclusion

The above example was one of direct transfer of the data from the old appraiser to the new one, without any changes on along the way. There are the ways to get more creative. For example, culet offset is rather a Variation parameter than Restriction (since its lower border is 0):Настоящий пример переноса оценщика огранки из не редактируемого вида в редактируемый является фактически прямым переносом: что было в старом оценщике без изменений переносится в новый. Имеет смысл подходить к этому процессу более творчески. Например, параметр виртуального сдвига калетты скорее должен принадлежать к разделу Variation нежели Restriction.

Code Block
interval : Variation_VirtualCuletX       : DC_VirtualCuletOffsetX   : : : EX 0 1.0 VG 0 1.02 GD 0 1.04 FR 0 1.09 : (°) : "Intervals for Virtual Culet X"

Тогда соответствующий оптимизационный интервал будет выглядеть вот такThe optimization interval for a Variation parameter is defined as follows:

Code Block
optimizationinterval : opt_vcx : DC_VirtualCuletOffsetX : : Variation_VirtualCuletX : -right : right : , : (°) : "Optimization for Virtual Culet X"

Then the parameter should be incorporated into the Symmetry composite grade, which in turn goes into the overall grade, together with Restrictions.

The list of individual grades should be updated accordingly.

Since this cutting makes no distinction between DC_VirtualCuletOffsetX and DC_VirtualCuletOffsetY, it would suffice to create just one interval for both. Call it some neutral name, like Variation_VirtualCulet. Grades still can be done independently for both parameters. Such practices are specific for each appraiser and cutting type. For example, culet offsets in X and Y directions are equivalent in Round brilliant (in that they use the same interval), but probably not in EmeraldДалее необходимо определить оценку Symmtery, изменить общую оценку Main и список индивидуальной оценки параметров. Скорее всего, с точки зрения оценки данной огранки нет никакой разницы между DC_VirtualCuletOffsetX и DC_VirtualCuletOffsetY. Поэтому, интервал Variation стоит определить только для одного из них, причём с нейтральным названием Variation_VirtualCulet, а вот оценку уже делать для двух разных параметров. Какие-то общие рекомендации для подобных случаев делать довольно сложно,так как они весьма специфичны для каждой огранки и оценщика. Например, обычный сдвиг калетты для огранки Brilliant подчиняется правилу "независимости" для направлений Ox и Oy (границы сдвига будут одинаковы в каждом направлении), а для огранки Emerald они уже могут быть неодинаковы.