Вход на сайт

Просмотр новости

Найдите то, что Вас интересует

Managed .Net API でレイアウト空間のビューポート表示範囲のオブジェクトを取得する方法

Дата публикации: 17-08-2026 02:14:36


質問
Managed .Net API でレイアウト空間のビューポート表示範囲のオブジェクトを取得する方法はありますか?
 
回答
AutoCADでの、レイアウトのビューポートは、モデル空間への覗き窓となり、ビューポートに表示されている図形の実態はレイアウト空間には存在しません。また、ビューポートは、モデル空間とは異なる座標系を持つため、ビューポートに表示されている図形を取得するためには、ビューポートの表示領域の対角点座標をモデル空間上の座標に変換した後に、変換後の座標でモデル空間上の図形を選択する必要があります。次のコードは、ビューポートに表示されている図形の選択を行うサンプルコードです。
Document doc = Application.DocumentManager.MdiActiveDocument;
Editor ed = doc.Editor;
Database db = doc.Database;
ed.SwitchToPaperSpace();
//ビューポートを選択
var peo = new PromptEntityOptions("\nSelect viewport: ");
peo.SetRejectMessage("\nRequires a Viewport");
peo.AddAllowedClass(typeof(Viewport), false);
PromptEntityResult result = ed.GetEntity(peo);
if (result.Status != PromptStatus.OK)
return;
using (var tr = new OpenCloseTransaction())
{
Viewport viewport = (Viewport)tr.GetObject(result.ObjectId, OpenMode.ForRead);

/// ビューポート設定から、変換マトリクスを取得
Point2d viewCenter = viewport.ViewCenter;
double x = viewCenter.X;
viewCenter = viewport.ViewCenter;
Point3d center = new Point3d(x, viewCenter.Y, 0.0);
Point3d vpcenter = viewport.CenterPoint;
Matrix3d tfmatrix = (Matrix3d.Displacement(new Vector3d(vpcenter.X - center.X, vpcenter.Y - center.Y, 0.0))
* Matrix3d.Scaling(viewport.CustomScale, center)
* Matrix3d.Rotation(viewport.TwistAngle, Vector3d.ZAxis, Point3d.Origin)
* Matrix3d.WorldToPlane(new Plane(viewport.ViewTarget, viewport.ViewDirection))).Inverse();

///ビューポートのMin/Max座標を変換マトリクスでモデル座標に変換
Extents3d extents = viewport.GeometricExtents;
Point3d msMinPoint = extents.MinPoint.TransformBy(tfmatrix);
Point3d msMaxPoint = extents.MaxPoint.TransformBy(tfmatrix);
tr.Commit();
ed.SwitchToModelSpace();
//取得したMin、Maxポイントを用いて図形を選択
var psr = ed.SelectWindow(msMinPoint, msMaxPoint);
}
 

Схожие новости

#Наименование новостиТональностьИнформативностьДата публикации
1.NET :Interaction.GetObject で起動中の AutoCAD COM オブジェクトを取得できない場合の対処方法010.204-09-2026
2Visual Studioで「InventorViewCtrl.ocxの自己登録に失敗しました」エラーが発生して、Inventor ViewコントロールをWindowsフォームへ追加することが出来ない010.9417-08-2026
3AutoCAD .NET API :最後に追加されたエンティティの取得013.0323-08-2026
4Revit API Tips: 壁プロファイルの取得方法05.817-08-2026
5Revit API Tips: ソリッドやメッシュのジオメトリをプロジェクト上に作図する方法07.5917-08-2026
6Revit API Tips: 複数のファミリを組み合わせて(ネストして)新しいファミリを作成する方法06.1717-08-2026
7Autocad Web-viewport scale question031.3202-08-2026
8[BUG] "Align to" on a UCS plane orients the view to the Default Coordinate System instead of UCS06.9425-07-2026
9InventorのPack And Go を、VBAから実行する場合の参照設定013.1217-08-2026
10Shared View does not respect the redefined ViewCube Top orientation05.1602-08-2026

Классификация: . Схожих патентов: 0. Схожих новостей: 10. Тональность: 0. Информативность: 15.24. Источник: forums.autodesk.com.