Question 1
We have an MIS system for fabricators, and our initial goal is to be able to import a
bill of materials (parts, assemblies [?]), labor operations, and some of the project data.
The export will generally come from some detailing program. I am assuming that parts
and assemblies will map to located_part and located_assembly, and that in general we will
be interested in the 'physical' level of entity. Does this seem correct?
Answer to Q1
Yes. Developers of MIS systems will be interested mainly in the physical
entities in LPM/5. These are all the ones related to assembly_manufacturing. They will not
be interested in the analysis aspects of LPM/5. It should be remembered that the CIS was
not designed specifically to create an MIS system, but it does contain a lot of
information that will be relevant to such a system. More importantly, the LPM deals with
the exchange of data between different applications, and therefore contains information
that a MIS system may produce (and be able to export) or require (and be able to import).
In general, the located_item and its subtypes deal with physical aspects of
the structure. Many of the entities that these located items reference (and make use of
for their own definition) are also used by the design aspects of the structure. For
example, the entity part is used to define both the located_part
and the design_part.

Question 2
I am not sure what entity we need for assemblies and how we might unpack
the parts within it. Where is the mechanism for decomposing
assembly_manufacturing into parts (i.e. located_parts [?])?
Assembly_manufacturing_child appears to offer only a cumbersome singly-linked
list.
Answer to Q2
The entity ‘assembly_manufacturing_child’ is used to define the
hierarchical composition of assemblies from the manufacturers (fabricators)
point of view. The relationship from child to parent (assembly_manufacturing_child
to assembly_manufacturing) is indeed one-to-one. This means that a child can
only have one parent. The relationship from parent to child (the INVERSE
direction) is one-to-zero-one-or-many. This means that the parent assembly can
have any number of child assemblies. For the purposes of manufacturing, a
‘beam’ subassembly can only belong to one (and only one) ‘frame’
assembly.
To place the assembly in a structure, we use the ‘located_assembly’
entity. This provides a coordinate system for the descriptive assembly, and
locates the assembly with respect to its structure.
Similarly, the ‘located_part’ provides a coordinate system for the
descriptive part, and locates the part with respect to its parent
assembly_manufacturing.

Question 3
I am guessing that labor operations will map to located_feature, but I cannot see how a
located_feature can be associated with a located_part. I don't see a mechanism for this
association. Does this association have to be done through the structural_frame_process
classes somehow (and then processes associated with structural_frame_product)? If so,
perhaps you can indicate broadly how this might be done.
Answer to Q3
Labour operations are represented by the structural_frame_process entity
and its subtypes cut, bend, etc., NOT by the feature
entity.
The located_feature can be associated with a located_part using the subtype
located_feature_for_located_part. This provides a coordinate system for the
descriptive feature, and locates the feature with respect to the located_part to which it
is applied. The located_part is modified by the located_feature.
To associate generic products with generic processes with an overall schedule, we use
the entity structural_frame_process_schedule_item. The process must be
assigned a processor (the person and organization performing the process), start and end
times as well as a duration. The process produces a product from the processing of one or
more products. Both the processed products and the resulting product must be declared.
To describe the process that puts the parts and assemblies together, we use the entity
assemble. This is a type of structural_frame_process that produces
a single assembly_manufacturing by bringing together a number of components
using a number of processes. The components that are required to make up the
assembly_manufacturing are selected from a list of either an
assembly_manufacturing_child, a located_part, a
located_feature, or a located_joint_system.

Question 4
How do you designate/define a tapered member?
Answer to Q4
Use the part_prismatic_complex_tapered.

