Replies: 3 comments
-
|
It's a little hard to say without the actual IFC but I note you're using various regex clauses include 'Negative lookaheads' which are not technically supported in IDS1: See #349 Essentially Equally you're not providing a This looks like Xbim's IDS output I and think we're forgiving of the use of these regex flavours. But even if supported the requirement feels illogical due to the double-negatives that are going on. Here's how I read the spec:
Put simply, if any property exists in Pset_Prestazioni pset the test will fail unless the property is named 'RFI_Materials' AND has one of the 3 values specified. i.e. in this case: The value is 7.999... so will always fail as it's not 998 etc. In summary I'd simplify this spec, perhaps write it as several smaller requirements. You may be better writing the prohibited aspect as a prohibited applicability. |
Beta Was this translation helpful? Give feedback.
-
|
Thanks for your quikly replay...
your interpretation of the spec is correct
I woult to check if the Pset 'Pset_Geometrico' contains only properties named 'RFI_SviluppoTrasversale' or 'RFI_Spessore'.
If the check find properties with different name, I have to chesk if the value is N/A, 998, 997.99, I use 997.99 with wildcard because in the Revit model I have 998 value, but in IFC this value became 997.999999.
If the value is N/A, 998, 997.99 the test is passed, otherwise the test is not passed
the test works fine if I don't specify value,
I read that when I specify value, I have to declare Data Type also. The Problem is that i don't know the property data type
Ho wI can simplify control?
…________________________________
Da: Andy Ward ***@***.***>
Inviato: Venerdì, 17 Ottobre, 2025 11:43
A: buildingSMART/IDS ***@***.***>
Cc: hantrax ***@***.***>; Author ***@***.***>
Oggetto: Re: [buildingSMART/IDS] Invalid Properties Name (Discussion #434)
It's a little hard to say without the actual IFC but I note you're using various regex clauses include 'Negative lookaheads' which are not technically supported in IDS1: See #349<#349>
Essentially ^, $, (?!...) and \b are not technically permitted in IDS. (I'm not sure you need them anyway.)
Equally you're not providing a datatype field on the property facets, which is required when specifying a property value. I'm also confused how an IfcLengthMeasure could ever have a value 'N/A' - or why you're doing pattern matching on a numeric value?
This looks like Xbim's IDS output I and think we're forgiving of the use of these regex flavours. But even if supported the requirement feels illogical due to the double-negatives that are going on. Here's how I read the spec:
For any entities with Property 'RFI_Nome' with a value 'Impermeabilizzazioni' in Pset 'Pset_WBS_CBS'
// skipping the first requirement for brevity- the others are the same but simpler...
(...and) it is prohibited to have a property in the 'Pset_Geometrico' PSet whose name is not 'RFI_SviluppoTrasversale' or 'RFI_Spessore', and where the value is not one of 'N/A', '998' or '997.99'
and it is prohibited to have a property in the 'Pset_Prestazioni' Pset whose name is not 'RFI_Materials' and where the value is not one of 'N/A', '998' or '997.99'
Put simply, if any property exists in Pset_Prestazioni pset the test will fail unless the property is named 'RFI_Materials' AND has one of the 3 values specified.
i.e. in this case:
[Fail] Invalid Value in Pset_Geometrico.RFI_Lunghezza: Prohibited - found #2882=IFCPROPERTYSINGLEVALUE('RFI_Lunghezza',$,IFCLENGTHMEASURE(7.999999999999999),$);
The value is 7.999... so will always fail as it's not 998 etc.
In summary I'd simplify this spec, perhaps write it as several smaller requirements. You may be better writing the prohibited aspect as a prohibited applicability.
—
Reply to this email directly, view it on GitHub<#434 (comment)>, or unsubscribe<https://github.com/notifications/unsubscribe-auth/AMQY56762R3GAFR6RZN2HAL3YC235AVCNFSM6AAAAACJL7LZJSVHI2DSMVQWIX3LMV43URDJONRXK43TNFXW4Q3PNVWWK3TUHMYTINZQHAYDINA>.
You are receiving this because you authored the thread.Message ID: ***@***.***>
|
Beta Was this translation helpful? Give feedback.
-
|
This will be tricky to achieve in IDS as I don't think the use case has been considered. i.e. "unless it's one of these properties the value must be X" - I'm not seeing the benefit in enforcing a specific value in a wildcard set of properties. Most requirements I see start with "I want these properties", and "I want these values in these properties". For info: you should not need to use patterns/wildcards on these numeric values. The IDS spec should treat 997.999999 as equivalent to 998 due to the tolerance rules This isn't strictly 100% valid IDS but it's the best I could do: (It uses negative lookaheads, and it doesn't state the datatype) <?xml version="1.0" encoding="utf-8"?>
<ids:ids xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://standards.buildingsmart.org/IDS http://standards.buildingsmart.org/IDS/1.0/ids.xsd"
xmlns:ids="http://standards.buildingsmart.org/IDS">
<ids:info>
<ids:title />
</ids:info>
<ids:specifications>
<ids:specification ifcVersion="IFC4"
name="All Waterproof elements should have any nonstandard Pset_Geometrico properties populated with value 998">
<ids:applicability minOccurs="0" maxOccurs="unbounded">
<ids:property>
<ids:propertySet>
<ids:simpleValue>Pset_WBS_CBS</ids:simpleValue>
</ids:propertySet>
<ids:baseName>
<ids:simpleValue>RFI_Nome</ids:simpleValue>
</ids:baseName>
<ids:value>
<ids:simpleValue>Impermeabilizzazioni</ids:simpleValue>
</ids:value>
</ids:property>
<ids:property>
<ids:propertySet>
<ids:simpleValue>Pset_Geometrico</ids:simpleValue>
</ids:propertySet>
<ids:baseName>
<xs:restriction base="xs:string">
<xs:pattern value="(?!RFI_SviluppoTrasversale|RFI_Spessore).*" />
</xs:restriction>
</ids:baseName>
</ids:property>
</ids:applicability>
<ids:requirements>
<ids:property>
<ids:propertySet>
<ids:simpleValue>Pset_Geometrico</ids:simpleValue>
</ids:propertySet>
<ids:baseName>
<xs:restriction base="xs:string">
<xs:pattern value="(?!RFI_SviluppoTrasversale|RFI_Spessore).*" />
</xs:restriction>
</ids:baseName>
<ids:value>
<ids:simpleValue>998</ids:simpleValue>
</ids:value>
</ids:property>
</ids:requirements>
</ids:specification>
</ids:specifications>
</ids:ids>I'd repeat this rule for the Pset_Prestazioni pset etc, |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
HI...
I'm trying to implement a check to verify that if an object has a property name other than a list in a particular property set , this property name must have a value like N/A or 998 or 997.99, i
I receive this message:
Fail : D003_Impermeabilizzazioni_ParamNonAmmessi [0 passed from 1] Optional Requirement
❌ #2863=IFCBUILDINGELEMENTPROXY('0XK2qlWRTADPlXPplcspte',#18,'MOG_Impermeabilizzante:CIV_MOG_Impermeabilizzante_3cm:508151',$,'MOG_Impermeabilizzante:CIV_MOG_Impermeabilizzante_3cm',#2862,#2859,'508151',$);
[Fail] Invalid Value in Pset_Geometrico.RFI_Lunghezza: Prohibited - found #2882=IFCPROPERTYSINGLEVALUE('RFI_Lunghezza',$,IFCLENGTHMEASURE(7.999999999999999),$);
[Fail] Invalid Value in Pset_Geometrico.RFI_Volume: Prohibited - found #2883=IFCPROPERTYSINGLEVALUE('RFI_Volume',$,IFCVOLUMEMEASURE(0.8),$);
[Fail] Invalid Value in Pset_Geometrico.RFI_DiametroPerforazione: Prohibited - found #2885=IFCPROPERTYSINGLEVALUE('RFI_DiametroPerforazione',$,IFCLENGTHMEASURE(997.9999999999999),$);
I'm doing something wrong
this is the code
Beta Was this translation helpful? Give feedback.
All reactions