OK, let me clarify this.
If you are creating custom grips, as demonstrated by the sample SDK project I’ve referenced, then your custom object needs to return a bounding box that takes these grip locations into account.
If you are drawing your grips in a conduit, which is the incorrect approach in my opinion, then your conduit will need to subscribe to the SC_CALCBOUNDINGBOX channel. When the overrride CRhinoDisplayConduit::ExecConduit
overide is called, check for the SC_CALCBOUNDINGBOX and grow the channel attribute’s bounding box if needed.
bool CTestConduit::ExecConduit(CRhinoDisplayPipeline& dp, UINT nActiveChannel, bool& bTerminateChannel)
{
switch (nActiveChannel)
{
case CSupportChannels::SC_CALCBOUNDINGBOX:
{
// Make sure our geometry is not clipped
m_pChannelAttrs->m_BoundingBox.Union(...);
}
– Dale