コード例 #1
0
        private void btnCircle_Click(object sender, EventArgs e)
        {
            // Getting running AutoCAD instance by Marshalling by passing Programmatic ID as a string, AutoCAD.Application is the Programmatic ID for AutoCAD.
            AcadApp = (AcadApplication)Marshal.GetActiveObject("AutoCAD.Application");

            // Now AcadApp has the reference to the running AutoCAD instance, AcadApp object acts as a port for accessing running instance of AutoCAD.

            // Syntax for creating circle in AutoCAD
            // AcadApp.ActiveDocument.ModelSpace.AddCircle(CenterOfCircle, RadiusOfCircle);
            //
            // AcadApp        - Reference to the running instance of AutoCAD.
            // ActiveDocument - Represents the current working drawing in AutoCAD.
            // ModelSpace     - Work Area in the current drawing.
            // AddCricle      - Method, which adds a circle to the modelspace of the current drawing using the CenterPoint and Radius.
            // CenterOfCircle - 3 Dimensional double array variable holds the center point of the circle in the X, Y and Z axis.
            // RadiusOfCircle - Double variable holds the radius of circle.

            // Definfing the center point for the circle, in this example, we are using origin(0,0,0) as the center of circle.
            double[] CenterOfCircle = new double[3];
            CenterOfCircle[0] = 0;
            CenterOfCircle[1] = 0;
            CenterOfCircle[2] = 0;

            // Defining radius of circle from the user input.
            double RadiusOfCircle = Convert.ToDouble(txtRadius.Text.Trim());

            // Adding Circle to the modelspace and getting reference to the circle created.
            Circle = AcadApp.ActiveDocument.ModelSpace.AddCircle(CenterOfCircle, RadiusOfCircle);
        }
コード例 #2
0
        private void button_Click(object sender, RoutedEventArgs e)
        {
            AcadApp = (AcadApplication)Marshal.GetActiveObject("AutoCAD.Application");
            string       template = "acad.dwt";
            AcadDocument dwg      = AcadApp.Documents.Add(template);

            //AcadApp = (AcadApplication)Activator.CreateInstance(Type.GetTypeFromProgID("AutoCAD.Application.22"), true);
            //AcadApp.Visible = true;

            if (incomer.Contains("2500 4P ACB"))
            {
                double   RadiusOfCircle = 5;
                double[] CenterOfCircle = new double[3];
                CenterOfCircle[0] = 0;
                CenterOfCircle[1] = 0;
                CenterOfCircle[2] = 0;
                Circle            = AcadApp.ActiveDocument.ModelSpace.AddCircle(CenterOfCircle, RadiusOfCircle);


                double[] CenterOfBlock = new double[3];
                CenterOfBlock[0] = 0;
                CenterOfBlock[1] = 0;
                CenterOfBlock[2] = 0;
                //AcadApp.ActiveDocument.ModelSpace.InsertBlock(CenterOfBlock, "D:\\Block\\250A_MCCB_3P.dwg", 1, 1, 1, 0);
            }
        }
コード例 #3
0
        public static Circle2D Circle2D(this AcadCircle acadCircle)
        {
            double[] center = acadCircle.Center;
            Point2D  cc     = new Point2D(center[0], center[1]);
            double   rr     = acadCircle.Radius;

            return(new Circle2D(cc, rr));
        }
コード例 #4
0
 /// <summary>
 /// Crear una circunferencia
 /// </summary>
 /// <param name="Center">Insertion point del cirvulo. Ejemplo: (x,y,z)</param>
 /// <param name="Layer">Capa del Polígono</param>
 /// <param name="Radio">Radio de la circunferencia</param>
 public static void AddCircle(double [] Center, double Radio, string Layer)
 {
     if (AcadDoc != null)
     {
         AcadCircle acadCircle = AcadDoc.ModelSpace.AddCircle(Center, Radio);
         acadCircle.Layer = Layer;
         acadCircle.Update();
     }
 }
コード例 #5
0
 /// <summary>
 /// Crear una circunferencia
 /// </summary>
 /// <param name="Center">Insertion point del cirvulo. Ejemplo: (x,y,z)</param>
 /// <param name="Layer">Capa del Polígono</param>
 /// <param name="Radio">Radio de la circunferencia</param>
 public static void AddCircle(double[] Center, double Radio, string Layer)
 {
     try
     {
         if (AcadDoc != null)
         {
             AcadCircle acadCircle = AcadDoc.ModelSpace.AddCircle(Center, Radio);
             acadCircle.Layer = Layer;
             acadCircle.Update();
         }
     }
     catch
     {
         NotificadorErrores?.Invoke("Error inesperado.");
     }
 }
コード例 #6
0
        /// <summary>
        /// 高亮显示已标记部分
        /// </summary>
        /// <param name="StartPoint">起始点</param>
        /// <param name="EndPoint">结束点</param>
        /// <param name="Center">中心点</param>
        private void ReShow(double[] StartPoint, double[] EndPoint, double[] Center)
        {
            var caddocument = tAcadApplication.ActiveDocument;

            if (Center == null)
            {
                AcadLine line = caddocument.ModelSpace.AddLine(StartPoint, EndPoint);
                line.color = ACAD_COLOR.acByLayer;
                AcadObj    = line;
            }
            else
            {
                AcadCircle line = caddocument.ModelSpace.AddCircle(Center, 60);
                line.color = ACAD_COLOR.acByLayer;
                AcadObj    = line;
            }
        }
