C#SolidWorks二次開発API ---エンジニアリング図面パースペクティブのバッチ変更

これは、最初の2週間の友人にとっての小さな機能です。図面の視野角オプションを変換するだけです。すべてを第1または第3の視点に変更します。
もともとexeを書いていたのですが、ローカルテストは問題ありませんでした。その結果、彼らは暗号化ソフトウェアを持っており、正常に動作することができません。dllを再試行しましたが、それでも機能しません。最後に、私は彼のためにswpマクロを作成しました。
これは本当に強力なリズムです。ここに画像の説明を挿入
関数を分析します。
パースペクティブを変更するには、Soidworksのドキュメントプロパティのオプションを変更します。
次に、バッチを実現するために、フォルダの下のすべての設計図をトラバースすることができます。もちろん、設計図に複数の図面がある場合も考慮してください。しかし、ドキュメントのプロパティがすべての図面の設定を定義しているようです。私は詳しく調べに行きませんでした。

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200711084742103.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3plbmdxaDAzMTQ=,size_16,color_FFFFFF,t_70)
  private void btnSelectFolder_Click(object sender, EventArgs e)
        {
    
    
            //选择文件夹对话框
            FolderSelectDialog fsd = new FolderSelectDialog();
            fsd.Title = "选择需要调整的工程图所在路径:";
            fsd.Multiselect = false;

            if (fsd.ShowDialog())
            {
    
    
                string[] dirs = fsd.FileNames;
                txtDrawomgPath.Text = dirs[0];
            }
        }

        private void buttonStart_Click(object sender, EventArgs e)
        {
    
    
            if (radioFirst.Checked == false && radioThird.Checked == false)
            {
    
    
                MessageBox.Show("请先选择视角!");

                return;
            }

            string[] files = Directory.GetFiles(txtDrawomgPath.Text, "*.slddrw", SearchOption.AllDirectories);

            SldWorks swApp = PStandAlone.GetSolidWorks();

            if (swApp == null)
            {
    
    
                swApp = PStandAlone.RunSolidWorks(-1, true, false, false, 30, 15);
            }

            swApp.CommandInProgress = true;
            progressBar1.Maximum = files.Length;

            int nowFileCount = 0;

            foreach (string file in files)
            {
    
    
                progressBar1.Value = nowFileCount;

                Debug.Print(file);

                swApp.OpenDoc(file, (int)swDocumentTypes_e.swDocDRAWING);

                ModelDoc2 swModel = (ModelDoc2)swApp.ActiveDoc;

                DrawingDoc drawingDoc = default(DrawingDoc);

                Sheet swSheet = default(Sheet);
                double[] sheetProperties = null;

                string activedSheetName = "";

                drawingDoc = (DrawingDoc)swApp.ActiveDoc;

                if (drawingDoc != null)
                {
    
    
                    activedSheetName = ((Sheet)drawingDoc.GetCurrentSheet()).GetName();
                    var sheetNames = (string[])drawingDoc.GetSheetNames();
                    for (int i = 0; i < sheetNames.Length; i++)
                    {
    
    
                        //var sheet = drawingDoc.Sheet[sheetNames[i]];

                        drawingDoc.ActivateSheet(sheetNames[i]);
                        // Active sheet is Sheet2
                        swSheet = (Sheet)drawingDoc.GetCurrentSheet();
                        sheetProperties = (double[])swSheet.GetProperties2();
                        int prop1;
                        int prop2;
                        bool prop5;
                        bool prop8;
                        prop1 = (int)System.Convert.ToInt32(sheetProperties[0]);
                        prop2 = (int)System.Convert.ToInt32(sheetProperties[1]);

                        if (radioFirst.Checked == true)
                        {
    
    
                            prop5 = true;
                        }
                        else
                        {
    
    
                            prop5 = false;
                        }

                        //prop5 = (bool)System.Convert.ToBoolean(sheetProperties[4]);

                        prop8 = (bool)System.Convert.ToBoolean(sheetProperties[7]);
                        prop8 = true;

                        swSheet.SetProperties2(prop1, prop2, sheetProperties[2], sheetProperties[3], prop5, sheetProperties[5], sheetProperties[6], prop8);

                        swModel.EditRebuild3();
                    }
                }
                drawingDoc.ActivateSheet(activedSheetName);
                swModel.EditRebuild3();
                swModel.Save();

                swApp.CloseDoc(file);
                nowFileCount = nowFileCount + 1;
            }

            swApp.CommandInProgress = false;
            progressBar1.Value = progressBar1.Maximum;

            swApp.SendMsgToUser("视角转换完成!");
        }

マクロリンク:
https //download.csdn.net/download/zengqh0314/12600462

おすすめ

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