【NXOpen C#】创建文字

创建文字的核心代码

说明:MyText是一个文字类,记录了文字的基本特征,代码实现在manip坐标控件原点上生成一个文字对象;

代码示例

        /// <summary>
        /// 创建文字对象
        /// </summary>
        /// <param name="args"></param>
        /// <param name="manip"></param>
        /// <param name="textsNxObject"></param>
        /// <param name="textObject"></param>
        public static void CreateText1(SpecifyOrientation manip, Text textsNxObject, MyText textObject)
        {
            string[] valueStrings = textObject.ValueStrings;

            Session theSession = Session.GetSession();
            Part workPart = theSession.Parts.Work;

            if (valueStrings.Length >= 1)
            {
                Vector3d xVector3d = manip.XAxis;
                Vector3d yVector3d = manip.YAxis;
                
                TextBuilder textBuilder1 = workPart.Features.CreateTextBuilder(textsNxObject);
                textBuilder1.TextString = valueStrings[0]; //刻字内容(第一行)

                textBuilder1.PlanarFrame.AnchorLocation = RectangularFrameBuilder.AnchorLocationType.MiddleCenter; //锚点居中
                textBuilder1.SelectFont(textObject.TheFont, GetFontScript(textObject)); //字体
                SetTextFontStyle(textBuilder1, textObject); //设置字体粗细类型
                textBuilder1.PlanarFrame.Height.RightHandSide = textObject.FontHeight.ToString(CultureInfo.InvariantCulture); //字高
                textBuilder1.PlanarFrame.WScale = textObject.FontWScale; //设置长宽比
                textBuilder1.PlanarFrame.Shear.RightHandSide = "0";
                textBuilder1.FrameOnPath.AnchorPosition.Expression.RightHandSide = "0";

                Xform xForm = workPart.Xforms.CreateXform(manip.Origin, xVector3d, yVector3d, SmartObject.UpdateOption.WithinModeling, 1); //文字位置
                textBuilder1.OnFacePlacementProfile.ReverseDirection();

                CartesianCoordinateSystem cartesianCoordinate = workPart.CoordinateSystems.CreateCoordinateSystem(xForm, SmartObject.UpdateOption.WithinModeling);
                textBuilder1.PlanarFrame.CoordinateSystem = cartesianCoordinate;
                var markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "text");

                textsNxObject = (Text) textBuilder1.Commit();
                textBuilder1.Destroy();
                theSession.UpdateManager.DoUpdate(markId1);
                theSession.DeleteUndoMark(markId1, null);
            }

        }
var markId1 = theSession.SetUndoMark(NXOpen.Session.MarkVisibility.Visible, "text");

textsNxObject = (Text)textBuilder1.Commit();
//这里的Markd1用于文字对象的更新,如果没有则文字不会被刷新出现
textBuilder1.Destroy();

theSession.UpdateManager.DoUpdate(markId1);
theSession.DeleteUndoMark(markId1, null);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值