コード例 #7
0
        private void CreateCircle_Click(object sender, RoutedEventArgs e)
        {
            AcadApp = (AcadApplication)Marshal.GetActiveObject("AutoCAD.Application");
            double[] CenterOfCircle = new double[3];
            CenterOfCircle[0] = 0;
            CenterOfCircle[1] = 0;
            CenterOfCircle[2] = 0;

            if (pointX.Text != "" || pointY.Text != "" || pointZ.Text != "")
            {
                CenterOfCircle[0] = double.Parse(pointX.Text);
                CenterOfCircle[1] = double.Parse(pointY.Text);
                CenterOfCircle[2] = double.Parse(pointZ.Text);
            }

            double RadiusOfCircle = Convert.ToDouble(TextBox.Text.Trim());

            Circle = AcadApp.ActiveDocument.ModelSpace.AddCircle(CenterOfCircle, RadiusOfCircle);
        }
コード例 #8
0
ファイル: PublicFunction.cs プロジェクト: 15831944/QuickPlot
        public static void CreateAutoCADObject()
        {
            // Get
            //AcadApplication acadApp = null;
            AcadCircle    circle = null;
            AcadAcCmColor color  = null;

            try
            {
                object obj = Marshal.GetActiveObject("AutoCAD.Application.17");
                if (obj != null)
                {
                    gbl_app = obj as AcadApplication;
                    //double[] cen = new double[] { 0, 0, 0 };
                    //circle = acadApp.ActiveDocument.Database.ModelSpace.AddCircle(cen, 10);
                    //color = acadApp.GetInterfaceObject("Autocad.AcCmColor.17") as AcadAcCmColor;
                    //color.SetRGB(50, 150, 250);
                    //circle.TrueColor = color;
                    //acadApp.ZoomExtents();
                    // Draw
                    try
                    {
                        //CloseAllInstance();
                        //gbl_app = new AcadApplication();
                        gbl_doc = gbl_app.ActiveDocument;
                        gbl_app.Application.Visible = true;
                        gbl_modSpace = (AcadModelSpaceClass)gbl_doc.ModelSpace;
                        gbl_doc.Linetypes.Load("HIDDEN", "acad.lin");
                        gbl_doc.Linetypes.Load("CENTER", "acad.lin");



                        //Other Objects Layer
                        SwitchLayer = PF.gbl_doc.Layers.Add("Switch110Layer");
                        //SwitchLayer.color = Autodesk.AutoCAD.AcColor.acGreen;
                        PF.gbl_doc.ActiveLayer = SwitchLayer;

                        //Layer For Donuts
                        TerminalsLayer = PF.gbl_doc.Layers.Add("TerminalsLayer");
                        // TerminalsLayer.color = AutoCAD.AcColor.acRed;

                        //Layer Termination Points
                        TerminationPoints = PF.gbl_doc.Layers.Add("TerminationPoints");
                        //TerminationPoints.color = AutoCAD.AcColor.acWhite;
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }
                else
                {
                    MessageBox.Show("AutoCAD chưa khởi động hoặc không đúng phiên bản!");
                }
            }
            catch
            {
                MessageBox.Show("AutoCAD chưa khởi động hoặc không đúng phiên bản!");
            }
            //finally
            //{
            //    if (color != null) Marshal.FinalReleaseComObject(color);
            //    if (circle != null) Marshal.FinalReleaseComObject(circle);
            //    if (gbl_app != null) Marshal.FinalReleaseComObject(gbl_app);
            //}
        }
コード例 #9
0
        static void Main(string[] args)
        {
            String curfile      = System.Reflection.Assembly.GetExecutingAssembly().Location;
            String curDirectory = Path.GetDirectoryName(curfile);

            string text  = "一二三四五六七八九二二三四五六七八九三二三四五六七八九四二三四五六七八九五二三四五六七八九六二三四五六七八九七二三四五六七八九八二三四五六七八九九二三四五六七八九十二三四五六七八九";
            int    len   = text.Length;
            int    start = 0;
            int    cur   = start;

            while (true)
            {
                cur = Global.AdvanceUtf8(text, start, 250);
                if (cur == len || cur == -1)
                {
                    Console.WriteLine(text.Substring(start, cur - start));
                    break;
                }
                Console.WriteLine(text.Substring(start, cur - start));
                start = cur;
            }

            // Test DXF read/write
            Global.EnableDebugInfo(true);
            DxfData dxf  = new DxfData();
            var     pDim = new AcadDimAln();

            pDim.m_DefPoint.SetPoint(80, 120);
            pDim.m_TextPosition = new CDblPoint(30, 70);
            pDim.m_ExtLine1Point.SetPoint(0, 0);
            pDim.m_ExtLine2Point.SetPoint(100, 100);
            pDim.m_DimStyleName = "ISO-25";
            dxf.m_Objects.Add(pDim);
            //auto pTable = std::make_shared<AcadTable>();
            //pTable->m_InsertionPoint.SetPoint(0, 0);
            //pTable->InitializeCells(2, 2, DXF::CellType::TEXT_CELL);
            //pTable->SetColWidth(600);
            //pTable->SetRowHeight(330);
            //for (int i = 0; i < pTable->m_RowCount; ++i)
            //    for (int j = 0; j < pTable->m_ColCount; ++j)
            //    {
            //        Cell & c = pTable->GetCell(i, j);
            //        c.m_TextHeight = 250;
            //        std::shared_ptr<CellText> & ct = dynamic_pointer_cast<CellText>(c.m_Content);
            //        ct->m_Text = "0*0";
            //    }
            //dxf.m_Objects.push_back(pTable);

            //====================== 文字样式 ======================
            TextStyleData txtStyle = new TextStyleData();

            //
            txtStyle.m_TrueType = "宋体";  //SimSun
            //
            txtStyle.m_PrimaryFontFile = "fsdb_e.shx";
            txtStyle.m_BigFontFile     = "hztxt.shx";
            //
            txtStyle.m_ObliqueAngle = 20;
            txtStyle.m_WidthFactor  = 0.7;
            txtStyle.m_Height       = 2.5;
            //
            dxf.m_TextStyles.Add("字体1", txtStyle);


            //====================== 标注样式 ======================
            DimStyleData dimStyle = new DimStyleData();

            dimStyle.TextStyle            = "字体1";
            dimStyle.VerticalTextPosition = AcDimVerticalJustification.acAbove;
            //
            dxf.m_DimStyles.Add("标注1", dimStyle);

            AcadDimRot dim = new AcadDimRot();

            dim.m_DefPoint.SetPoint(80, 120);
            dim.m_TextPosition = new CDblPoint(30, 70);
            dim.m_ExtLine1Point.SetPoint(0, 0);
            dim.m_ExtLine2Point.SetPoint(100, 100);
            dim.m_DimStyleName = "标注1";
            dxf.m_Objects.Add(dim);


            //====================== 填充 ======================
            var pH = new AcadHatch();
            var pC = new AcadCircle();

            pC.m_Center.SetPoint(10, 10);
            pC.m_Radius = 50;
            pH.AddEntity(pC, -1);
            pH.AddAssociatedEntity(pC, -1);
            pH.m_PatternName = "SOLID";
            pC.m_Reactors.Add(new WeakReference(pH));
            dxf.m_Objects.Add(pC);
            dxf.m_Objects.Add(pH);

            //====================== 线宽 ======================
            var pP2a = new AcadLWPLine();

            pP2a.m_Vertices.Add(new CDblPoint(20, 0));
            pP2a.m_Vertices.Add(new CDblPoint(30, 0));
            //pP2a.SetStartWidth(0, 0);
            //pP2a.SetEndWidth(0, 10);
            pP2a.SetWidth(0, 0, 10);
            // pP2a.SetWidth(1, 10, 10);
            dxf.m_Objects.Add(pP2a);

            var pP2b = new AcadLWPLine();

            pP2b.m_Vertices.Add(new CDblPoint(20, 20));
            pP2b.m_Vertices.Add(new CDblPoint(30, 20));
            pP2b.SetConstWidth(10);
            dxf.m_Objects.Add(pP2b);

            //====================== 填充 ======================
            var pP3 = new AcadLWPLine();

            pP3.m_Vertices.Add(new CDblPoint(30, 30));
            pP3.m_Vertices.Add(new CDblPoint(40, 40));
            pP3.m_Vertices.Add(new CDblPoint(40, 20));
            pP3.m_Closed = true;

            var pH3 = new AcadHatch();

            pH3.AddEntity(pP3, -1);
            pH3.AddAssociatedEntity(pP3, -1);
            pH3.m_PatternName = "SOLID";
            pP3.m_Reactors.Add(new WeakReference(pH3));
            dxf.m_Objects.Add(pP3);
            dxf.m_Objects.Add(pH3);


            DxfWriter dxfWriter = new DxfWriter(dxf);

            //dxfWriter.WriteDxf(@"G:\SharedWithVM\test2.dxf",  @"..\DxfCs\acadiso.lin", @"..\DxfCs\acadiso.pat", new CDblPoint(0, 0), 100);
            dxfWriter.WriteDxf(curDirectory + @"\test2.dxf", curDirectory + @"\acadiso.lin", curDirectory + @"\acadiso.pat", new CDblPoint(0, 0), 100);
            if (args.Length == 1)
            {
                DxfReader dxfReader = new DxfReader(dxf);
                if (dxfReader.ReadDxf(args[0], false))
                {
                    dxfWriter.WriteDxf(@"G:\SharedWithVM\test3.dxf", @"..\DXF\acadiso.lin", @"..\DXF\acadiso.pat", new CDblPoint(2000, 1400), 3300);
                }
            }
        }