Bentley二次开发教程19-文件及模型管理-参照操作

参照操作

模型参照(*.dgn)

当我们需要与同专业,或者跨专业协同配合时,总是无可避免的需要参照他人的模型。若想通过编程的方式提前将参照模型与指定场景绑定起来,那么就需要掌握模型参照的方法。关于该方法大致的使用流程为首先确定参照引用的目标模型,然后通过参照文件的储存路径获取对应的文件,最后将文件中指定模型参照到目标模型中,写入模型即引用模型成功。

public static void AttachDgnModel(string unparsed)
{            
    DgnModel dgnModel = Session.Instance.GetActiveDgnModel();//获得当前激活的模型空间
    string strDgn = "E:\\工作相关\\20211213MS案例直播\\直播资料\\Part4\\FileManage - Copy.dgn";//文件储存路径      
    DgnDocumentMoniker moniker = DgnDocumentMoniker.CreateFromFileName(strDgn,null);//声明引用文件系统的DgnDocumentMoniker对象
    DgnAttachment attach=dgnModel.CreateDgnAttachment(moniker,"test");//将指定模型引用到当前模型空间中
    StatusInt status= attach.WriteToModel(false);//将引用写入模型
    if(status==StatusInt.Success)//判断写入是否成功
    {
        MessageBox.Show("Attach DgnModel:\nSuccess");//对话框输出成功提示
    }
}

在本案例中,执行上述代码后可以发现,名为FileManage - Copy.dgn的文件中的"test"模型中的数据被成功参照到当前模型空间中。
在这里插入图片描述
在这里插入图片描述

CAD图纸参照(*.dwg)

当我们需要使用CAD图纸进行参考时,对应的也可以使用参考的方式实现CAD图纸的参考,采用的方法与模型参照一致。

public static void AttachDWGFile(string unparsed)
{
    DgnModel dgnModel = Session.Instance.GetActiveDgnModel();//获得当前激活的模型空间            
    string strDgn = "E:\\工作相关\\20211213MS案例直播\\直播资料\\Part4\\111.dwg";//文件储存路径      
    DgnDocumentMoniker moniker = DgnDocumentMoniker.CreateFromFileName(strDgn, null);//声明引用文件系统的DgnDocumentMoniker对象
    DgnAttachment attach = dgnModel.CreateDgnAttachment(moniker, null);//将指定模型引用到当前模型空间中
    StatusInt status = attach.WriteToModel(false);//将引用写入模型
    if (status == StatusInt.Success)//判断写入是否成功
    {
        MessageBox.Show("Attach DWG File:\nSuccess");//对话框输出成功提示
    }
}

在本案例中,执行上述代码后,名为111.dwg的图纸被成功参考到当前的模型空间中
在这里插入图片描述
在这里插入图片描述

取消模型参照

当我们需要取消模型中的指定参照时,需要使用到DeleteDgnAttachment( )。大致的流程为遍历模型中的参照模型,根据名称找到需要取消参照的指定参照模型,使用上述方法执行取消参照的操作。

public static void DetachDgnModel(string unparsed)
{
    DgnModel dgnModel = Session.Instance.GetActiveDgnModel();//获得当前激活的模型空间
    DgnAttachmentCollection attachments = dgnModel.GetDgnAttachments();//获得该模型空间中所有的参照
    foreach(DgnAttachment attachment in attachments)//遍历模型空间中的所有参照
    {
        if(attachment.AttachModelName== "test")//判断参照的模型名称是否为test
        {
            StatusInt status = dgnModel.DeleteDgnAttachment(attachment);//删除模型中的指定参照
            if (status == StatusInt.Success)//判断写入是否成功
            {
                MessageBox.Show("Detach DgnModel:\nSuccess");//对话框输出成功提示
            }                    
        }                
    }            
}

在这里插入图片描述

图19 命令执行前
在这里插入图片描述

图20 命令执行结果

  • 10
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值