找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 743|回复: 9

[分享] 文本镜像翻转问题

[复制链接]

已领礼包: 82个

财富等级: 招财进宝

发表于 2020-1-8 09:26:39 | 显示全部楼层 |阅读模式

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

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

×
/// <summary>
        /// 实体镜像操作
        /// </summary>
        /// <param name="entList"实体></param>
        public static void TurnMirror(List<Entity> entList)
        {
            
            Point3d pt1 = new Point3d();//镜像线两点
            Point3d pt2 = new Point3d();//镜像线两点
            List<DBText> txts = new List<DBText>();//文本

            Point3d ptMax;//文本包围框右上顶点
            Point3d ptMin;//文本包围框左下顶点
            Point3d ptZ;//文本包围框中心点---二次镜像第一点
            Vector3d mVec;//镜像线方向
            Point3d ptZs;//文本包围框中心点---二次镜像第二点

            foreach (Entity ent in entList)
            {
                if (ent.GetType() == typeof(Line))//判定是否为直线
                {
                    Line bLine = (Line)ent;
                    pt1 = bLine.StartPoint;
                    pt2 = bLine.EndPoint;
                }
                if (ent.GetType() == typeof(Polyline))//判定是否为文本
                {
                    Polyline pLine = (Polyline)ent;
                    pt1 = pLine.GetPoint3dAt(pLine.NumberOfVertices - 1);
                    pt2 = pLine.GetPoint3dAt(pLine.NumberOfVertices - 2);
                }
                if (ent.GetType() == typeof(DBText))//判定是否为文本
                {
                    txts.Add((DBText)ent);
                }
            }
            //文字镜像不翻转,需设置MIRRTEXT系统变量为0(默认1)
            int nMaxSort = Convert.ToInt32(Application.GetSystemVariable("MIRRTEXT"));
            if (nMaxSort == 1)
            {
                Application.SetSystemVariable("MIRRTEXT", 0);
            }
            //镜像
            foreach (var txt in txts)
            {
                txt.TransformBy(Matrix3d.Mirroring(new Line3d(pt1, pt2)));

                //再次镜像---文字镜像后翻转,需再次镜像调整(此处是BUG?开发文档里说明调整MIRRTEXT变量为0可以自动归正,然而并没有)
                ptMax = txt.GeometricExtents.MaxPoint;
                ptMin = txt.GeometricExtents.MinPoint;
                ptZ = new Point3d(ptMin.X + (ptMax.X - ptMin.X) / 2, ptMin.Y + (ptMax.Y - ptMin.Y) / 2, 0);
                mVec = pt1.GetVectorTo(pt2);
                ptZs = ptZ.Add(mVec.GetNormal() * 10);
                txt.TransformBy(Matrix3d.Mirroring(new Line3d(ptZ, ptZs)));
            }
        }
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 82个

财富等级: 招财进宝

 楼主| 发表于 2020-6-16 09:05:40 | 显示全部楼层
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 82个

财富等级: 招财进宝

 楼主| 发表于 2020-6-17 12:39:47 | 显示全部楼层
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 82个

财富等级: 招财进宝

 楼主| 发表于 2020-6-19 09:11:21 | 显示全部楼层
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 82个

财富等级: 招财进宝

 楼主| 发表于 2020-6-21 13:56:00 | 显示全部楼层
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 82个

财富等级: 招财进宝

 楼主| 发表于 2020-6-23 14:09:00 | 显示全部楼层
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 82个

财富等级: 招财进宝

 楼主| 发表于 2020-6-29 09:18:39 | 显示全部楼层
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 104个

财富等级: 日进斗金

发表于 2020-6-29 20:02:35 | 显示全部楼层
什么东西看看好玩儿不!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2020-6-29 20:09:12 | 显示全部楼层
mirrtext变量控制的是ACAD的命令,编程要自己处理
根据属性 isMirroredInx
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1个

财富等级: 恭喜发财

发表于 2021-11-3 09:33:02 | 显示全部楼层
牛批哦这个
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 01:17 , Processed in 0.438570 second(s), 45 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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