@吉尔:我已经尝试了一周了,但仍然坚持执行此代码。步骤1:我在模型空间中选择边框/矩形。步骤2:每个边框/矩形都将缩放到所有纸张空间。问题在于,多选时,所有纸张空间都与边框/第一选择相同。此代码有什么问题
- private List lisFindObjIdOfCircle()
- {
- Document doc = acApp.DocumentManager.MdiActiveDocument;
- Editor ed = doc.Editor;
- List lisObjectIdFound = new List();
- try
- {
- var option = new PromptSelectionOptions(); option.MessageForAdding = "\nselect Rectangle/Borders Cover Gambar";
- var psr = ed.GetSelection(option, new SelectionFilter(new[] { new TypedValue(0, "LWPOLYLINE,Polyline") }));
-
- SelectionSet acSSet = psr.Value;
- if (psr.Status == PromptStatus.OK)
- {
-
- foreach (SelectedObject recID in acSSet)
- {
- lisObjectIdFound.Add(recID.ObjectId);
- }
- }
- }
- catch (System.Exception ex)
- {
- ed.WriteMessage("\nError in getting ObjectId of all circles on the drawing. " +
- "Error message is: " + ex.Message);
- }
- return (lisObjectIdFound);
- }
- [CommandMethod("zv", CommandFlags.UsePickSet | CommandFlags.Redraw)]
- public void testview()
- {
- var doc = acApp.DocumentManager.MdiActiveDocument;
- Database db = HostApplicationServices.WorkingDatabase;
- var ed = doc.Editor;
- List lisCircleObjId = new List();
- lisCircleObjId = this.lisFindObjIdOfCircle();
-
- using (Transaction trans = db.TransactionManager.StartTransaction())
- {
- using (var layoutDictionary = (DBDictionary)trans.GetObject(db.LayoutDictionaryId, OpenMode.ForRead))
- {
- using (var mylock = doc.LockDocument())
- {
- foreach (var layoutEntry in layoutDictionary)
- {
- if (layoutEntry.Key == "Model") continue;
- using (var layout = (Layout)trans.GetObject(layoutEntry.Value, OpenMode.ForWrite))
- {
- var n = 0;
- var extSelObj = new Extents3d();
- // ObjectId layoutId = LayoutManager.Current.CreateLayout(layout.LayoutName); // membuat layout
- LayoutManager.Current.CurrentLayout = layout.LayoutName;
- Entity entObj = (Entity)trans.GetObject(lisCircleObjId[n], OpenMode.ForRead);
- ObjectId idcover = entObj.ObjectId;
- extSelObj.AddExtents(entObj.GeometricExtents);
- bool isPaperspace = true;
- foreach (ObjectId viewportId in layout.GetViewports())
- {
- if (isPaperspace)
- {
- isPaperspace = false;
- continue;
- }
- using (var viewport = (Viewport)trans.GetObject(viewportId, OpenMode.ForWrite))
- {
- if (viewport.Locked == true) viewport.Locked = false;
- viewport.On = true;
- ed.Command("._MSPACE");
- // buat extend dari objectID
- var pl = trans.GetObject(entObj.ObjectId, OpenMode.ForRead) as Polyline;
- var ext = new Extents3d();
- ext = pl.GeometricExtents;
- var mn = ext.MinPoint;
- var mx = ext.MaxPoint;
- dynamic appAcad = acApp.AcadApplication;
- //appAcad.ZoomWindow(mn.ToArray(), mx.ToArray());
- ObjectId[] newIds = new ObjectId[0];
- ed.SetImpliedSelection(newIds);
- appAcad.ZoomWindow(extSelObj.MinPoint.ToArray(), extSelObj.MaxPoint.ToArray());
- ed.SetImpliedSelection(new ObjectId[] { idcover });
- // ed.SetImpliedSelection(new ObjectId[] { myRec });
- ed.Command("._PSPACE", "");
- doc.Editor.SwitchToPaperSpace();
- dynamic acadApp = acApp.AcadApplication;
- acadApp.ZoomExtents();
- ed.WriteMessage("\n viewlocked : " + viewport.Locked.ToString());
- break;
- }
- n += 1;
- ed.Regen();
- }
- }
- }
- }
- }
- trans.Commit();
-
- }
- }
|