This has bugged me for a while. I'd really really like to create my own category of properties to associate with elements. Way easier for users to query than tags, and something that Navigator can display in clash results. I've been able to successfully read these properties that other applications (i.e. InRoads) are able to create on their own (lucky ducks), but no success adding my own. I'd like to mimic the custom approach shown below to adding metadata. Any guidance would be greatly appreciated!!!
It's possible IF you're will to use the MicroStation XML API. Not necessarily "quick and easy", but possible....
A "quick and easy" way is using key-ins. The steps are as below:
1. Save attached ECSchema file in the folder d:\ (I created this file for your with application Bentley Class Editor. This app is delivered in MicroStation SDK. I don't include all properties you want in this schema, just a demo).
2. Open your design file in MicroStation, keyin MDL LOAD Bentley.ECXAttributesAddin.dll to load ecxattribute application.
3. Keyin ECX Schema Import d:\TestSchema.01.00.ecschema.xml to import this external schema file into your active design file.
4. Select some elements you want assign properties to them. Keyin ECX Instance AttachWithStoredSchema TestSchema:Component to attach ECInstance to selected elements. Please see the captured pic which is just attached ECInstance to a shape element.
5. Use MVBA's PropertyHandler to assign values to these properties.
Answer Verified By: chrisedjohn
YongAn, thank you for going the extra mile to outline the process and display the output! I really appreciate your time and quick reply.
Yongan.Fu said:A "quick and easy" way [to create EC Schema data] is using key-ins
Thanks for that succinct but informative tutorial!
Regards, Jon Summers LA Solutions
could you just list the equivalents in the C++ API? I want to embed this behaviour into my own application.
stefan_bernsdorf said:Could you just list the equivalents in the C++ API?
Look for XML Instance API in the MicroStationAPI help document. When you install the SDK, look in the example projects to find XmlInstance.
Every thing is working great... (wait for it) but, after I attach the schema to an element, I'm not able to access it using the SelectByAccessString method UNLESS I manually edit the value of it via the dialog. After doing that even just once, I'm able to select it thereafter. I'm even able to see my new attributes in the dialog box and using the GetAccessStrings to create an array of all of them - they're in the list - but I'm not able to select any until I manually do so via the dialog box.
I've tried reloading the object as it notes in the help. I've also tried reloading the session to make sure the file and element is written. No luck. The only thing that has worked is the manual edit so far.
Any clues for me? So close, yet...
This is a known condition. The property handler needs the value to be initialized. I would look to the ECObjects api that we added for Select Series 3. It is managed code so you will need to write an AddIn to work with the objects.
mark anderson [Bentley]
Visit me at https://communities.bentley.com/communities/other_communities/bentley_innovation/default.aspx
Try adding a default value to your property in the class editor.To do this open the schema in the class editor and then in the properties tab select the custom attributes button.Add 'Calculated ECProperty Specification' custom property to the property and then edit the following values.EC Expression needs to have a value which can be a space.Is Calculated as default value only - set this to True.
All of the properties will have values now so you can edit with the propertyhandler.
Kriller, you rock! This is exactly the piece of the puzzle I was missing that got me the functionality I was looking for. Thank you SO much for taking the time to share with me.
To pay it forward, here's a link to where I've posted my example schema and the associated key-ins to make this work.
Christopher JohnsonTechnologist/Visualization Specialist