When starting Navisworks development, you might encounter situations where DataProperty values appear as “unknown”. This scenario isn’t an error but rather a property type that requires specific handling in the code. The API provides separate conversion methods to retrieve the correct property values.

![Image Description](https://cdn.bimath.com/blog/pg/Snipaste_2026-01-04_15-31-16.png)

As shown in the image above, calling ToString() directly on a wall property in the code results in “unknown”. This is because the specific conversion method wasn’t used. By using the following code to check and convert each value individually, all values can be retrieved correctly.

In Navisworks, there are also cases involving conversion factors between inches and millimeters, which require further processing.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
var stringBuilder = new StringBuilder();
var doc = Application.ActiveDocument;
var selection = doc.CurrentSelection.SelectedItems;
var selectItem = selection[0];
foreach (var selectItemPropertyCategory in selectItem.PropertyCategories)
{
if (selectItemPropertyCategory.DisplayName.Equals("Element"))
{
foreach (var property in selectItemPropertyCategory.Properties)
{
if (property.Name.Contains("IFC"))
continue;

var value = property.Value;
if (value.IsDisplayString)
{
var stringTest = value.ToDisplayString();

}
else if (value.IsDoubleLength)
{
var valueParse = value.ToDoubleLength();
stringBuilder.AppendLine($"{property.DisplayName} - {valueParse}");
}
else if (value.IsDoubleArea)
{
var valueParse = value.ToDoubleArea();
stringBuilder.AppendLine($"{property.DisplayName} - {valueParse}");
}



else if (value.IsDoubleVolume)
{
var valueParse = value.ToDoubleVolume();
stringBuilder.AppendLine($"{property.DisplayName} - {valueParse}");
}


}
}

}
![Image Description](https://cdn.bimath.com/blog/pg/Snipaste_2026-01-04_15-31-06.png)