public static LineBasedFamilyCreator_onPlanarFace CreateSimilar(FamilyInstance _fi, Document _tarDoc, double _hostSearchRange) { var refDoc = _fi.Document; var refDocId = refDoc.Identifier(); var tarDocId = _tarDoc.Identifier(); var locLine = _fi.LocationLine(); var offsetLocLine = LineBasedFamilyUtils.GetOffsetLocLine(_fi); var param = _fi.GetAllEditableParams(); DesignOption dop; string dopUid, dopName; OpContext.GetActiveDesignOptionInfo(_tarDoc, out dop, out dopUid, out dopName); var opContext = new OpContext(refDocId, tarDocId, refDoc, _tarDoc, dopUid, dopName, _fi.Id); var hostCat = HostUtils.GetHostCategory(_fi); var hostDir = HostUtils.GetHostDir(_fi); var faceNorm = _fi.GetPlane().Normal; var bb = _fi.GetBoundingBoxInModelCS(null); var bbFilter = Methods.GetBBIntersectFilter(bb, _hostSearchRange); var search = new HostSearchSession(_tarDoc, hostCat, bbFilter, hostDir, faceNorm, dop); Element host; var hostFace = search.FindHostFace(locLine, out host); var ctr = new LineBasedFamilyCreator_onPlanarFace (_fi.Symbol, offsetLocLine, _fi.FacingOrientation, host, hostFace, param, opContext); Methods.GetCutsAndJoins(_fi, out ctr.Cuts, out ctr.CutBy, out ctr.Joins); ctr.CutsHost = HostUtils.CutsHost(_fi); return(ctr); }
public static FaceBasedFamilyCreator CreateSimilar(FamilyInstance _fi, Document _tarDoc, double _hostSearchRange) { var refDoc = _fi.Document; var pos = _fi.GetPos(); var hostCat = HostUtils.GetHostCategory(_fi); var bb = _fi.GetBoundingBoxInModelCS(null); var bbFilter = Methods.GetBBIntersectFilter(bb, _hostSearchRange); XYZ faceNorm = null; DesignOption dop; string dopUid, dopName; OpContext.GetActiveDesignOptionInfo(_tarDoc, out dop, out dopUid, out dopName); var hostDir = HostUtils.GetHostDir(_fi); var search = new HostSearchSession(_tarDoc, hostCat, bbFilter, hostDir, faceNorm, dop); Element host; var hostFace = search.FindHostFace(pos, out host); var param = _fi.GetAllEditableParams(); var refDocId = refDoc.Identifier(); var tarDocId = _tarDoc.Identifier(); var opContext = new OpContext(refDocId, tarDocId, refDoc, _tarDoc, dopUid, dopName, _fi.Id); var ctr = new FaceBasedFamilyCreator (_fi.Symbol, _fi.Host, hostFace, pos, _fi.HandOrientation, _fi.FacingOrientation, param, opContext); return(ctr); }
public static LineBasedFamilyCreator_onLevel CreateSimilar(FamilyInstance _fi, Document _tarDoc, int _hostLevel) { var hostLevel = _fi.Host as Level; var offsetLocLine = LineBasedFamilyUtils.GetOffsetLocLine(_fi); var param = _fi.GetAllEditableParams(); var refDoc = _fi.Document; var refDocId = _fi.Document.Identifier(); var tarDocId = _tarDoc.Identifier(); DesignOption dop; string dopUid, dopName; OpContext.GetActiveDesignOptionInfo(_tarDoc, out dop, out dopUid, out dopName); var opContext = new OpContext(refDocId, tarDocId, refDoc, _tarDoc, dopUid, dopName, _fi.Id); var ctr = new LineBasedFamilyCreator_onLevel (_fi.Symbol, offsetLocLine, _fi.FacingOrientation, hostLevel, _fi.StructuralType, param, opContext); return(ctr); }
public static WallBasedFamilyCreator CreateSimilar(FamilyInstance _fi, Document _tarDoc, double _hostSearchRange) { var refDoc = _fi.Document; var param = _fi.GetAllEditableParams(); var refDocId = refDoc.Identifier(); var tarDocId = _tarDoc.Identifier(); DesignOption dop; string dopUid, dopName; OpContext.GetActiveDesignOptionInfo(_tarDoc, out dop, out dopUid, out dopName); var opContext = new OpContext(refDocId, tarDocId, refDoc, _tarDoc, dopUid, dopName, _fi.Id); var hostCat = HostUtils.GetHostCategory(_fi); var hostDir = HostUtils.GetHostDir(_fi); var bb = _fi.GetBoundingBoxInModelCS(null); var bbFilter = Methods.GetBBIntersectFilter(bb, _hostSearchRange); var posPoints = HostUtils.GetPointsInsideWallHost(_fi); var search = new HostSearchSession(_tarDoc, hostCat, bbFilter, hostDir, null, dop); var hostWall = search.FindHostWall(posPoints); var ctr = new WallBasedFamilyCreator (_fi.Symbol, hostWall, _fi.GetPos(), _fi.HandOrientation, _fi.FacingOrientation, _fi.StructuralType, param, opContext); return(ctr); }