Gnats 6066: Good initial placement of new objects in the other Workspace views Bug Number: 6066 Release notes (y/n): Yes For Release Nums: 7.3 (maybe later, a 7.2 patch) Graphical operations to create a new object place that object at the clicked point within the current Workspace view (Simulation, Geospatial, or Accounting). This enhancement places that new object in the OTHER two views at a good position relative to the proximate existing objects in the original view. If no other objects exist, the new object is placed in the other views at a position which is proportional to the views' canvas rectangles. See the "assignPosForAllViews_proportionalCanvas" method, below. If the new object was placed EXACTLY ON another object in the source view, it is placed on that object in the other views. If there is EXACTLY ONE other object, the new object is placed in the other views by scaling the vector from that object to the new object, based on the views' rectangle sizes. See the "assignPosForAllViews_projectFromRefObj" method, below. If at least TWO other objects exist, two objects close to the new object point are identified. The new object is placed within the other views based on a rescaled "similar triangle" computed from the three known positions in the source view, and the two known positions (i.e. of those two existing objects) in the target view. See the "assignPosForAllViews_proximateNeighbors" and "assignPosForView_triangulateFromTwoRefObjs" methods, below. Methods in Sim/SimWS: bool addSimObjAtPosition ( SimObj* obj, QPoint newObjPnt, CanvasDefs::CanvasGeometry geom); okstat assignPosForAllViews_proportionalCanvas ( SimObj* newObj, QPoint newObjPnt, CanvasDefs::CanvasGeometry geom); okstat assignPosForAllViews_proximateNeighbors ( SimObj* newObj, QPoint newObjPnt, CanvasDefs::CanvasGeometry geom); okstat assignPosForAllViews_projectFromRefObj ( SimObj* newObj, QPoint newObjPnt, const SimObj* refObj, CanvasDefs::CanvasGeometry geom); okstat assignPosForView_triangulateFromTwoRefObjs ( SimObj* newObj, QPoint newObjPnt, const SimObj* refObj1, const SimObj* refObj2, CanvasDefs::CanvasGeometry sourceGeom, CanvasDefs::CanvasGeometry targGeom); "Competing" initial object position calculations were removed from this higher level GUI method: WorkspaceGfxScene::createSimObjByType ( int objTypeId, const QPointF& scenePos); ---