C#SolidWorks二次開発API ---スケッチの直線を変更する方法

 昨日、一部のネチズンはスケッチの内容を変更する方法を知りたがっていましたが、今日はそれを解決する方法を見ていきます。

以前に開いて作成するコマンドに次のコードを記述しました。

                    //选择对应的草图基准面
                    bool boolstatus = swModel.Extension.SelectByID2("Plane1", "PLANE", 0, 0, 0, false, 0, null, 0);

                    //创建一个2d草图
                    swModel.SketchManager.InsertSketch(true);

                    //画一条线 长度100mm  (solidworks 中系统单位是米,所以这里写0.1)
                    swModel.SketchManager.CreateLine(0, 0, 0, 0, 0.1, 0);

                    //关闭草图
                    swModel.SketchManager.InsertSketch(true);

スケッチマネージャーがSketchManagerであることを知っています。

ここで公式の例を見つけるのは簡単です。SketchManagerを見つけるためにAPIヘルプに行きましょう。

 

ここではVBAですが、一般的な手順を大まかに知ることができます。この情報の読み方については、これを参照してください。最初にこの例を理解できます。変更方法を検討した後、前の図で描いた直線の長さと位置を変更するための簡単なコード行もいくつか作成しました。

デフォルトの現在の状態:

コードは次のように表示されます。

        private void btnCreateSketch_Click(object sender, EventArgs e)
        {
            //如果没有打开文件,请执行打开和创建的操作:
            //BtnOpenAndNew_Click(null, null);

            //连接到Solidworks
            ISldWorks swApp = Utility.ConnectToSolidWorks();

            ModelDoc2 swModel = (ModelDoc2)swApp.ActiveDoc;

            //定义草图管理器
            SketchManager sketchManager = swModel.SketchManager;

            //按名字选择草图
            bool boolstatus = swModel.Extension.SelectByID2("Sketch1", "SKETCH", 0, 0, 0, false, 0, null, 0);

            if (boolstatus == true)
            {
                //编辑草图
                sketchManager.InsertSketch(false);
                //获取当前草图,当获取草图中的Segment对象
                Sketch sketch = swModel.GetActiveSketch2();
                object[] sketchSegments = sketch.GetSketchSegments();

                if (sketchSegments != null)
                {
                    //遍历
                    foreach (var skSeg in sketchSegments)
                    {
                        SketchSegment sketchSegment = (SketchSegment)skSeg;

                        //判断是直线时执行
                        if (sketchSegment.GetType() == (int)swSketchSegments_e.swSketchLINE)
                        {
                            SketchLine sketchLine = (SketchLine)sketchSegment;
                            SketchPoint sketchPointStart = sketchLine.GetStartPoint2();
                            SketchPoint sketchPointEnd = sketchLine.GetEndPoint2();

                            //这里显示弹出坐标,单位默认是米
                            MessageBox.Show(sketchPointStart.X.ToString() + "," + sketchPointStart.Y.ToString());
                            MessageBox.Show(sketchPointEnd.X.ToString() + "," + sketchPointEnd.Y.ToString());

                            SelectionMgr swSelMgr = swModel.SelectionManager;

                            //定义选择数据
                            SelectData swSelData = swSelMgr.CreateSelectData();

                            //选择此直线

                            sketchSegment.Select4(false, swSelData);

                            //删除当前的约束关系
                            swModel.SketchConstraintsDelAll();

                            //下在我们来修改坐标
                            sketchPointStart.X = 0.05;
                            sketchPointStart.Y = 0.04;

                            sketchPointEnd.X = 0.2;
                            sketchPointEnd.Y = 0.2;
                        }
                    }
                }

                //退出草图
                sketchManager.InsertSketch(true);
            }
        }

実行後、ファイル内のスケッチは次のようになります。

ここで説明されているのはアイデアであり、誰もがそれを理解できるはずです。

特定のコードは私のコードクラウドまたはgithubからダウンロードでき、質問を歓迎します。

 

おすすめ

転載: blog.csdn.net/zengqh0314/article/details/105117286