AutoCAD Map 3D Developer
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic to the Top
- Bookmark
- Subscribe
- Printer Friendly Page
.net Zoom to a selected point
Options
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
142 Views, 2 Replies
10-28-2012 09:55 PM
How can I zoom to a selected point programmatically?
Thanks.
Re: .net Zoom to a selected point
Options
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
10-29-2012 03:50 AM in reply to:
newautocad123
Here is one way using COM. I just did a quick review and you might get an error if objectid is a Point object but this will get you going.
static public void ZoomObject(ObjectId id, double zoomFactor)
{
Database db = HostApplicationServices.WorkingDatabase;
AcadApplication app = (AcadApplication)Autodesk.AutoCAD.ApplicationServi ces.Application.AcadApplication;
Point3d center;
double zoomHeight = 0.0;
using (Transaction tr = db.TransactionManager.StartTransaction())
{
object oMinpt = new object(), oMaxpt = new object();
double[] dMinpt = new double[3], dMaxpt = new double[3];
Entity en = (Entity)tr.GetObject(id, OpenMode.ForRead);
AcadEntity en_com = en.AcadObject as AcadEntity;
Object minPt = new Object(), maxPt = new Object();
en_com.GetBoundingBox(out oMinpt, out oMaxpt);
dMinpt = (double[])oMinpt; dMaxpt = (double[])oMaxpt;
double heightEnt = dMaxpt[1] - dMinpt[1];
double widthEnt = dMaxpt[0] - dMinpt[0];
Object objRes = new Object(); objRes = app.ActiveDocument.GetVariable("SCREENSIZE");
Point2d screenRes = new Point2d((double[])objRes);
double aspectScreen = screenRes.Y / screenRes.X;
double aspectEnt = heightEnt / widthEnt;
if (aspectEnt < aspectScreen)
{
zoomFactor *= (aspectEnt / aspectScreen);
}
center = new Point3d(
(dMinpt[0] + dMaxpt[0]) * 0.5,
(dMinpt[1] + dMaxpt[1]) * 0.5,
(dMinpt[2] + dMaxpt[2]) * 0.5
);
zoomHeight = heightEnt * 100 / Math.Max(zoomFactor, 1e-6);
}
if (zoomHeight <= 0)
zoomHeight = 1;
app.ZoomCenter(center.ToArray(), zoomHeight);
}r,
dennis
Re: .net Zoom to a selected point
Options
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
10-29-2012 08:26 PM in reply to:
djonio
Thanks. It works as desired.

