明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1726|回复: 1

新建UCS,帮忙看下哪里不对?

[复制链接]
发表于 2012-9-21 00:18:39 | 显示全部楼层 |阅读模式
本帖最后由 白糖 于 2012-9-21 00:21 编辑

交互方式新建一个UCS,指定原点,指定Y轴,旋转90°为X轴
  1. [CommandMethod("newUCS")]
  2. public static void NewUCS()
  3. {
  4.         Document doc = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument;
  5.         Database db = doc.Database;
  6.         Editor ed = doc.Editor;
  7.        
  8.         using (Transaction trans = db.TransactionManager.StartTransaction())
  9.         {
  10.                 UcsTable ut = trans.GetObject(db.UcsTableId,OpenMode.ForRead) as UcsTable;
  11.                 UcsTableRecord utr;
  12.                 if (ut.Has("New_UCS") == false)
  13.                 {
  14.                         utr = new UcsTableRecord();
  15.                         utr.Name = "New_UCS";
  16.                         utr.UpgradeOpen();
  17.                         ut.Add(utr);
  18.                         trans.AddNewlyCreatedDBObject(utr,true);
  19.                 }else
  20.                 {
  21.                         utr = trans.GetObject(ut["New_UCS"],OpenMode.ForWrite) as UcsTableRecord;
  22.                 }
  23.                 //指定原点
  24.                 PromptPointOptions pPtOpts = new PromptPointOptions("\n指定原点");
  25.                 PromptPointResult pPtRes = ed.GetPoint(pPtOpts);
  26.                 if (pPtRes.Status == PromptStatus.OK)
  27.                 {
  28.                         utr.Origin = pPtRes.Value;
  29.                 }
  30.                
  31.                 //指定Y轴
  32.                 pPtOpts = new PromptPointOptions("指定Y轴方向");
  33.                 pPtRes = ed.GetPoint(pPtOpts);
  34.                 if (pPtRes.Status == PromptStatus.OK)
  35.                 {
  36.                         Vector3d vec = pPtRes.Value - utr.Origin;
  37.                         utr.YAxis = vec.GetNormal();
  38.                 }
  39.                
  40.                 //Y轴旋转90°为X轴
  41.                 utr.XAxis = utr.YAxis.RotateBy(Math.PI/2,Vector3d.ZAxis);
  42.                
  43.                 Matrix3d mt = Matrix3d.AlignCoordinateSystem(Point3d.Origin,Vector3d.XAxis,Vector3d.YAxis,Vector3d.ZAxis,utr.Origin,utr.XAxis,utr.YAxis,Vector3d.ZAxis);
  44.                 ed.CurrentUserCoordinateSystem = mt;
  45.                 trans.Commit();
  46.         }
  47. }

发表于 2012-9-21 21:27:06 | 显示全部楼层
line 16 ,有个笔误

     utr.UpgradeOpen();----》     ut.UpgradeOpen();

点评

非常感谢您的帮助!  发表于 2012-9-21 21:53
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 17:40 , Processed in 0.147569 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表