0

我正在尝试在通用专业设备系列中插入一个包含空隙挤出的面托管系列。场景如下:

  • 在“父”族中,放置了一个矩形挤压件,Z = 100 mm,高度 = 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 中。如有必要,我可以发送孔族和结果项目。

4

1 回答 1

0

如果我理解您的操作正确,您可能希望使用从 Reference/Element 继承的 GlobalPoint 属性,而不是 PlanarFace.Normal 项。或者至少将它包含在您的实现中,这样您还可以获取您引用的项目的 XYZ。

于 2014-07-17T21:16:55.320 回答