protected override void Process(IFCAnyHandle ifcMaterialProfile)
        {
            base.Process(ifcMaterialProfile);

            IFCAnyHandle ifcMaterial = IFCImportHandleUtil.GetOptionalInstanceAttribute(ifcMaterialProfile, "Material");

            if (!IFCAnyHandleUtil.IsNullOrHasNoValue(ifcMaterial))
            {
                Material = IFCMaterial.ProcessIFCMaterial(ifcMaterial);
            }

            IFCAnyHandle profileHnd = IFCImportHandleUtil.GetRequiredInstanceAttribute(ifcMaterialProfile, "Profile", true);

            if (profileHnd != null)
            {
                Profile = IFCProfileDef.ProcessIFCProfileDef(profileHnd);
            }

            Name        = IFCImportHandleUtil.GetOptionalStringAttribute(ifcMaterialProfile, "Name", null);
            Description = IFCImportHandleUtil.GetOptionalStringAttribute(ifcMaterialProfile, "Description", null);
            double prio = IFCImportHandleUtil.GetOptionalRealAttribute(ifcMaterialProfile, "Priority", -1);

            if (prio >= 0)
            {
                Priority = prio;
            }
            Category = IFCImportHandleUtil.GetOptionalStringAttribute(ifcMaterialProfile, "Category", null);

            return;
        }
        override protected void Process(IFCAnyHandle ifcDerivedProfileDef)
        {
            base.Process(ifcDerivedProfileDef);

            IFCAnyHandle ifcParentProfile = IFCImportHandleUtil.GetRequiredInstanceAttribute(ifcDerivedProfileDef, "ParentProfile", true);

            ParentProfile = IFCProfileDef.ProcessIFCProfileDef(ifcParentProfile);

            IFCAnyHandle ifcOperator = IFCImportHandleUtil.GetRequiredInstanceAttribute(ifcDerivedProfileDef, "Operator", true);

            Operator = IFCCartesianTransformOperator.ProcessIFCCartesianTransformOperator(ifcOperator);

            Label = IFCAnyHandleUtil.GetStringAttribute(ifcDerivedProfileDef, "Label");
        }
        override protected void Process(IFCAnyHandle ifcSurface)
        {
            base.Process(ifcSurface);

            IFCAnyHandle sweptCurve = IFCImportHandleUtil.GetRequiredInstanceAttribute(ifcSurface, "SweptCurve", true);

            SweptCurve = IFCProfileDef.ProcessIFCProfileDef(sweptCurve);

            IFCAnyHandle position = IFCImportHandleUtil.GetOptionalInstanceAttribute(ifcSurface, "Position");

            if (IFCAnyHandleUtil.IsNullOrHasNoValue(position))
            {
                Position = Transform.Identity;
            }
            else
            {
                Position = IFCLocation.ProcessIFCAxis2Placement(position);
            }
        }
        override protected void Process(IFCAnyHandle solid)
        {
            base.Process(solid);

            IFCAnyHandle sweptArea = IFCImportHandleUtil.GetRequiredInstanceAttribute(solid, "SweptArea", true);

            SweptArea = IFCProfileDef.ProcessIFCProfileDef(sweptArea);

            IFCAnyHandle location = IFCImportHandleUtil.GetRequiredInstanceAttribute(solid, "Position", false);

            if (location != null)
            {
                Position = IFCLocation.ProcessIFCAxis2Placement(location);
            }
            else
            {
                Position = Transform.Identity;
            }
        }