Not a workflow I get into but the parts I know:
- I don't believe constraint state (locking/snapping) is accessible in basic Dynamo Nodes. Maybe it's accessible via API? That's waaaay outside my wheelhouse.
- Grids are stored as Line geometry with Z-value 0.
- Columns are (weirdly) stored in two methods: if it's a vertical column it's stored as a point with Z-value 0 (even if at a different elevation) - this means that you'd have to pull the Base Level + Offset and Top Level + Offset parameters to actually compare locations. Columns with a Slanted style are stored as Lines whose points accurately match their true location in space (based on the origin point of the section shape)
- Beams are stored as lines, with locations based on true location, again with reference to the construction of the section/profile)
What does this ultimately mean? For grid alignment check, you could project the list of start/end points 'down' to the gridlines and see if there is geometry intersection. If the points miss you know they're not aligned to the grid. This should work well for something like checking a beam parallel to grid for alignment.
I tried doing a cursory check of the dynamobim forums to see if anyone had a similar problem - unfortunately most of the column/grid related topics discuss initial generation of the columns and not post-design checks. You're better off researching workflows on clash detection (or the opposite, in this case), and modifying what you find based on the element location storage method used for structural elements.