参照操作
模型参照(*.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 命令执行结果