Issue
I am using Navis Activex in Web Application and Window Application. I want to search the entities in JavaScript. But it does not work. Could you show me a code?
Solution
There are some tricks of Navisworks API with JavaScript. Following is the worked code:
1. searching an entity with EntityHandle "16C17". The model file is the SDK sample "gatehouse.nwd"
<script type="text/javascript">
function test(){
// find item with entity handle '16C17'
var state = ctrlId.state;
var find =
state.ObjectFactory(
state.GetEnum("eObjectType_nwOpFind"));
var findspec =
state.ObjectFactory(state.GetEnum(
"eObjectType_nwOpFindSpec"));
var findcon =
state.ObjectFactory(state.GetEnum(
"eObjectType_nwOpFindCondition"));
// set condition
findcon.SetPropertyNames("LcOaNat64AttributeValue");
findcon.SetAttributeNames("LcOpDwgEntityAttrib");
findcon.Condition = state.GetEnum("eFind_EQUAL");
findcon.value = "16C17";
// do find
findspec.Selection.SelectAll();
findspec.Conditions().add(findcon);
find.FindSpec = findspec;
var sel = find.FindAll();
// highlight the items and zoom to them
state.CurrentSelection = sel;
state.ZoomInCurViewOnCurSel();
}
</script>
2. Searching a component with Revit Id 127587. Assume you have a Revit model.
<script type="text/javascript">
function test() {
// find item with entity handle '127587'
var state = ctrlId.state;
var find =
state.ObjectFactory(
state.GetEnum("eObjectType_nwOpFind"));
var findspec =
state.ObjectFactory(
state.GetEnum("eObjectType_nwOpFindSpec"));
var findcon =
state.ObjectFactory(
state.GetEnum("eObjectType_nwOpFindCondition"));
// set condition
findcon.SetPropertyNames("LcOaNat64AttributeValue");
//findcon.SetAttributeNames("LcOpDwgEntityAttrib");
findcon.SetAttributeNames("LcRevitId");
findcon.Condition = state.GetEnum("eFind_EQUAL");
findcon.value = "127587";
// do find
findspec.Selection.SelectAll();
findspec.Conditions().add(findcon);
find.FindSpec = findspec;
var sel = find.FindAll();
// highlight the items and zoom to them
state.CurrentSelection = sel;
state.ZoomInCurViewOnCurSel();
}