Is there a way to provide a more object-neutral, savvy placement logic?
Aecosim is pretty flexible with what orientation its objects are placed with. A Wall etc can be placed on a sloping plane, according to how the ACS is defined. definitely an advantage over the competition.
But these 'system' objects will almost always be used as host for objects generated by PCS like casework, rails, skirtings, signage, fittings and equipment. There is a plethora of settings like base, side, depth, back, front offset, Rel. ACS etc, which will be helpful.
As it stands, it seems like the way that the PCS-generated object is oriented on the selected host object really struggles when the object is oriented 'unconventionally'.
Example of placing a Window in a sloping wall. The window object generated by PCS is placed as expected when the wall is placed on a levelly placed Wall. It seems to read the orientation of the wall properly.
But, when it is placed on a 'sloping' Wall, it seems to lose the plot completely.
Roughly speaking, there are three types of Triforma Forms host objects and an equivalent number of hosted objects that can be grafted on them.
Planar: Walls, slabs, roofs.
Recipe Inputs: P-Plane polygon, sweep operation; Outputs: Q-place polygon
Recipe Inputs: Polygon cross section, sweep vector
Linear: Columns and beam.
Recipe Inputs: Planar cross section. extrusion path
Recipe Inputs: Line/linestring/arc, sweep vector, thickness, P and Q-Points.
Point: Cells
Inputs: insertion point, rotation matrix
This makes nine possible combinations. It would be good to be able to provide both the Place Object tool and PCS the smarts to glue/graft the objects onto their hosts properly. Placing an object generated in PCS on a TF object in Aecosim like a Wall should be more like how the PCS object already behaves when placed onto another object in PCS. PCS already has some tools to define how an object is placed in Aecosim like _TF_Point3_Order, which is used by the Place Object tool to prompt the user to provide the necessary inputs in the desired order.
PCS should allow user to define what plane(s) or 'positioneer' or Path2D should be used to match a particular plane or edge/sweep vector on the TF host object. The Place Object tool may have to extract the face information via Parasolids and not the TF COM recipe inputs or methods. Maybe, the additional methods could be added to TF COM? The new Constraints tools would be great to leverage. Just 3d constrain the two planes or closed paths together.
1. Planar on Planar: Walls will have cladding or linings. Slabs would have plinths, insulation layers and screeds.
2. Planar on Linear: Similarly, columns and beams will need cladding. The Place Object tool should be able to infer the plane on which the profile polygon is placed; and cycle through the orthogonal planes.
3. Planar on Point: Cells have an insertion point and a rotation matrix that can used to define local planes, and be cycled through as above. Alternatively, the Place Object tool would look for a planar object within the Cell.
4. Linear on Planar: Movement joints on a slab or or mullions / transoms on a curtain wall. Rain water pipes offset from a wall.
5. Linear on Linear: linear battens sleeving a beam or column. Gutters running alongside with barge boards. Purlins running perpendicular to Rafters. Gaskets running around the edges of an opening in a wall. Handrails or stanchions that need to sleeve onto spigots. Nuts that need to fit onto bolts.
6. Linear on Point: Lighting columns placed on a plinth. Beams placed on a bearing. Multiple space frame members connecting to a node. Spindles or bolts aligning through or on a point.
7. Point on Planar: Walls will have lots of point objects like light fittings, signage boards, toilet paper holders etc that would need to be placed on or within its planar faces. Slabs and walls will need penetrations. There should be the option to access input parameters like thickness to feed parameters like offsets; and the option to switch to 3d constraints like plane to plane parallel, perpendicular etc.
8. Point on Linear: Linear objects like columns would often have point objects like corbels or pockets. It would be good to be able to constrain the point object's insertion point to the linear objects sweep vector or workline. Beams would have connections, cleats or joist hangers, penetrations etc.
9. Point on Point: A plumbing fixture like a hand wash basin would be placed as a Cell, hosted by Wall. At some point, the taps and other secondary fixtures would be placed onto the host point object (HWB, not the Wall). It would be good to be able to provide an offset constraint between both insertion points.