Question 1
I am having trouble trying to determine which entities correspond to
different information in our data structures. I can map a beam to a combination
of points, nodes, an element_curve, 2 element_node_connectivity's, and an
analysis_model, but I don't know if this is sufficient. Once I have established
that there is an element between two nodes, can I refer to that element as
either a beam or a column, or is this implicit in their orientation? And is
there a way to differentiate between a beam and a horizontal brace, as our data
structure does? I noticed that an assembly_design_structural_member_linear can
be specified as a brace, a be am, a column, etc., but I don't see a connection
between this entity and the entities I mentioned above.
Answer to Q1
In the CIS, there are three ways of viewing structural engineering
information (sometimes called three levels of abstraction): analysis, design,
and manufacturing. In this context, 'elements' are analytical devices, whereas
assemblies can be either design concepts (assembly_design) or manufacturing
specifications (assembly_manufacturing).
For analytical purposes, an analysis_model is composed of elements and nodes.
If the SUPERTYPE entity 'element' is populated on its own (i.e. rather than as
one of its subtypes) it merely has a name, number and description, and a
relationship to its parent analysis_model. It also requires 'connecting nodes' -
established via the 'element_node_connectivity' entity. Thus, an ‘element’
is an analytical finite element which is not ‘classified’ as a beam or
column. Descriptive information may be added to the ‘element’ using its
attributes ‘element_description’. (Please note that the ‘element_name’
has to be unique within an ‘analysis_model’.)
For design purposes, assemblies can be very abstract, with just a name,
number and description. The subtypes of ‘assembly’ add more descriptive
information – particularly about its function; e.g. ‘assembly_design_structural_member_linear’.
Its attribute ‘linear_member_type’ may be set to .BEAM., .COLUMN., .BRACE.,
etc.
The relationship between the two entities ‘assembly’ and ‘element’ is
made using the ‘assembly_map’ entity. This is an association between an
assembly and a set of analytical elements. There is a similar construct –
‘part_map’ – that makes the association between a part and set of
analytical elements. Finally, the construct - ‘element_mapping’ - makes the
association between an element and a part.

Question 2
How do I populate an ANDOR supertype (e.g. element_with_material)?
Answer to Q2
Entities defined as subtypes or supertypes of other entities are mapped to the exchange
structure (i.e. populated in the physical file) using one of two mapping rules, internal
mapping or external mapping.
For example, the entity element is defined as a
ENTITY element
SUPERTYPE OF (ONEOF
(element_volume,
element_surface,
element_curve,
element_point) ANDOR
element_with_material)
Thus, the potential populations are:
- element
- element_volume
- element_surface
- element_curve
- element_point
- element+material
- element_volume+material
- element_surface+material
- element_curve+material
- element_point+material
In cases 1 to 6, internal mapping may be used. In cases 7 to 10, external mapping must
be used, since these instances have 'multiple inheritance graphs'; i.e. they inherit
attributes from 'parent entities' as well as 'sibling entities'.
The same principle extends to subtypes of the subtypes of element. For example, a
sample population of element_curve_simple with material.
#1 = (ELEMENT ('1', 'Test element curve with material', #2, 1, $)
ELEMENT_CURVE()
ELEMENT_CURVE_SIMPLE(#3,$)
ELEMENT_WITH_MATERIAL(#14));
Instances of an entity having a SUBTYPE clause in the EXPRESS entity declaration are
known as 'complex entity instance', in that they involve attributes from more than one
entity-type declaration. The treatment of complex entity instances is formally defined in
clause 11.2.5 of STEP Part 21.
See the example physical file element+material.stp
A detailed explanation is given in Appendix F of the CIS/2 Implementation Guide.

Question 3
Where can I find entities for assemblies and parts?
Answer to Q3
As discussed above, there are three ways of viewing structural engineering
information: analysis, design,
and manufacturing. Parts and assemblies lie in both the design and
manufacturing views. Assemblies can be either design concepts (assembly_design) or manufacturing
specifications (assembly_manufacturing). Similarly, parts can be either design concepts
(design_part) or manufacturing
specifications (located_part).
(See also Q1 in the Manufacturing Section)

Question 3
Why not put the representation_context inside the cartesian_point entity?
Answer to Q3
The entities representation_context and cartesian_point are both taken from
the STEP Generic Resources. The representation_context entity is used to
provide a context for several different types of representation. Moreover,
its subtype - geometric_representation_context is used provide the context
for several different types of geometric_representation_item - cartesian_point
is one such item.

Question 4
When can I use indirect relationships for the representation_context so I
don't have to put every node in a context?
Answer to Q4
Every representation_item must belong to a representation and thereby be
given a context. However, a representation_item may already belong to a
representation by being used by another representation_item. For example,
a cartesian_point may be used to define a line, the cartesian_point is thereby
placed in the geometric context of the line.

Question 5
In CIS/1, the only aggregation type was SET. Is this true of CIS/2?
Answer to Q5
No, CIS/2 makes use of BAG, SET, LIST, and ARRAY data types.

Question 6
If people wish to extend scope of LPM/5? can additions be made to
LPM/5? Can you add more attributes (i.e. that may not already be included)
to entities?
Answer to Q6
If errors are found in LPM/5 these need to be corrected, but it is not
realistic to consider extending the scope of LPM/5. LPM/5 is already large
and complex, and should address in-scope needs. A future extended-scope
LPM/6 can be envisaged, but not until software vendors and the industry have
fully exploited a stable LPM/5 (and until what else needs to included is fully
understood).

Question 7
Is there a built-in means for extending CIS/2 entity
definitions?
Answer to Q7
If the definition of an entity in the CIS/2 documentation is unclear, the authors
should be consulted. The best way to do this is via the CIS Users Group, or the CIS/2 web
site.
Users may not define new entities. Nor may they define new attributes for any of the
entities. There are no 'user defined types' in the CIS.

Question 8
What if people wish to extend scope of LPM/5?
Answer to Q8
The formal version of LPM/5 (available from this site)
in now fixed until 2002 at the earliest - any changes that are deemed necessary will
have to go through the user group and put into a new schema (LPM/5.1) and released with a
new CIS/2.1. These releases are likely to occur only once a year at most. More
importantly, they will be upwardly compatible.

Question 9
How can additions be made to LPM/5?
Answer to Q9
Now that the LPM/5 schema is fixed - it is possible to make additions
to LPM/5. We will have to look to the next release of the CIS (say CIS/2.1 containing LPM/5.1) or
even the next generation of the CIS (say CIS/3 containing LPM/6) depending on the
additional functionality requested. There are several constructs in the LPM that
appear highly complex, but they do allow for future extensions through subtyping.
Currently, the SCI is acting as the custodians of the CIS. It is doing this on behalf
of the CIS Users Group and the wider industry. If this situation continues, then if people
wish to have the LPM extended, they should propose this via the CIS Users Group (or
through the web site). The web site will also host an 'Issues List', to which users and
software vendors will be asked to contribute.
Question 10
Is there an element or something defined that groups all
items in LPM/5 associated with a particular entity?
Answer to Q10
This is exactly what a Conformance Classes (CC) does for a particular entity.
To group any entity instance with any other entity instance, use the group
and group_relationship entities
