30/05/2013
Создание новой ViewTableRecord с камерой и целью
Этот пример на C# запрашивает точки цели и камеры. Положение камеры может быть вычислено как сумма вектора направления ViewTableRecord и точки цели.
Код - C#: [Выделить]
- [CommandMethod("sampleCameraView", CommandFlags.Transparent)]
- public static void CmdViewCamera()
- {
- Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
- // Выбираем точку цели
- PromptPointOptions ppoView =
- new PromptPointOptions("\nУкажите точку цели: ");
- PromptPointResult pprView = ed.GetPoint(ppoView);
- if (pprView.Status != PromptStatus.OK) return;
- Point3d viewPoint = pprView.Value;
- // Выбираем точку камеры
- PromptPointOptions ppoCamera =
- new PromptPointOptions("\nУкажите точку камеры: ");
- PromptPointResult pprCamera = ed.GetPoint(ppoCamera);
- if (pprView.Status != PromptStatus.OK) return;
- Point3d cameraPoint = pprView.Value;
- // Создаём
- ViewTableRecord viewTBR = new ViewTableRecord();
- viewTBR.Target = viewPoint;
- viewTBR.ViewDirection =
- viewPoint.GetVectorTo(cameraPoint);
- viewTBR.Height = 50.0;
- viewTBR.CenterPoint = Point2d.Origin;
- // Показываем новый вид
- ed.SetCurrentView(viewTBR);
- #if DEBUG
- // для отладки...
- // http://msdn.microsoft.com/en-us/library/4y6tbswk.aspx
- Point3d cameraPoint3d = viewTBR.Target.Add(viewTBR.ViewDirection);
- ed.WriteMessage("\nCamera X = {0:0.00}", cameraPoint3d.X);
- ed.WriteMessage("\nCamera Z = {0:0.00}", cameraPoint3d.Y);
- ed.WriteMessage("\nCamera Z = {0:0.00}", cameraPoint3d.Z);
- #endif
- }
Источник: http://adndevblog.typepad.com/autocad/2012/07/create-new-viewtablerecord-with-camera-and-target.html
Обсуждение: http://adn-cis.org/forum/index.php?topic=83.0
Опубликовано 30.05.2013
Отредактировано 08.06.2013 в 02:22:34
Отредактировано 08.06.2013 в 02:22:34