示例#1
0
        private bool rotateOrg()
        {
            if (selectedObjectsList == null)
            {
                return(false);
            }
            IGeoObject iGeoObjectSel;

            blk = Block.Construct(); // zur Darstellung
            if (base.ActiveObject != null)
            {
                blk.CopyAttributes(base.ActiveObject);
            }
            // der block wird das neue aktive Objekt, er muss die Attribute tragen, weil sie später
            // wieder von ihm verlangt werden
            Boolean success = false;                                  // hat er wenigstens eins gefunden

            for (int i = 0; i < selectedObjectsList.Count; i++)       // läuft über alle selektierten Objekte. Evtl nur eins bei Konstruktion
            {
                iGeoObjectSel               = selectedObjectsList[i]; // zur Vereinfachung
                geoObjectOrgList[i]         = iGeoObjectSel;          // zum Weglöschen des Originals in onDone
                ownerList[i]                = iGeoObjectSel.Owner;    // owner merken für löschen
                pathCreatedFromModelList[i] = null;
                shapeList[i]                = null;
                Path p = null;
                if (iGeoObjectSel is ICurve)
                {
                    p = CADability.GeoObject.Path.CreateFromModel(iGeoObjectSel as ICurve, Frame.ActiveView.Model, Frame.ActiveView.Projection, true);
                    if (p == null)
                    {     // also nur Einzelelement
                        if (iGeoObjectSel is Path)
                        { // schon fertig
                            p = iGeoObjectSel.Clone() as Path;
                        }
                        else
                        {  // Pfad aus Einzelobjekt machen:
                            p = Path.Construct();
                            p.Set(new ICurve[] { iGeoObjectSel.Clone() as ICurve });
                        }
                    }
                    else
                    {                                       // CreateFromModel hat was zusammengesetzt
                        geoObjectOrgList[i]         = null; // zum nicht Weglöschen des Originals in onDone
                        pathCreatedFromModelList[i] = p;    // kopie merken für onDone
                        p = p.Clone() as Path;
                        p.Flatten();
                    }
                    if (p != null)
                    { //
                        if (angleOffsetRotation != 0.0)
                        {
                            ModOp m = ModOp.Rotate(axisPoint, axisVector, new SweepAngle(angleOffsetRotation));
                            p.Modify(m);
                        }
                        double sw = angleRotation;
                        if (sw == 0.0)
                        {
                            sw = Math.PI * 2.0;
                        }
                        IGeoObject shape = Make3D.MakeRevolution(p, axisPoint, axisVector, sw, Frame.Project);
                        if (shape != null)
                        {
                            shape.CopyAttributes(blk);
                            // die Attribute müssen vom Block übernommen werden
                            shapeList[i] = shape;         // fertiger Körper in shapeList
                            blk.Add(shape);               // zum Darstellen
                            base.FeedBack.AddSelected(p); // zum Markieren des Ursprungsobjekts
                            success = true;
                        }
                    }
                }
            }
            if (success)
            {
                base.ActiveObject     = blk; // darstellen
                base.ShowActiveObject = true;
                return(true);
            }
            else
            {
                optionalOrg();
                base.ShowActiveObject = false;
                base.FeedBack.ClearSelected();
                return(false);
            }
        }