找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1169|回复: 0

[分享] Align the UCS to an entity

[复制链接]

已领礼包: 859个

财富等级: 财运亨通

发表于 2014-6-10 23:50:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
Align the UCS to an entityBy Virupaksha Aithal
Below code shows the procedure to align the UCS to a line. Below code treats the Lines start point is origin of the UCS.
[CommandMethod("SetUCS")]
static public void SetUCS()
{
    // get the database
    Database db = HostApplicationServices.WorkingDatabase;
    Editor ed = Application.DocumentManager.MdiActiveDocument.Editor;
    // select a line
    PromptEntityOptions options = new PromptEntityOptions(
                    "\nSelect an Line Entity to set the UCS too : ");
    options.SetRejectMessage("\nSelect Line");
    options.AddAllowedClass(typeof(Line), false);
    PromptEntityResult res = ed.GetEntity(options);
    // if ok
    if (res.Status != PromptStatus.OK)
        return;
    using (Transaction Tx = db.TransactionManager.StartTransaction())
    {
        Line ent = Tx.GetObject(res.ObjectId, OpenMode.ForRead) as
                        Line;
        // get the ucs from the entity
        Matrix3d ecs = new Matrix3d();
        // set the direction of the
        Vector3d xVec = (ent.EndPoint - ent.StartPoint);
        // normalise
        xVec = xVec.GetNormal();
        // set up the coord system that we want
        CoordinateSystem3d coordSystem = new CoordinateSystem3d(
          ent.StartPoint, xVec,
          xVec.CrossProduct(ent.Normal).Negate());
        CoordinateSystem3d cosy =
               ed.CurrentUserCoordinateSystem.CoordinateSystem3d;
        // now align from the current ucs to ours
        ecs = Matrix3d.AlignCoordinateSystem(
                                              cosy.Origin,
                                              cosy.Xaxis,
                                              cosy.Yaxis,
                                              cosy.Zaxis,
                                              coordSystem.Origin,
                                              coordSystem.Xaxis,
                                              coordSystem.Yaxis,
                                              coordSystem.Zaxis
                                              );
        // now set the current ucs to the ecs
        ed.CurrentUserCoordinateSystem = ecs;
        Tx.Commit();
    }
    // finally update the viewport
    ed.UpdateTiledViewportsInDatabase();

}



论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-17 22:29 , Processed in 0.173889 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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