复制参考模型中的内容到主模型中


在MS自身的参考文件对话框中存在一个Merge Into Master(合并到主模型)的功能,许多用户都在问如何编程实现这个功能。下面代码就以C# 为例写就。代码中带有充分的注释,供大家参考。

public static void CopyRefContentsToActive()
{
    DgnModel activeModel = Session.Instance.GetActiveDgnModel();  //获取当前模型
    foreach (DgnAttachment attach in activeModel.GetDgnAttachments())  //遍历当前模型中所有的参考模型
    {
        attach.GetTransformToParent(out DTransform3d trans, true);  //获取参考到主模型的变换
        TransformInfo transInfo = new TransformInfo(trans);
        using (ElementCopyContext copier = new ElementCopyContext(activeModel))  //启用元素复制机制
        {
            copier.WriteElements = false;  //不让copier将复制过来的元素写入目标模型中,默认是自动写入的
            foreach (Element elemInRef in attach.GetDgnModel().GetGraphicElements())   // 遍历参考模型中的每个图形元素
            {
                Element copiedElem = copier.DoCopy(elemInRef);   //将参考模型中的图形元素复制到当前模型中
                copiedElem.ApplyTransform(transInfo);  //对元素执行到主模型的变换
                copiedElem.AddToModel();  //将变换后的元素添加到模型中
            }
        }
    }
}