乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 22|回复: 1

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

[复制链接]

4

主题

12

帖子

1

银币

初来乍到

Rank: 1

铜币
28
发表于 2012-9-21 00:18:00 | 显示全部楼层 |阅读模式
交互方式新建一个UCS,指定原点,指定Y轴,旋转90°为X轴
  1. [CommandMethod("newUCS")]
  2. public static void NewUCS()
  3. {
  4.         Document doc = Autodesk..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. }

回复

使用道具 举报

0

主题

15

帖子

3

银币

初来乍到

Rank: 1

铜币
15
发表于 2012-9-21 21:27:00 | 显示全部楼层
line 16 ,有个笔误
     utr.UpgradeOpen();----》     ut.UpgradeOpen();
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-14 21:10 , Processed in 0.436066 second(s), 56 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表