Hello, I am trying to map annotations from my CAD layer to the indoors configuration sheet so I can have unit names, use types, and IDs for my spaces. I have a layer in my CAD file that contains block attributes for my annotations (see screenshot below). Within the block, there are 4 tags (ROOMNAME 1,2,3 and DEPARTMENT). Is there a way to parse this block to choose the DEPARTMENT value for the unit ID and ROOMNAME 1 and 2 for the use type? Are the tags in a block reference referring to an attribute field? There is a small section in the documentation about parsing block annotations but it didn't seem to work and the software just gave my units random names and IDs. A different method I tried was unblocking the annotation so that I would have a separate text feature for each line. I then put each line of text on a different CAD layer and mapped it that way to the excel sheet but that also didn't work. I have now gone back to block attributes and am wondering what's the best way to choose different portions of the block to become my unit identifiers in GIS. Thanks!
Solved! Go to Solution.
Hi @NoamAharon, Thanks very much for the details and screenshot. The best approach is to use the following syntax on the Annotation to Field sheet to read the block attribute values:
Note that rows 4 and 5 both target the USE_TYPE field. As shown, if the Import Floorplans To Indoors Geodatabase tool finds a value in the ROOMNAME2 attribute, it will map that value to the USE_TYPE field... Else, if the tool finds a value in the ROOMNAME1 attribute, it will map that value to USE_TYPE... Else, USE_TYPE will be null.
If using the configuration in the above screenshot doesn't work, here are a few questions:
Hi @NoamAharon, Thanks very much for the details and screenshot. The best approach is to use the following syntax on the Annotation to Field sheet to read the block attribute values:
Note that rows 4 and 5 both target the USE_TYPE field. As shown, if the Import Floorplans To Indoors Geodatabase tool finds a value in the ROOMNAME2 attribute, it will map that value to the USE_TYPE field... Else, if the tool finds a value in the ROOMNAME1 attribute, it will map that value to USE_TYPE... Else, USE_TYPE will be null.
If using the configuration in the above screenshot doesn't work, here are a few questions:
Hi @SFrank, thank you for your response. I actually tried that syntax before posting and it didn't work. I just tried it again and got the same result. I will post a screenshot of the warning message I get when running the geoprocessing tool. For some reason it cannot find the source annotation. I will also attach my configuration file - I'm aware that the doors/opening parameter isn't set up correctly but I don't need openings to be processed since I already have clean unit polygons. Right now, I'm only processing 1 floor to see how the tools work. Unfortunately, I cannot share the CAD data due to privacy issues but I can send screenshots of whatever it is you may need to see. The facilities, levels, units, and details features all imported successfully into GIS but I would like to associate the units with the annotations so I don't have to manually fill out the attributes. Thanks
Oh and Im using ArcPro 3.1.0
Hi @NoamAharon,
Thanks for the additional info! I took a look at the XLSX you included and I think the issue may be a typo. In the Annotation to Field sheet, you have the CAD layer listed as A-FLOOR-IDEN (with two Os), but in your original screenshot from CAD the layer is named A-FLOR-IDEN (with one O). Could you try removing the extra O from the layer names in the CAD spreadsheet and running the tool to see if that resolves your issue?
Gosh, what a silly mistake! Thanks for pointing that out, sometimes having another set of eyes helps. It worked! There are some that did not get an annotation because the anchor point sat outside the boundaries of the unit, but that's okay since there's few of them I have to change manually. Do you think its possible to concatenate Roomname 1 and Roomname 2 into a long use type? I want to be able to have both of those tags as part of the use type and not just use on or the other. How would you go about the syntax in the excel sheet to achieve this? Thanks
@NoamAharonGlad that worked!
The import tool doesn't currently support concatenating two annotation blocks. You can, however, map additional annotation to custom fields in the Units feature class. A workaround if you wanted values from both blocks in the same field could be something like:
1. Create a custom text field in your Units feature class
2. Map the ROOMNAME2 block to the USE_TYPE field and the ROOMNAME1 block to your custom text field in the XLSX spreadsheet
3. After loading the CAD, run a calculate field on the USE_TYPE field to concatenate the values from USE_TYPE and the values from the custom field.