参考modal

老师,我参考一个modal的话,请问

1.视图选择

2.偏移位置

3出图比例

这些都设置,用类哪些成员?谢谢老师。

Parents
  • Point3d vectorX = msApp.Point3dFromXYZ(0, 1, 0);

                   Point3d vectorY = msApp.Point3dFromXYZ(-1, 0, 0);

                   Point3d vectorZ = msApp.Point3dFromXYZ(0, 0, 1);

                   Matrix3d matrix = msApp.Matrix3dFromPoint3dColumns(vectorX, vectorY, vectorZ);

                   Point3d pt = msApp.Point3dFromXYZ(123, 456, 789);

                   Transform3d transform = msApp.Transform3dFromMatrix3dPoint3d(ref matrix, ref pt);

                   string needModifyAttaModelName = "testAttaModelName";

                   string needModifyAttaFileName = "D:\testAttaFileName.dgn";

                   foreach (Attachment attachment in msApp.ActiveModelReference.Attachments)

                   {

                       if (attachment.Name == needModifyAttaModelName && attachment.DesignFile.FullName == needModifyAttaFileName)

                       {

                           attachment.Transform(ref transform, false);//旋转以及移动

                           attachment.ScaleFactor = 10;//设置出图比例

                           attachment.Rewrite();//这一步很重要,如果没有执行这一步,设计文件关闭后重新打开会发现参考又恢复到修改之前的状态

                       }

                   }

    Answer Verified By: Andy 

  • 老师还要加链接参考文件的函数吧??
  • 老师您忘了改怎么选着视图(前、后、顶.....)
  • string dgnFileFullName = @"D:\TempDownloadFiles\Test.dgn";
    string modelName = "testAttaModelName";
    string logicalName = "logicalNmae";
    string description = "description";
    msApp.ActiveModelReference.Attachments.AddCoincident(dgnFileFullName, modelName, logicalName, description);//链接参考文件
    以上是链接参考文件的方法,视图选择我这里是通过Transform来实现的,构造了一个相应视图的Transform3d对象,通过Transform把参考Model转换到相应视图。vectorX ,vectorY,vectorZ分别是相应视图的X,Y,Z轴的向量。比如你想要前视图的话,这三个对象应该像下面这样赋值:

    Point3d vectorX = msApp.Point3dFromXYZ(1, 0, 0);
    Point3d vectorY = msApp.Point3dFromXYZ(0, 0, 1);
    Point3d vectorZ = msApp.Point3dFromXYZ(0, -1, 0);
    另外纠正一个错误,上面的代码中这一行“Matrix3d matrix = msApp.Matrix3dFromPoint3dColumns(vectorX, vectorY, vectorZ);”应该是“Matrix3d matrix = msApp.Matrix3dFromPoint3dRows(ref vectorX,ref vectorY,ref vectorZ);”。一个是函数名字由......Columns变为......Rows。一个是函数参数要使用ref类型。

    Answer Verified By: Andy 

Reply
  • string dgnFileFullName = @"D:\TempDownloadFiles\Test.dgn";
    string modelName = "testAttaModelName";
    string logicalName = "logicalNmae";
    string description = "description";
    msApp.ActiveModelReference.Attachments.AddCoincident(dgnFileFullName, modelName, logicalName, description);//链接参考文件
    以上是链接参考文件的方法,视图选择我这里是通过Transform来实现的,构造了一个相应视图的Transform3d对象,通过Transform把参考Model转换到相应视图。vectorX ,vectorY,vectorZ分别是相应视图的X,Y,Z轴的向量。比如你想要前视图的话,这三个对象应该像下面这样赋值:

    Point3d vectorX = msApp.Point3dFromXYZ(1, 0, 0);
    Point3d vectorY = msApp.Point3dFromXYZ(0, 0, 1);
    Point3d vectorZ = msApp.Point3dFromXYZ(0, -1, 0);
    另外纠正一个错误,上面的代码中这一行“Matrix3d matrix = msApp.Matrix3dFromPoint3dColumns(vectorX, vectorY, vectorZ);”应该是“Matrix3d matrix = msApp.Matrix3dFromPoint3dRows(ref vectorX,ref vectorY,ref vectorZ);”。一个是函数名字由......Columns变为......Rows。一个是函数参数要使用ref类型。

    Answer Verified By: Andy 

Children