i have problem in net
step 1 :select borders / cover in models space (multi select)
step 2 : every selection will be to zoom to every papersapce
but problem in all paperspace has zoom only to first selection
this is my code what is wrong from code
from file in every paperspace what is i wanted
[CommandMethod("zv", CommandFlags.UsePickSet | CommandFlags.Redraw)]
public void testview()
{
var doc = acApp.DocumentManager.MdiActiveDocument;
Database db = HostApplicationServices.WorkingDatabase;
var ed = doc.Editor;
List<ObjectId> lisCircleObjId = new List<ObjectId>();
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();
}
}
private List<ObjectId> lisFindObjIdOfCircle()
{
Document doc = acApp.DocumentManager.MdiActiveDocument;
Editor ed = doc.Editor;
List<ObjectId> lisObjectIdFound = new List<ObjectId>();
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);
}