Ejemplo n.º 1
0
        getSurfaceFromXRef(string nameSurf, string strSource)
        {
            string nameXRef = "";

            if (nameSurf == "CPNT-ON")
            {
                nameXRef = "GCAL";
            }
            if (nameSurf == "EXIST")
            {
                nameXRef = "CONT";
            }

            ResultBuffer rb = xRef.getXRefsContainingTargetDwgName(nameXRef);

            TypedValue[] tvs = rb.AsArray();

            switch (tvs.Length)
            {
            case 0:
                Application.ShowAlertDialog(string.Format("{0} not attached", nameXRef = (nameSurf == "CPNT-ON") ? "GCAL" : "CONT"));
                break;

            case 2:
                foreach (TypedValue tv in tvs)
                {
                    if (tv.TypeCode == 1001)
                    {
                        nameXRef = tv.Value.ToString();
                    }
                }

                break;

            default:
                string prompt = string.Format("Multible {0} are attached. Select one to use for staking: ", nameXRef = (nameSurf == "CPNT-ON") ? "GCAL" : "CONT");
                Application.ShowAlertDialog(prompt);
                fPickXref = Forms.Stake_Forms.sForms.fPickXref;
                foreach (TypedValue tv in tvs)
                {
                    if (tv.TypeCode == 1001)
                    {
                        fPickXref.lboxSelectXref.Items.Add(tv.Value.ToString());
                    }
                }
                fPickXref.Text = string.Format("Multible {0} are attached. Select one to use for staking: ", nameXRef = (nameSurf == "CPNT-ON") ? "GCAL" : "CONT");
                Application.ShowModalDialog(null, fPickXref, false);

                nameXRef = fPickXref.nameXRef;
                if (nameXRef == "")
                {
                    return;
                }

                break;
            }

            Surf.removeSurface(nameSurf);
            BlockReference br = xRef.getXRefBlockReference(nameXRef);

            TinSurface s = xRef.getXRefTinSurface(br.Id, nameSurf);

            if (s == null)
            {
                return;
            }
            string nameLayer = string.Format("{0}-SURFACE", nameSurf);

            if (nameSurf == "CPNT-ON")
            {
                nameLayer = "CPNT-SURFACE";
            }
            Layer.manageLayers(nameLayer);

            TinSurface surf      = null;
            string     nameStyle = "CPNT-ON";

            using (Transaction tr = BaseObjs.startTransactionDb())
            {
                if (nameSurf == "CONT")
                {
                    nameStyle = "EXIST";
                }
                ObjectId idStyle = Surf_Styles.getSurfaceStyle(nameStyle);
                ObjectId idSurf  = TinSurface.Create(nameSurf, idStyle);
                surf             = (TinSurface)idSurf.GetObject(OpenMode.ForWrite);
                surf.Layer       = nameLayer;
                surf.Description = string.Format("COPIED FROM {0} - {1}", nameXRef, DateTime.Now);
                tr.Commit();
            }

            surf.PasteSurface(s.ObjectId);

            Layer.manageLayer(nameLayer, layerFrozen: true);
            if (nameSurf == "CPNT-ON")
            {
                if (strSource == "STAKE")
                {
                    sFrms.sForms.fStake.SurfaceCPNT = surf;
                }
            }
        }