コード例 #1
0
        protected IDisposable NewDocument(swDocumentTypes_e docType)
        {
            var useDefTemplates = m_SwApp.GetUserPreferenceToggle((int)swUserPreferenceToggle_e.swAlwaysUseDefaultTemplates);

            try
            {
                m_SwApp.SetUserPreferenceToggle((int)swUserPreferenceToggle_e.swAlwaysUseDefaultTemplates, true);

                var defTemplatePath = m_SwApp.GetDocumentTemplate(
                    (int)docType, "", (int)swDwgPaperSizes_e.swDwgPapersUserDefined, 100, 100);

                if (string.IsNullOrEmpty(defTemplatePath))
                {
                    throw new Exception("Default template is not found");
                }

                var model = (IModelDoc2)m_SwApp.NewDocument(defTemplatePath, (int)swDwgPaperSizes_e.swDwgPapersUserDefined, 100, 100);

                if (model != null)
                {
                    var docWrapper = new DocumentWrapper(m_SwApp, model);
                    m_Disposables.Add(docWrapper);
                    return(docWrapper);
                }
                else
                {
                    throw new NullReferenceException($"Failed to create new document from '{defTemplatePath}'");
                }
            }
            finally
            {
                m_SwApp.SetUserPreferenceToggle((int)swUserPreferenceToggle_e.swAlwaysUseDefaultTemplates, useDefTemplates);
            }
        }
コード例 #2
0
        private void buttonAuto_Click(object sender, EventArgs e)
        {
            //新建一个零件  ,画一条150长度的直线,然后最大化.

            ISldWorks iswApp = Utility.ConnectToSolidWorks();

            string partDefaultPath = iswApp.GetDocumentTemplate(1, "", 0, 0, 0);

            var part = iswApp.NewDocument(partDefaultPath, 0, 0, 0);

            ModelDoc2 modelDoc = (ModelDoc2)iswApp.ActiveDoc;

            modelDoc.Extension.SelectByID2("Plane1", "PLANE", 0, 0, 0, false, 0, null, 0);

            modelDoc.SketchManager.InsertSketch(true);

            modelDoc.SketchManager.CreateLine(0, 0.1, 0, 0, 0, 0);

            modelDoc.SketchManager.InsertSketch(true);

            modelDoc.ClearSelection2(true);

            modelDoc.Extension.SelectByID2("Sketch1", "SKETCH", 0, 0, 0, false, 1, null, 0);

            var b = modelDoc.InsertCompositeCurve();

            modelDoc.ClearSelection2(true);

            modelDoc.FeatureManager.ViewFeatures = false;

            modelDoc.ViewZoomtofit2();

            ModelView modelView = (ModelView)modelDoc.ActiveView;

            iswApp.FrameState = 1; //最大化solidworks
            modelDoc.ViewZoomtofit2();
            modelView.Scale2 = 0.5;

            //

            modelDoc.ClearSelection2(true);

            string ImagePath = @"D:\temp.JPG";

            modelDoc.SaveAs3(ImagePath, 0, 0);

            int LineInImage = img2color(ImagePath);

            try
            {
                System.IO.File.Delete(ImagePath);
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception);
            }

            if (LineInImage > 0)
            {
                double ActionScreenHeight = double.Parse(txtSCHeight.Text); //GetScreenRealWeight(double.Parse( textScreenSize.Text));

                //当前视图的比例
                double ActionScale = modelView.Scale2;

                //solidworks中的直线占比
                double defaultSolidworksP = LineInImage / 1200.0;//double.Parse(txtScreenY.Text);

                //当前比例下 1像素  等于多少mm
                double thisSc = 100 / LineInImage;

                //实际屏幕 1 像素尺寸

                double oneP = (ActionScreenHeight) / 1200.0;

                //当比例设置为 1时 1像素能表示的长度:
                double onePshowLength = thisSc / ActionScale;

                //959  1370

                GetWindowsSize getWindowSize = new GetWindowsSize();

                GetWindowsSize.windsize solidworksize = getWindowSize.GetSize("SLDWORKS");

                double getSC = 50.0 / (LineInImage * oneP);

                txtSC.Text = getSC.ToString();// getSC.ToString();

                modelView.Scale2 = getSC;

                modelDoc.GraphicsRedraw2();

                Debug.Print(getSC.ToString());
                // modelView.Scale2 = double.Parse(txtSC.Text);
                // sldWorks.scen
            }

            iswApp.CloseDoc(modelDoc.GetPathName());
        }