Question 5
How is a located_part_joint really different from a located_joint? Examples?
Answer to Q5
As explained on page 422 of publication SCI-P-268, a 'located_part_joint'
represents a logical connection between a pair of 'located_parts' which require
the existence of one or more 'located_joint_systems'. This entity provides an
association between the entities 'located_part' and 'located_joint_system'.
As explained on page 417 of publication SCI-P-268, 'located_joint_system'
(there is no located_joint entity)
provides a coordinate system for a 'joint_system' and places that 'joint_system'
within an 'assembly_manufacturing'. This entity provides the
association between the entities 'coord_system', 'joint_system' and 'assembly_manufacturing'.
To put it simply, the 'located_part_joint' tells us that 2 parts are joined
together, while the 'located_joint_system' tells us how the connection is physically
fulfilled.
In the diagram above, the column ('located_part' #1) is logically
connected to the endplate ('located_part' #2). This 'located_part_joint'
is physically fulfilled by a 'located_joint_system' consisting of 4
Bolts, nuts and washers (which make up a 'joint_system_mechanical'). The
endplate is logically connected to the beam ('located_part' #3). This 'located_part_joint'
is physically fulfilled by a 'located_joint_system' consisting of a 'weld_mechanism'
along a path defined by a composite_curve (making up a
joint_system_welded).

Question 6
My understanding of the use of assembly_manufacturing /
located_assembly is that the exporting application should gather
identical assemblies and create ONE instance of assembly_manufacturing
and MANY instances of located_assembly for each one. Similarly for part
and located_part. None of the example files I have looked at have done
that so is this a question of not following the standard or just
interpretation.
A relatively simple example would be a situation where a assembly
consists of a beam and 4 identical angle cleats shop bolted. The
detailing software identifies that as assembly A1 with 2 occurrences. A
similar assembly (same cleats different main beam), is identified as A2
with 3 occurrences.
Answer to Q6
In LPM/5, structures are built from a complex, multi-level hierarchy
of parts, joints, subassemblies and assemblies. These are all located
with respect to each other via an equally complex, multi-level hierarchy
of nested coordinate systems. (If done to its extreme, any part in a
structure can be located with respect to some fixed point on planet
Earth (longitude, latitude, altitude).
Unfortunately, few software developers have implemented CIS/2 in such
a way that takes full advantage of this scheme. Some even cheat - and
use analytical nodes as locating points for assemblies.
Ideally, each unique part in a structure should be modelled by one
instance of part. As steel structures usually contain repetition, these
unique part 'types' will occur many times throughout the structure. It's
not only parts that can be repeated, but whole assemblies.
Unfortunately, few software developers have implemented the component
optimisation facilities available in CIS/2. The simplest CIS translators
create an instance of part for each instance of located_part, and an
instance of 'assembly_manufacturing' for each instance of 'located_assembly'.
That is, a one-to-one correspondence. While this is not actually wrong
in CIS/2, it not optimised for data exchange and not optimised for
fabrication. It relies on the receiving application to rationalize and
optimise the parts it receives.

Question 7
How do I determine which is the main part in an assembly from the
information given in the CIS/2 files? This information should be known
in the detailing systems.
Answer to Q7
There is no explicit attribute in LPM/5 to say 'main part'. Each part
in an assembly is considered to be at the same level in the assembly
hierarchy. A difficulty may arise, therefore, if one wishes to state
explicitly that a stiffener is welded to a beam section rather than the
beam section being welded to the stiffener.
There are several possible attributes that could fulfil this role.
The entities 'part', 'assembly', 'located_part', and 'located_assembly'
are all subtypes of the top level entity 'structural_frame_item', and as
such inherit the attributes
item_number
: INTEGER;
item_name
: LABEL;
item_description
: OPTIONAL TEXT;
Either the item_name or the item_description could be used to say
'main part'. For example, the item_name of an instance of located_part
could include the text string 'main component'.
(Things are a little easier with assemblies, as the entity 'assembly'
has the attribute 'assembly_sequence_number', and the entity 'assembly_manufacturing'
has an attribute 'assembly_sequence'.)
It should remembered that 'parts' don't have locations -
located_parts do. The 'part' is effectively the specification of a
component type, while the 'located_part' is an occurrence or 'token' of
a part. The location of a 'located_part' is defined by its coordinate
system. In the case of a prismatic part, the start end of the cut piece
defines the origin of the part's local coordinate system. This is then
located and oriented with respect to its parent assembly.
(Thus, analytical 'nodes' play no role in the location of physical
parts!)
Further, the 'located_part' has to belong to a 'located_assembly'.
Although the 'located_assembly' can contain many 'located_parts', the 'located_part'
can only belong to one 'located_assembly'.

Question 8
I have received CIS/2 files containing several part_sheet entities,
but I cannot see how to determine the plate width or length from the
data given. Should these actually be part_sheet_bounded_simple or even
use section_profile_rectangle?
Answer to Q8
The part_sheet entity says nothing about the width or length of the
plate. If this is instanced on its own, the stock material is regarded
as infinite in length. If you wish to represent a stock plate (one with
known a length and width) then the subtype part_sheet_bounded_simple or
part_sheet_bounded_complex should be populated.

Question 9
My understanding of the cut_length for a part_prismatic_simple is
that it defines the length before any cutting features are applied, e.g.
a beam could be defined with its coordinate system placing its start at
a column centre, and cut_length being the distance to the next column.
In order to determine the actual finished length of steel, it would be
necessary to take into account any cutting features defined for the
beam-column connections. Is that correct because it would then be
possible for the stock_length to be less than the cut_length which is
not allowed? At the moment, none of the files includes cutting features
so has anyone got any plans to add them?
Answer to Q9
It is true that the cut_length attribute of the part_prismatic_simple
entity defines the length before any cutting features are applied,
however it would not be a good idea to define a beam with a coordinate
system placed at the column centre, and cut_length equal to the distance
to the next column. The attribute cut_length is intended to
represent the length of the part as cut by the fabricator from a stock
piece. If profiles were made to order, then the stock piece would be the
correct cut length required for the job. However, stock pieces tend to
come in truck-size pieces (say 12m) - which are then cut as required for
a job. It is assumed that this cut is square (i.e. perpendicular to the
longitudinal axis). If the finished piece is required to have a skewed
end - the extra length must be taken into account when cutting the stock
piece. The stock length should always be greater than the cut
length.
The fact that none of the CIS/2 files you are receiving includes
cutting features is probably because few applications actually support
features (other than 'cut backs') Where applications support features,
then they should put them in the file.

Question 10
Only the one of the CIS/2 files I received contained material
information, i.e. steel grades. Is there any reason for omitting it from
the others.
Answer to Q10
At time of writing, most CIS/2 translators are still under
development. Software vendors are likely to increase the scope of
their translators version by version.
If your underlying application can deal with materials (description,
grade) then this should be exported as using the entity 'material'. If
you wish to capture material properties, use the entity 'material_representation'
with the associated material_representation_item.

|