Block Assignment Rules - Intergraph Smart 3D - Reference Data

Intergraph Smart 3D Planning Reference Data

Language
English
Product
Intergraph Smart 3D
Subproduct
Planning
Search by Category
Reference Data
Smart 3D Version
12.1 (2019)

Validates parts in block assignment. Parts are assigned using the Block Assignment and Manage Intersections commands in the Planning task:

  • By range or geometry (for non-structural parts that cannot be split).

  • By availability for assignment (for parts that are not in an assembly).

  • By splits created by planning seams (for structural parts).

Visual Basic Project: [Programming Resources Folder]\Programming\ExampleCode\Planning\Rules\BlockAssignment\PlnBlkAssnRules.vbp

Compiled Rule: [Reference Data Folder]\SharedContent\bin\Planning\Rules\Release\SM3DPlnBlkAssnRules.dll

Bulkload: Planning Rules Workbook

The AssignmentMethods class module is included in the Visual Basic project.

You can modify the logic used for block assignment. This includes creating a new rule with a different ProgID and calling that rule in the BlockAssignmentRules worksheet of the Planning Rules Workbook. In all cases, block assignment rules must use the IJBlockAssnRules interface.

The following methods from IJBlockAssnRules are used by the block assignment rules.

CanObjectBeAddedToBucket

This method checks general conditions that need to be satisfied for an object to be processed.

HRESULT CanObjectBeAddedToBucket

([in] IDispatch* pPart, [out,retval] VARIANT_BOOL* bAdd);

The first argument represents the object. The second argument is a Boolean variable signifying whether the object should be processed.

You can create your own processing criteria. In the following example, plate parts are not processed by adding this condition:

If TypeOf pPart Is IJPlatePart Then
IJBlockAssnRules_CanObjectBeAddedToBucket = False
End If

IsCandidateObject

This method determines whether an object is assigned to a block based on the selected assignment method.

HRESULT IsCandidateObject

[in] IDispatch* pPart, [in,out] PlnBlkAssnMethods*

eAssignMethod,

[in,out] double* dOverlapFactor, [out,retval]
VARIANT_BOOL* bDontProcess);

The first argument represents the object. The second argument represents the method of assignment. The third argument defines parameters for the assignment method. The fourth argument is a Boolean variable signifying whether the object should be assigned.

The following assignment methods are available for IsCandidateObject:

PlnAssignByGeometry - The object is assigned when a defined percentage of its geometry overlaps with the block. The dOverlapFactor argument defines the minimum percentage of overlap needed.

In the following example, the profile part is assigned to Block 1 because dOverlapFactor = 0.8, and the part geometry overlaps the block volume by more than 80%.

1 - Block 1

2 - Block 2

PlnAssignByRange - The object is assigned when part of the orthogonal rectangular volume created from its range overlaps with the volume of the block. The dOverlapFactor argument defines the minimum percentage of overlapping volume needed.

In the following example, the outfitting object is assigned to Block 1 because dOverlapFactor = 0.8, and the object volume overlaps the block volume by more than 80%.

1 - Block 1

2 - Block 2

3 - Outfitting part

4 - Rectangular volume enclosing the part

5 - More than 80% of the rectangular volume overlaps with Block 1

6 - Less than 20% of the rectangular volume overlaps with Block 2

PlnAssignByCOG - The object is assigned when its center of gravity lies inside the volume of the block.

PlnAssignBySmallVol - The object is assigned when its geometry intersects with a smaller volume derived from the block volume minus an equal reduction from all faces.

This method is intended to be used only for plate parts and profile parts which are split by planning seams.

In the following example, both parts for the split profile intersect both blocks. Each part intersects only one of the derived smaller volumes, which determines assignment to the larger blocks.