[X3D-Public] CADPart contains CADFace nodes; also contains other nodes? fixing spec ambiguity

Don Brutzman brutzman at nps.edu
Wed Jun 20 09:59:48 PDT 2012


In discussion today with Vince, he has identified an important ambiguity in
the handling of CADPart.  Details follow.  We will meet again Friday at
9 pacific, noon eastern on the Web3D conference line for next steps.

Key question:  can CADPart contain only CADFace nodes, or can it also contain
other children nodes too?

I believe that the specification is somewhat ambiguous.  A strict reading of the
node interface would indicate that only CADFace nodes can be contained.
However, the prose that follows is not quite explicit.  Usually our spec
prose makes it very clear what the interface is.  This ambiguity led to
some difficulty on our part with implementations.

Summary status:
- spec ambiguous
- DTD      says only CADFace
- Schema   says CADFace plus other group children
- Tooltips says CADFace plus other group children

Is there a problem if CADPart contains more than CADFace children?  Usually
X3D spec is flexible if there are no confounding conditions.  However, since
CADPart is usually the smallest atomic component that can be manipulated,
with CADFaces simply being presentation pieces of that single CADPart.
As a counterexample, clearly we want to discourage the insertion of a 
CADAssembly within a CADPart.

Of note is that CADFace allows Shape or LOD, but the LOD is only allowed
to contain Shape nodes as children.  Thus each CADFace is geometry only.

What is the correct resolution for CADPart children?  It appears that the
strict interpretation is correct.  Suggest spec revision:

	The CADPart node represents the location and faces that constitute
	a part in the CAD model. 
add:
	CADPart can only contain metadata and CADFace nodes.

Other actions:
- correct X3D Schema to match DTD, strict interpretation of children
- update Tooltips
- create an example for X3D Basic Examples - CAD illustrating use of LOD
  http://www.web3d.org/x3d/content/examples/Basic/index.html#CAD

References:

========================================================================
http://www.web3d.org/files/specifications/19775-1/V3.2/Part01/components/CADGeometry.html#CADPart
32.4.4 CADPart

CADPart : X3DGroupingNode, X3DProductStructureChildNode {
  MFNode     [in]     addChildren
  MFNode     [in]     removeChildren
  SFVec3f    [in,out] center           0 0 0    (-∞,∞)
  MFNode     [in,out] children         []       [CADFace]

[...]
The CADPart node represents the location and faces that constitute a part in the CAD model. 
========================================================================

DOCTYPE only supports CADFace nodes as children:

http://www.web3d.org/specifications/X3dDoctypeDocumentation3.2.html#CADPart

CADPart
Element Content Model

(IS?, (MetadataDouble | MetadataFloat | MetadataInteger | MetadataSet | MetadataString)?, (CADFace | (ProtoInstance))*)

========================================================================

Schema however does permit other nodes as children:

http://www.web3d.org/specifications/X3dSchemaDocumentation3.3/x3d-3.3_CADPart.html#Link4F

http://www.web3d.org/specifications/x3d-3.2.xsd

	<xs:element name="CADPart">
		<xs:annotation>
			<xs:appinfo>
				<xs:attribute name="otherInterfaces" type="xs:string" fixed="X3DProductStructureChildNode"/>
			</xs:appinfo>
			<xs:documentation source="http://www.web3d.org/x3d/specifications/ISO-IEC-19775-Amendment1-FPDAM-X3DAbstractSpecification/Part01/components/CADGeometry.html#CADPart "/>
		</xs:annotation>
		<xs:complexType>
			<xs:complexContent>
				<xs:extension base="X3DGroupingNode">
					<xs:choice>
						<xs:element ref="CADFace" minOccurs="0" maxOccurs="unbounded"/>
					</xs:choice>
					<xs:attribute name="name" type="SFString"/>
					<xs:attribute name="center" type="SFVec3f" default="0 0 0"/>
					<xs:attribute name="rotation" type="SFRotation" default="0 0 1 0"/>
					<xs:attribute name="scale" type="SFVec3f" default="1 1 1"/>
					<xs:attribute name="scaleOrientation" type="SFRotation" default="0 0 1 0"/>
					<xs:attribute name="translation" type="SFVec3f" default="0 0 0"/>
				</xs:extension>
			</xs:complexContent>
		</xs:complexType>
	</xs:element>

========================================================================

Tooltip interpretation was to contain other nodes besides CADFace:

On 6/13/2012 8:10 AM, Don Brutzman wrote:
> [...]
> http://www.web3d.org/x3d/content/X3dTooltips.html#CADPart
> 
> [X3D 3.1] CADPart defines both coordinate-system location and the faces that constitute a part in a Computer-Aided Design (CAD) model. CADPart is a Grouping node that can contain CADFace nodes.
> Hint: can also contain Shapes or other grouped content.

========================================================================

Comments and discussion welcome.  Absent other feedback we intend to
pursue action items with the strict interpretation.

Simple example to consider

CADPart
	CADFace
		LOD
			Shape
				IndexedQuadSet
			Shape
				Box

all the best, Don
-- 
Don Brutzman  Naval Postgraduate School, Code USW/Br       brutzman at nps.edu
Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA   +1.831.656.2149
X3D graphics, virtual worlds, navy robotics http://faculty.nps.edu/brutzman





More information about the X3D-Public mailing list