IDS checking attributes inherited from IfcTypeObject

A while back I had a conversation about IDS and filtering for userdefined types. Here's a link https://github.com/buildingSMART/IDS/issues/178#issuecomment-2649562586

From that conversation I (mistakenly?) learned, from an IDS perspective, that an IfcObject inherits from its IfcTypeObject.

With that in mind, I am trying to make a Specification that validates the Tag attribute of an object where the Tag attribute is defined on the related IfcTypeObject.

For the attached model and IDS, I want to check if all IfcSign.PICTORAL have a Tag that meets a pattern. Since the signs are standardized, I've put the Tag attribute on the IfcSignType, expecting each instance of IfcSign defined by the IfcSignType to inherit the value of the Tag attribute.
Why doesn't this work?

Massimo

Comments

  • As I understand it, the definitions of the Tag attribute are a bit different.
    IfcSignType:
    "The tag (or label) identifier at the particular type of a product, e.g. the article number (like the EAN). It is the identifier at the specific level."
    IfcSign:
    "The tag (or label) identifier at the particular instance of a product, e.g. the serial number, or the position number. It is the identifier at the occurrence level."

    The attribute in IfcSign does not inherit from IfcSignType.
    A workaround could be Pset_ManufacturerTypeInformation.ModelReference, the only pset (that I found) with tag-like information that IfcSign inherits from IfcSignType.

  • That makes sense. Tag on the IfcSignType is the MUTCD code (R1-1 for a stop sign), Tag on the IfcSign is the product instance (Serial Number: 123ABC).
    In general, do attributes on a type not get inherited by the instance using the type? There is a clear distinction between type attributes and instance attributes. And the PREDEFINEDTYPE discussion that led me down this path is a special case.

  • Thanks
    As far as an IDS is concerned, I think I want to make sure all IfcSign are defined by an IfcSignType and all IfcSignType have a properly formatted Tag.

  • @Rick_Brice said:
    In general, do attributes on a type not get inherited by the instance using the type?

    Click on Object Information -> Object Metadata -> Attributes -> Edit (for a type and for an instance), you will see the difference and the attributes that are not inherited, there are few.
    GlobalID and Name are obvious, Tag really leaves doubt, but Description I can't see a use case where the description of an instance would be different from the type... but there is always someone who will need it. :)

  • @Rick_Brice @walpa there seems to be a few misunderstandings here.

    1. IfcObject inherits only properties, classifications, mapped representations, materials, and predefined type (as you say, special case) from IfcTypeObject. Each of these scenarios are in the IFC documentation. IfcObject does not inherit attributes (Name, Description, Tag). This is on purpose, because an IfcTypeObject is a totally distinct entity in its own right in terms of identification (attributes).
    2. The Tag attribute is meant to store a unique identifier from the authoring application or software vendor if the IFC is exported. In native IFC, the Tag attribute is blank.
    3. Pset_ManufacturerTypeInformation.ModelReference is the manufacturer's model number of a product (i.e. from their product catalogue).
    4. If you want a serial number, that's Pset_ManufacturerOccurrence.SerialNumber, which is the manufacturer's unique instance identifier. This is appropriate on an occurrence (hence the pset name).
    5. I know nothing about MUTCD codes but if on a drawing or schedule you "label" or "annotate" your stop signs (plural) with the text R1-1, then the appropriate place to store this is in IfcSignType's Name attribute.

    If none of that is what you're looking for, I had a look at the psets available for IfcSign{Type} and it looks like an omission by buildingSMART, which means you need to create your own pset. Maybe because MUTCD is not an international thing? I don't know. It seems used here in Australia too.

    If it's going down the road of a custom pset, maybe we should look at publishing some of these known shortcomings as data dictionaries that our local buildingSMART government chapters can share and endorse.

    theoryshawMassimowalpasemhustej
  • Ultimately bSDD is our goal. A key piece of data is the MUTCD code. Each standard sign type has one. MUTCD is US Federal Highway Administration, Manual on Uniform Traffic Control Devices. With some googling, it looks like Australia has its own version of a similar standard. I suspect there are many similar standards around the world. I suspect at some point, there will be a base DD that handles all the common stuff and agency (country, state, etc) versions that build on top of the base DD.

    As you know, I'm a beginner and I just jump in and try stuff. When I get confused, I ask questions. Thanks for the explanation.

  • edited May 13

    My guess of why it's not in IFC is because it's not international. One thing I've been proposing in Aus is for buildingSMART Australia to be the steward of government / country-wide properties. So for example bSA_Sign.MUTCDCode I guess. Maybe you can propose a bSUS_Sign.MUTCDCode? In bSDD we can relate the two together and ensure we match data types.

  • I’m hoping eventually the BIM work going on in the US for infrastructure will ultimately develop a national data dictionary of signs. I would guess that all countries with standard signs would give a designation to each. The MUTCD code is a specific example of that more general concept.

    In the US building Smart USA is working in close alignment with AASHTO and FHWA to achieve our BIM objectives.

    walpa
  • The Tag attribute is meant to store a unique identifier from the authoring application or software vendor if the IFC is exported. In native IFC, the Tag attribute is blank

    This explanation seems more aligned with Name attribute. “ Optional name for use by the participating software systems or users.”

    On IfcElementType, Tag = “ The tag (or label) identifier at the particular type of a product, e.g. the article number (like the EAN)”
    On IfcElement, Tag = “ The tag (or label) identifier at the particular instance of a product, e.g. the serial number, or the position number”

    @Moult , can you clarify?

    Thanks

    semhustej
Sign In or Register to comment.