コード例 #3
0
        private void ExportBodies()
        {
            ModelDoc2 swModel = null;

            swModel = (ModelDoc2)iswApp.ActiveDoc;
            int longstatus;
            int longWarnings;

            PartDoc swPart = (PartDoc)swModel;

            string assembName = System.IO.Path.GetFileNameWithoutExtension(txtPath.Text);

            string bodyFolder = string.Join("", System.IO.Path.GetDirectoryName(txtPath.Text), "\\", assembName);

            if (!System.IO.Directory.Exists(bodyFolder))
            {
                System.IO.Directory.CreateDirectory(bodyFolder);
            }

            string partDefaultPath = iswApp.GetDocumentTemplate(1, "", 0, 0, 0);

            List <string> exportPartsName = new List <string>();

            ProgressBar.Maximum = 2 * listBodies_Normally.Items.Count;

            for (int i = 0; i < listBodies_Normally.Items.Count; i++)
            {
                swModel.ClearSelection2(true);

                string ActionBodyName = listBodies_Normally.Items[i].ToString();

                Boolean boolstatus = swModel.Extension.SelectByID2(ActionBodyName, "SOLIDBODY", 0, 0, 0, false, 0, null, 0);

                if (boolstatus == true)
                {
                    string bodyPath = "";

                    if (ActionBodyName.Contains("复制-"))
                    {
                        bodyPath = string.Join("", bodyFolder, "\\", "复制-", assembName + "-" + ActionBodyName.Replace("复制-", "").Replace("/", ""), ".sldprt");
                    }
                    else if (ActionBodyName.Contains("镜向-"))
                    {
                        bodyPath = string.Join("", bodyFolder, "\\", "镜向-", assembName + "-" + ActionBodyName.Replace("镜向-", "").Replace("/", ""), ".sldprt");
                    }
                    else
                    {
                        bodyPath = string.Join("", bodyFolder, "\\", assembName + "-" + ActionBodyName.Replace("/", ""), ".sldprt");
                    }

                    labStatus.Text = "正在导出-->" + ActionBodyName;

                    ProgressBar.Value = i;

                    Boolean b = swPart.SaveToFile3(bodyPath, 1, 1, false, partDefaultPath, out longstatus, out longWarnings);

                    if (b)
                    {
                        //BoxSize thisBoxSize = new BoxSize();
                        //GetBoundingBox(out thisBoxSize);
                        GetBoundingBox();
                        exportPartsName.Add(bodyPath);
                    }
                }
            }

            //把所有输出的零件 ,按默认原点装配成一个装配体。

            //string assemblyDefaultPath = iswApp.GetUserPreferenceStringValue(9); //swDefaultTemplatePart 8 swDefaultTemplateAssembly9 swDefaultTemplateDrawing

            //Debug.Print "Draw template = " & swApp.GetDocumentTemplate(swDocDRAWING, "", swDwgPaperAsize, 0#, 0#)
            //Debug.Print "Part template = " & swApp.GetDocumentTemplate(swDocPART, "", 0, 0#, 0#)
            //Debug.Print "Assy template = " & swApp.GetDocumentTemplate(swDocASSEMBLY, "", 0, 0#, 0#)

            string assemblyFullpath = System.IO.Path.GetDirectoryName(txtPath.Text) + "\\" + System.IO.Path.GetFileNameWithoutExtension(txtPath.Text) + ".sldasm";

            CreateNewAssembly(assemblyFullpath, exportPartsName);
        }