The elevationG2 package has been moved from cm.abstract.materialHandling.tools.elevationG2 to cm.abstract.tools.elevationG2. As such, the Mh prefix has been dropped and classes, functions, and constants previously using this prefix have been renamed. In general, "mh" has been dropped from class names with a "G2" added at the end. The new prefix used in the package is "elev". For functions, globals, and constants, only "mh" was dropped with "elev" as the new prefix. If you were previously using classes or functions from cm.abstract.materialHandling.tools.elevationG2 and are getting a lot of undefined errors in your extension, please rename them to follow the new naming convention.
Examples (Not the full list):
// Classes Old: public class MhElevEnv New: public class ElevEnvG2 Old: public class MhElevAutoSnapperEnv New: public class ElevAutoSnapperEnvG2 Old: public class MhElevArrow New: public class ElevArrowG2 Old: public class MhElevArrowSnap New: public class ElevArrowSnapG2 Old: public class MhElevContentEditor New: public class ElevContentEditorG2 Old: public class MhElevContentSnapper New: public class ElevContentSnapperG2 Old: public class MhElevContentSnapperEnv New: public class ElevContentSnapperEnvG2 Old: public class MhElevDialog New: public class ElevDialogG2 Old: public class MhElevConnectType New: public class ElevConnectTypeG2 Old: public class MhElevTextSnapper New: public class ElevTextSnapperG2 Old: public class MhElevSpace New: public class ElevSpaceG2 Old: public class MhGElevArrow New: public class GElevArrowG2 Old: public class MhElevView2D New: public class ElevView2DG2 Old: public class MhElevArrowInsertAnimationG2 New: public class ElevArrowInsertAnimationG2 Old: public class MhElevAutoDimEnv New: public class ElevAutoDimEnvG2 Old: public class MhElevAutoTextEnv New: public class ElevAutoTextEnvG2 // Constants Old: public const str mhElevTextTypeKey New: public const str elevTextTypeKey Old: public const str mhElevDimTypeKey New: public const str elevDimTypeKey // Globals Old: public ConnectRule mhElevConnectRule; New: public ConnectRule elevConnectRule; // Functions Old: public Graph mhElevGraphFrom3D(Primitive3D scene, bool filterBelow0, bool mergeMeshes=false, RangeF sliceZ=null, LineType lt=null, Color fillColor=null, function(ATriMeshF[] meshes) cleanupFk=null) New: public Graph elevGraphFrom3D(Primitive3D scene, bool filterBelow0, bool mergeMeshes=false, RangeF sliceZ=null, LineType lt=null, Color fillColor=null, function(ATriMeshF[] meshes) cleanupFk=null)
// MhUndoOp Old: public constructor(Space space, SnapperRef xparent, Snapper xchild) New: public constructor(Space space, Snapper xparent, Snapper xchild) // MhConfigRef Old: public str customName; New: public bool isCustom; // MhCollisionAlternative Old: extend public void appendCollisionPrimitives(CollisionResolver resolver, Snapper z) New: extend public void appendCollisionPrimitives(CollisionResolver resolver, Snapper z, Snapper{} visited=null)
// MhCatalogAccess Old: extend public void putData(PropObj owner, Object data, str dataKey) New: extend public void putData(MhSnapper owner, Object data, str dataKey) Old: extend public Object get(PropObj owner, str valueKey, str dataKey) New: extend public Object get(MhSnapper owner, str valueKey, str dataKey) Old: extend public void put(PropObj owner, str valueKey, Object option, str dataKey) New: extend public void put(MhSnapper owner, str valueKey, Object option, str dataKey) Old: extend public double getDimension(PropObj owner, str dimensionKey, str dataKey) New: extend public double getDimension(MhSnapper owner, str dimensionKey, str dataKey) Old: extend public void putDimension(PropObj owner, str dimensionKey, double value, str dataKey) New: extend public void putDimension(MhSnapper owner, str dimensionKey, double value, str dataKey) Old: extend public box getBox(PropObj owner, point p0=point0, str strW="w", str strD="d", str strH="h", str dataKey="default") New: extend public box dataBound(MhSnapper owner, str dataKey, point p0=point0, str strW="w", str strD="d", str strH="h") Old: extend public SubSet getDomain(PropObj owner, str valueKey, str dataKey) New: extend public SubSet getDomain(MhSnapper owner, str valueKey, str dataKey) Old: extend public str styleNr(PropObj owner, str dataKey) New: extend public str styleNr(MhSnapper owner, str dataKey) Old: extend public str description(PropObj owner, str key, str dataKey) New: extend public str description(MhSnapper owner, str key, str dataKey) Old: extend public void ensureSettings(PropObj owner) New: extend public void ensureSettings(MhSnapper owner) Old: extend public PartsEnv parts(MhSnapper owner) New: extend public void appendParts(MhSnapper owner, str dataKey, PartsEnv env) Removed: extend public SymNode buildSym(PropObj owner, str dataKey="default", Object env=null) Removed: extend public Transform symTransform(PropObj owner, str dataKey="default", Object env=null) Removed: extend public void afterBuildSym(PropObj owner, str dataKey="default") Removed: extend public void invalidateSym(PropObj owner, str dataKey="default")
Old: public class BraceInfo New: public class MhBraceInfo // MhStorageConfigurationItem Old: extend public bool requiresPreviewRebuild(str key, Object value, Object previous) New: extend public bool requiresPreviewRebuild(str key, Object value, Object previous, Object propOwner) // unitLoadFunctions.cm Old: public UnitLoad findEqualUnitLoad(UnitLoad unitLoad) New: public UnitLoad findEqualUnitLoad(UnitLoad unitLoad, World w=null) // MhRowEntryLayout Old: public MhEngineConstructionEntry[] rowEntryPattern; New: public MhEngineEntry[] rowEntryPattern; Old: public MhEngineConstructionEntry startEntry; New: public MhEngineEntry startEntry; Old: public MhEngineConstructionEntry endEntry; New: public MhEngineEntry endEntry; Old: public constructor(MhEngineConstructionEntry[] rowEntryPattern, MhEngineConstructionEntry centerEntry=null, MhEngineConstructionEntry aisleEntry=null, MhEngineConstructionEntry startEntry=null, MhEngineConstructionEntry endEntry=null) New: public constructor(MhEngineEntry[] rowEntryPattern, MhEngineConstructionEntry centerEntry=null, MhEngineConstructionEntry aisleEntry=null, MhEngineEntry startEntry=null, MhEngineEntry endEntry=null) // MhRowEntryLayoutPopulator Old: extend public MhEngineConstructionEntry[] rowEntryPattern() New: extend public MhEngineEntry[] rowEntryPattern() Old: extend public MhEngineConstructionEntry startEntry() New: extend public MhEngineEntry startEntry() Old: extend public MhEngineConstructionEntry endEntry() New: extend public MhEngineEntry endEntry()
Double deep offset behavior has been removed. The bay shape will now account for the offset via the bottomStorage collision primitive.
Removed: public class MhDoubleDeepBackOffsetBehavior Removed: public mhLazyGlobal MhBehavior mhDoubleDeepBackOffsetBehavior
Double deep classification behavior has been removed. This behavior was previously needed because it was possible to disconnect one or more rows in a group and the behavior was used to keep track of the classification. It is no longer possible to do this disconnect so this behavior is no longer needed. The back classification is added during insert.
Removed: public class MhDoubleDeepBackClassificationBehavior Removed: public mhLazyGlobal MhBehavior mhDoubleDeepBackClassificationBehavior
Linking has been pushed to the end of an engine run for the sake of performance. However, certain behaviors such as frameValidCheck
relies on linking to be correct. This behavior was previously run during after export but now that is too early. Because of this, MhAfterEngineExportBehavior
has been split into two different behaviors: MhAfterEngineInitialExportBehavior
and MhAfterEngineFinalizeRunBehavior
.
If you were previously extendng from MhAfterEngineExportBehavior, by default, you should now use MhAfterEngineInitialExportBehavior
. MhAfterEngineFinalizeRunBehavior
should be used if linking is required for your behavior or if MhAfterEngineInitialExportBehavior
is too early.
Old: public class MhAfterEngineExportBehavior New: public class MhAfterEngineInitialExportBehavior New: public class MhAfterEngineFinalizeRunBehavior Old: public const symbol sAfterSystemExport New: public const symbol sAfterInitialExport New: public const symbol sAfterFinalizeRun Old: public class MhRowAfterEngineExportBehavior New: public class MhRowAfterEngineInitialExportBehavior // Methods previously used in MhAfterEngineExportBehavior. Please replace them with the relevant methods below. Old: extend public void afterExport(MhSystemCollection system) Old: extend public void afterExport(MhSnapper parent, MhSnapper owner) // MhAfterEngineInitialExportBehavior New: extend public void afterInitialExport(MhSystemCollection system) New: extend public void afterInitialExport(MhSnapper parent, MhSnapper owner) // MhAfterEngineFinalizeRunBehavior New: extend public void afterEngineFinalizeRun(MhSystemCollection system, Snapper{} exported) {} New: extend public void afterEngineFinalizeRun(MhSnapper parent, MhSnapper owner) // Old after export behaviors and their replacements. Old: public class MhRowAfterEngineExportBehavior New: public class MhRowAfterEngineInitialExportBehavior Old: public mhLazyGlobal MhBehavior mhRowAfterEngineExportBehavior New: public mhLazyGlobal MhBehavior mhRowAfterEngineInitialExportBehavior Old: public class MhRackingFrameAfterEngineExportBehavior New: public class MhRackingFrameAfterEngineFinalizeRunBehavior Old: public mhLazyGlobal MhBehavior mhRackingFrameAfterEngineExportBehavior New: public mhLazyGlobal MhBehavior mhRackingFrameAfterEngineFinalizeRunBehavior Old: public class MhAdjustChildAccessoriesAfterExportBehavior New: public class MhAdjustChildAccessoriesAfterInitialExportBehavior Old: public mhLazyGlobal MhBehavior mhAdjustChildAccessoriesAfterExportBehavior New: public mhLazyGlobal MhBehavior mhAdjustChildAccessoriesAfterInitialExportBehavior
The aisleOverhang
method is no longer needed. Overhangs are now calculated using engine entries.
Removed: extend public Double aisleOverhang(MhSnapper snapper, MhSnapperChangedEnv env)
Old: extend public double maxZ(MhEngineEntry levelParent, MhEngine engine, CollisionPrimitive levelPrim) New: extend public double maxZ(MhSnapper snapper)
The MhBayFrontArrow3DBehavior
used in the bay editor has been removed in favor of using vessels instead.
Removed: public class MhBayFrontArrow3DBehavior New: public class MhBayEditArrowVessel
A new appendCollisionPrimitives
method has been added to MhClearanceBehavior
and the old one has been deprecated. If you encounter issues with your unit loads missing clearances, then this is most likely the cause. Please update your code to use the new version.
// MhClearanceBehavior DEPRECATED: extend public void appendCollisionPrimitives(MhSnapperShape shape, Transform t, double elevation, CollisionPrimitive{} geos, LayerSet classification, Int clearanceSpecId=null, Object env=null) : deprecated {} Added: extend public void appendCollisionPrimitives(MhSnapperShape shape, Transform t, CollisionPrimitive{} geos, MhClearanceCollisionPrimEnv clearanceEnv, Object env=null)
The oldULBox
fields have been removed from certain functions. This was previously used to help calculate the overhang and positions for unit load population. However, the old unit load box didn't contain enough information. Engine entries are now being used to record the old unit load dimensions so these fields are not needed anymore.
// MhAisleUpdateWidthFunction Removed: public Box oldULBox; // MhAlignLoadsToAisleFunction Removed: public Box oldULBox;
MhSystemCollisionEntry
has been replaced with MhEngineSystemCollisionEntry
. MhBoxCollisionEntry
has been removed as it is no longer used.
Removed: public class MhSystemCollisionEntry Removed: public class MhBoxCollisionEntry Added: public class MhEngineSystemCollisionEntry // MhSystemEngineEnvironment Old: public MhSystemCollisionEntry{} collisionEntries; New: public MhEngineSystemCollisionEntry{} collisionEntries; Old: extend public MhSystemCollisionEntry operator<<(MhSystemCollisionEntry be) New: extend public MhEngineSystemCollisionEntry operator<<(MhEngineSystemCollisionEntry be)
Old: extend public MhEngineConstructionEntry createLevel(MhEngineEntry[] children, MhEngineSnapperEntry newEntry, double z) New: extend public MhEngineEntry createLevel(MhEngineSnapperEntry lastEntry, double z)
MhFixedStepPrimPopulator
has been removed because it was too unit load specific and we want to avoid having to use a specific populator in one case, and another specific populator in another case. You should instead use MhStepperPopulator
with MhPrimPopulatorStepper
as the stepper. This way, we have a generic populator that covers most cases. A useFixedStep
field and argument in the constructor has been added to handle the case of MhFixedStepPrimPopulator
. A limitingLayer has also been added to the constructors to give more control. The limiting layer is to have 1 prim on the start and 1 (optional) prim at the end of the populateBox
, so when you start the first step, you are actually resolving against the start prim, and last step against the end.
MhUnitLoadStepPrimPopulator
and MhUnitLoadFixedStepPrimPopulator2
have also been deprecated.
Removed: public class MhFixedStepPrimPopulator Deprecated: public class MhUnitLoadStepPrimPopulator extends MhPopulator : deprecated Deprecated: public class MhUnitLoadFixedStepPrimPopulator2 extends MhPopulator : deprecated // MhPrimPopulatorStepper /** * Use fixed step. * Use this if you always have the same step distance. * Currently used for constructional functions, when all entries are same size. * Don't use this if you want each step to check against additional prim. */ Added: public bool useFixedStep; /** * Fixed step point. * Only used if useFixedStep is true. */ Added: private Point _fixedStepPoint; Added: public constructor(CollisionPrimitive startPrim, CollisionPrimitive endPrim=null, CollisionPrimitive additionalPrim=null, bool useFixedStep=false) Added: public constructor(box toPopulateBox, Layer limitingLayer, vector v, CollisionPrimitive additionalPrim=null, bool useFixedStep=false)
The updateFlueGap
method has been removed from mhLevelShape
. Please use the updateFlueGap
method in MhLoadToLoadDistanceBehavior
instead.
Removed: extend public void updateFlueGap(MhClearanceSpec oldSpec, MhClearanceSpec newSpec)
// MhSiloShape Old: extend public void buildStructure(MhSnapper[] rows) New: extend public void buildStructure(MhSnapper[] rows, MhEngine engine=null) Old: extend public void calculateStructurePositions(MhSnapper[] rows) New: extend public void calculateStructurePositions(MhSnapper[] rows, MhEngine engine=null)
// MhRackingBayElevAutoSnapperEnvBehavior Old: extend public void appendAutoRightSideDims(MhSnapper bay, str key, point floorP0, double dim, UserTextStyle ts, UserDimensionStyle ds, MhElevAutoSnapperEnv[] res) New: extend public void appendAutoRightSideDims(MhSnapper bay, str key, ElevArrowG2 arrow, point floorP0, double dim, UserTextStyle ts, UserDimensionStyle ds, ElevAutoSnapperEnvG2[] res) Old: extend public void appendAutoElevYDims(str key, range[] rs, point start, double dim, UserTextStyle ts, UserDimensionStyle ds, MhElevAutoSnapperEnv[] res) New: extend public void appendAutoElevYDims(str key, MhElevArrow arrow, range[] rs, point start, double dim, UserTextStyle ts, UserDimensionStyle ds, MhElevAutoSnapperEnv[] res) // MhBracingBehavior Old: extend public double bracingH(MhSnapper owner) New: extend public double bracingH(MhSnapper owner, MhBraceInfo brace) Old: extend public double braceLength(MhSnapper owner, box b) New: extend public double braceLength(MhSnapper owner, box b, MhBraceInfo brace) Old: extend public line generateLine(MhSnapper owner, line2D l, box b) New: extend public line generateLine(MhSnapper owner, MhBraceInfo brace, line2D l, box b) Old: extend public line[] braceLines(CoreObject owner) New: extend public <MhBraceInfo[], line[]> braceLines(CoreObject owner) Old: extend public SymNode braceSym(line l, CoreObject owner) New: extend public SymNode braceSym(MhBraceInfo brace, line l, CoreObject owner) Old: extend public Primitive3D bar3D(MhSnapper owner, FetchEnv3D env, line ln) New: extend public Primitive3D bar3D(MhSnapper owner, FetchEnv3D env, MhBraceInfo br, line ln)
// MhStorageEditorConfiguration Old: extend public bool appendNewSnappers() New: extend public Snapper{} generateDefaultSnappers(MhStorageConfiguration config) // MhStorageEditorDialog Old: extend public void updateContainerViews() New: extend public void updateContainerViews(bool zoom=false)
Bay editor package has been moved to cm.abstract.materialHandling.storage.tools.editor.bay
. If you see complaints about MhBayEditConfiguration
or similar being undefined, make sure to include the new package in your package.cm.
The aisleSpacerPopulate
function calls have been moved to materialHandling/storage/racking/ package since MhSpacerPopulateFunction
is defined there. This also means we now have new intermediary classes. The aisleSpacerPopulate
calls have been moved from the parents to these new classes.
New: public class MhRackFlueGapRowEngineBehavior extends MhFlueGapRowEngineBehavior New: public class MhRackAisleRowEngineBehavior extends MhAisleRowEngineBehavior New; public class MhRackBayRowStretchEngineBehavior extends MhBayRowStretchEngineBehavior New: public class MhRackBayRowEngineBehavior extends MhBayRowEngineBehavior
MhRowChildSelectionBehavior
has been added to several spawners in the abstract level such as in MhRackFrameSpawner
and MhFrameSpawner
. If you have added your own selection behavior to your spawner and are getting the message below, then this is most likely the cause.
Trying to have 2 behaviors with the same key: selection
This error can cause your snappers to not be exported. To resolve this, you could either remove your own selection behavior if MhRowChildSelectionBehavior
handles your case for you, or you could exclude mhRowChildSelectionBehavior
from your spawner's customOtherBehaviors
and keep your own selection behavior or even extend from MhRowChildSelectionBehavior
.
The clearanceSpecId prop has been removed from MhClearanceCompartmentConfigurationItem
. You can get the clearance spec using the existing "clearanceSpec"
prop. Any code trying to get the clearanceSpecId
from the config should be updated to get the clearanceSpec
instead.
// Examples: Old: currentConfig.clearanceSpecId(); New: currentConfig.clearanceSpec(); Old: config.getValue("clearanceSpecId"); New: config.getValue("clearanceSpec");