[MSCE C++] 相对关联如何设置?

各位老师,在放置批注的工具有,有一个创建相对关联的按钮,我在代码中创建关联点的时候,如何实现相对关联的效果?

  • 标注关联点大致的示例代码如下:

    DimensionProperty dimData(pDimStyle, textStyle, symb, lvId, dimRMatrix, viewRMatrix);
    if (SUCCESS != DimensionHandler::CreateDimensionElement(dimEeh, dimData, DimensionType::SizeArrow, pActiveModel->Is3d(), *pActiveModel))
    {
    	return;
    }
    
    //------ Insert Assoc Points
    AssocPoint assocPt1, assocPt2;
    AssociativePoint::InitKeypoint(assocPt1, 0, 2, 0, 1);
    AssociativePoint::SetRoot(assocPt1, lineEeh.GetElementId(), 0);
    AssociativePoint::InitKeypoint(assocPt2, 1, 2, 0, 1);
    AssociativePoint::SetRoot(assocPt2, lineEeh.GetElementId(), 0);
    IDimensionEdit* dimEdit = dynamic_cast<IDimensionEdit*>(&dimEeh.GetHandler());
    dimEdit->InsertPoint(dimEeh, &pt1, &assocPt1, *pDimStyle, -1);
    dimEdit->InsertPoint(dimEeh, &pt2, &assocPt2, *pDimStyle, -1);
    
    dimEdit->SetHeight(dimEeh, -g_1mu*2);
    dimEdit->SetRotationMatrix(dimEeh, dimRMatrix);
    dimEdit->SetViewRotation(dimEeh, viewRMatrix);
    if (dimEeh.IsValid())
    {
    	dimEeh.AddToModel();
    }



  • 符老师,这样只是关联到一个元素的两点,放置批注工具中的相对关联,可以在移动被关联批注的元素时,保持相对位置不变,同时批注元素自身移动不会改变被关联批注的元素的位置,我想的是怎么用代码实现这种效果,就可以批量放置了

  • 一个道理的呀。我这个示例是让普通的Dimension元素关联到一条直线的两个点。这样做的效果是:你移动线时Dim元素会随线移动。但你修改Dim的标注线位置时被标注的线元素不会移动。

    回到你这个标注工具,你只需要关联一个点即可。



  • 感觉也不是这样,批注工具放置的批注可以看作三部分,被批注元素A,批注元素B,和引线C,引线C就是一个Dim元素,连着A和B,这里的相对关联可以实现A移动,B也移动,B移动,A不会动,C会一直连着A和B,符老师,我想问一下,TextHandlerBase元素有一个SetupOffsetAssociation方法,可以实现类似的效果,这个是TextHandlerBase元素独有的吗?其它类有没有类似的方法

  • 很抱歉,目前NoteCellHeaderHandler的SetupOffsetAssociation函数没有公布出来。