在Revit 2014中插入面部托管嵌套家庭实例时,Z坐标被忽略

本文关键字:实例 坐标 家庭 嵌套 2014 Revit 插入 面部 | 更新日期: 2023-09-27 18:13:19

我正试图插入一个包含在通用专业设备家族内的空洞挤出的面部托管家族。场景如下:

  • 在"母"族中有一个Z = 100mm,高度= 40mm的矩形挤压;

  • 我有一个。rfa与一个简单的空圆柱。这个rfa是Generic model家族,我将"Cut with voids"设置为true

  • 我想在父族中插入这个void族的一个实例,以便穿透挤出。

我使用的代码如下:

        Options opt = _commandData.Application.Application.Create.NewGeo​metryOptions();
        opt.ComputeReferences = true;
        var geo = shelf.get_Geometry(opt);//shelf is the extrusion
//location = 0,-800,100
//width = 1000
//depth = 800
//height = 140
//all measures are mm
        PlanarFace pf = null;
        foreach (GeometryObject obj in geo)
        {
            Solid solid = obj as Solid;
            if (null != solid)
            {
                foreach (Face face in solid.Faces)
                {
                    pf = face as PlanarFace;
                    if (null != pf)
                    {
                        XYZ normal = pf.Normal.Normalize();
                        if (0.0 < normal.Z && normal.X < 1 && normal.Y < 1)
                        {
                            break;
                        }
                    }
                }
            }
        }
        if (pf != null)
        {
            var location = new XYZ(50D.ToRevitMeasure(), -100D.ToRevitMeasure(), 140D.ToRevitMeasure());
            var referenceDirection = XYZ.BasisX;
            FamilySymbol symbol = null;
            RevitBaseUtilities.DoSomethingInsideTransaction(() => familyDocument.LoadFamilySymbol(holeFileName, Path.GetFileNameWithoutExtension(holeFileName),
                                                                                                  new FamilyLoadingDontOverwriteOption(), out symbol), familyDocument);

            FamilyInstance inst;
            RevitBaseUtilities.DoSomethingInsideTransaction(() => inst = familyDocument.FamilyCreate.NewFamilyInstance(pf, location, referenceDirection , symbol), familyDocument);
            familyDocument.SaveAs(resultFileName);
            familyDocument.Close(false);

问题是圆柱体总是被放置在Z=0。如果有必要,我可以发送孔家族和结果项目。

在Revit 2014中插入面部托管嵌套家庭实例时,Z坐标被忽略

如果我理解你做的是正确的,你可能想使用从引用/元素继承的GlobalPoint属性而不是PlanarFace。正常的项目。或者至少在你的实现中包含它,这样你也可以抓取你引用的项目的XYZ