Пример #1
0
        public void Create()
        {
            AcadApplication acadApp = null;
            AcadDocument    doc     = null;
            AcadTable       myTable = null;

            acadApp = (AcadApplication)Marshal.GetActiveObject("AutoCAD.Application");
            doc     = acadApp.ActiveDocument;

            PromptPointOptions ppOps = new PromptPointOptions("请选择表格插入位置\n");

            PromptPointResult ppRes = AcadEd.GetPoint(ppOps);

            double[] vertices = new double[3];
            vertices[0] = 0;
            vertices[1] = 0;
            vertices[2] = 0;

            if (ppRes.Status == PromptStatus.OK)
            {
                vertices[0] = ppRes.Value[0];
                vertices[1] = ppRes.Value[1];
                vertices[2] = ppRes.Value[2];
            }
            AcRowType acRowType = new AcRowType();

            /*acUnknownRow = 0,
             * acDataRow = 1,
             * acTitleRow = 2,
             * acHeaderRow = 4*/

            myTable = doc.ActiveLayout.Block.AddTable(vertices, 4, 2, 3, 10);
            //设置文字高度
            myTable.SetTextHeight(1, 0.5);
            myTable.SetTextHeight(2, 1.5);
            myTable.SetTextHeight(4, 1);
            //合并单元格
            myTable.MergeCells(1, 2, 0, 0);
            //设置列宽
            myTable.SetColumnWidth(0, 5);
            myTable.SetColumnWidth(1, 25);
            //插入数据
            myTable.SetText(0, 0, "我的表格测试");
            myTable.SetText(1, 0, "Data1");
            myTable.SetText(1, 1, "这是一条数据");
            myTable.SetText(2, 1, "这是一条测试数据");
            myTable.SetText(3, 1, "左边是个块定义");

            //设置文字颜色
            AcadAcCmColor color = new AcadAcCmColor();

            color.ColorIndex = AcColor.acYellow;

            myTable.SetContentColor(2, color);

            //设置单元格中文字颜色
            AcadAcCmColor color2 = new AcadAcCmColor();

            color2.ColorIndex = AcColor.acGreen;

            myTable.SetContentColor2(3, 1, 0, color2);

            //设置单元格对其方式
            myTable.SetAlignment(1, AcCellAlignment.acMiddleCenter);

            PromptEntityOptions propEnt = new PromptEntityOptions("请选择实体\n");

            PromptEntityResult propRes = AcadEd.GetEntity(propEnt);

            if (propRes.Status == PromptStatus.OK)
            {
                try
                {
                    //错误
                    // myTable.SetBlockTableRecordId(3, 0, propRes.ObjectId.OldIdPtr.ToInt64(), true);

                    ObjectId oId = propRes.ObjectId;
                    AcadEd.WriteMessage(oId.IsValid.ToString());

                    BlockReference br;
                    using (var trans = AcadDb.TransactionManager.StartTransaction())
                    {
                        br = trans.GetObject(oId, OpenMode.ForRead) as BlockReference;

                        if (br == null)
                        {
                            Application.ShowAlertDialog("请选择块定义");

                            trans.Commit();

                            return;
                        }


                        trans.Commit();
                    }

                    //错误
                    //br = (BlockReference)oId.GetObject(OpenMode.ForRead);

                    //设置单元格块引用
                    myTable.SetBlockTableRecordId(3, 0, br.BlockTableRecord.OldIdPtr.ToInt64(), true);
                }
                catch (System.Exception e)
                {
                    AcadEd.WriteMessage(e.ToString());
                }
            }
        }
Пример #2
0
        private bool InternCheckValue(object vvarValue, AcadTable vobjAcadTable, ref double rdblObjectID, ref string nrstrErrMsg)
        {
            nrstrErrMsg  = null;
            rdblObjectID = -1.0;
            bool dblnErr = default(bool);

            if (!InternCheckMin(RuntimeHelpers.GetObjectValue(vvarValue)))
            {
                if (Operators.CompareString(nrstrErrMsg, null, TextCompare: false) != 0)
                {
                    nrstrErrMsg += "\n";
                }
                nrstrErrMsg += "Variablenwert unterschreitet Minimalwert.";
                dblnErr      = true;
            }
            if (!InternCheckMax(RuntimeHelpers.GetObjectValue(vvarValue)))
            {
                if (Operators.CompareString(nrstrErrMsg, null, TextCompare: false) != 0)
                {
                    nrstrErrMsg += "\n";
                }
                nrstrErrMsg += "Variablenwert übertschreitet Maximalwert.";
                dblnErr      = true;
            }
            if (!InternCheckBit(RuntimeHelpers.GetObjectValue(vvarValue)))
            {
                if (Operators.CompareString(nrstrErrMsg, null, TextCompare: false) != 0)
                {
                    nrstrErrMsg += "\n";
                }
                nrstrErrMsg += "Variablenwert ist keine zulässiger Bitsumme.";
                dblnErr      = true;
            }
            if (!InternCheckColor(RuntimeHelpers.GetObjectValue(vvarValue)))
            {
                if (Operators.CompareString(nrstrErrMsg, null, TextCompare: false) != 0)
                {
                    nrstrErrMsg += "\n";
                }
                nrstrErrMsg += "Variablenwert ist kein gültiger Farbwert.";
                dblnErr      = true;
            }
            if ((mnumSymTable != hwpDxf_Enums.SYMBOL_TABLE.symNone) & (mvarLstValues != null))
            {
                if (!InternCheckLst(RuntimeHelpers.GetObjectValue(vvarValue)) & !InternCheckSymTable(RuntimeHelpers.GetObjectValue(vvarValue), vobjAcadTable, ref rdblObjectID))
                {
                    if (Operators.CompareString(nrstrErrMsg, null, TextCompare: false) != 0)
                    {
                        nrstrErrMsg += "\n";
                    }
                    nrstrErrMsg += "Variablenwert ist nicht Bestandteil der Werteliste oder Symboltabelle.";
                    dblnErr      = true;
                }
            }
            else
            {
                if (!InternCheckLst(RuntimeHelpers.GetObjectValue(vvarValue)))
                {
                    if (Operators.CompareString(nrstrErrMsg, null, TextCompare: false) != 0)
                    {
                        nrstrErrMsg += "\n";
                    }
                    nrstrErrMsg += "Variablenwert ist nicht Bestandteil der Werteliste.";
                    dblnErr      = true;
                }
                if (!InternCheckSymTable(RuntimeHelpers.GetObjectValue(vvarValue), vobjAcadTable, ref rdblObjectID))
                {
                    if (Operators.CompareString(nrstrErrMsg, null, TextCompare: false) != 0)
                    {
                        nrstrErrMsg += "\n";
                    }
                    nrstrErrMsg += "Variablenwert ist nicht Bestandteil der Symboltabelle.";
                    dblnErr      = true;
                }
            }
            if (Operators.CompareString(nrstrErrMsg, null, TextCompare: false) != 0)
            {
                nrstrErrMsg = mstrName + "\n" + nrstrErrMsg;
            }
            return(!dblnErr);
        }
Пример #3
0
        private bool InternCheckSymTable(object vvarValue, AcadTable vobjAcadTable, ref double rdblObjectID)
        {
            rdblObjectID = -1.0;
            bool                       dblnValid = default(bool);
            AcadBlocks                 dobjAcadBlocks2;
            AcadBlock                  dobjAcadBlock2;
            AcadUCSs                   dobjAcadUCSs2;
            AcadUCS                    dobjAcadUCS2;
            AcadTextStyles             dobjAcadTextStyles2;
            AcadTextStyle              dobjAcadTextStyle2;
            AcadLineTypes              dobjAcadLineTypes2;
            AcadLineType               dobjAcadLinetype2;
            AcadLayers                 dobjAcadLayers2;
            AcadLayer                  dobjAcadLayer2;
            AcadDimStyles              dobjAcadDimStyles2;
            AcadDimStyle               dobjAcadDimStyle2;
            AcadViewports              dobjAcadViewports2;
            AcadViewport               dobjAcadViewport2;
            AcadRegisteredApplications dobjAcadRegisteredApplications2;
            AcadRegisteredApplication  dobjAcadRegisteredApplication2;
            AcadViews                  dobjAcadViews2;
            AcadView                   dobjAcadView2;

            if (vobjAcadTable == null)
            {
                dblnValid = true;
            }
            else
            {
                switch (SymTable)
                {
                case 0:
                    dblnValid = true;
                    break;

                case 2:
                    dobjAcadBlocks2 = (AcadBlocks)vobjAcadTable;
                    dobjAcadBlock2  = (AcadBlock)dobjAcadBlocks2.FriendGetItem(RuntimeHelpers.GetObjectValue(vvarValue));
                    if (dobjAcadBlock2 != null)
                    {
                        rdblObjectID = dobjAcadBlock2.ObjectID;
                        dblnValid    = true;
                    }
                    break;

                case 7:
                    dobjAcadUCSs2 = (AcadUCSs)vobjAcadTable;
                    dobjAcadUCS2  = (AcadUCS)dobjAcadUCSs2.FriendGetItem(RuntimeHelpers.GetObjectValue(vvarValue));
                    if (dobjAcadUCS2 != null)
                    {
                        rdblObjectID = dobjAcadUCS2.ObjectID;
                        dblnValid    = true;
                    }
                    break;

                case 6:
                    dobjAcadTextStyles2 = (AcadTextStyles)vobjAcadTable;
                    dobjAcadTextStyle2  = (AcadTextStyle)dobjAcadTextStyles2.FriendGetItem(RuntimeHelpers.GetObjectValue(vvarValue));
                    if (dobjAcadTextStyle2 != null)
                    {
                        rdblObjectID = dobjAcadTextStyle2.ObjectID;
                        dblnValid    = true;
                    }
                    break;

                case 5:
                    dobjAcadLineTypes2 = (AcadLineTypes)vobjAcadTable;
                    dobjAcadLinetype2  = (AcadLineType)dobjAcadLineTypes2.FriendGetItem(RuntimeHelpers.GetObjectValue(vvarValue));
                    if (dobjAcadLinetype2 != null)
                    {
                        rdblObjectID = dobjAcadLinetype2.ObjectID;
                        dblnValid    = true;
                    }
                    break;

                case 4:
                    dobjAcadLayers2 = (AcadLayers)vobjAcadTable;
                    dobjAcadLayer2  = (AcadLayer)dobjAcadLayers2.FriendGetItem(RuntimeHelpers.GetObjectValue(vvarValue));
                    if (dobjAcadLayer2 != null)
                    {
                        rdblObjectID = dobjAcadLayer2.ObjectID;
                        dblnValid    = true;
                    }
                    break;

                case 3:
                    dobjAcadDimStyles2 = (AcadDimStyles)vobjAcadTable;
                    dobjAcadDimStyle2  = (AcadDimStyle)dobjAcadDimStyles2.FriendGetItem(RuntimeHelpers.GetObjectValue(vvarValue));
                    if (dobjAcadDimStyle2 != null)
                    {
                        rdblObjectID = dobjAcadDimStyle2.ObjectID;
                        dblnValid    = true;
                    }
                    break;

                case 9:
                    dobjAcadViewports2 = (AcadViewports)vobjAcadTable;
                    dobjAcadViewport2  = (AcadViewport)dobjAcadViewports2.FriendGetItem(RuntimeHelpers.GetObjectValue(vvarValue));
                    if (dobjAcadViewport2 != null)
                    {
                        rdblObjectID = dobjAcadViewport2.ObjectID;
                        dblnValid    = true;
                    }
                    break;

                case 1:
                    dobjAcadRegisteredApplications2 = (AcadRegisteredApplications)vobjAcadTable;
                    dobjAcadRegisteredApplication2  = (AcadRegisteredApplication)dobjAcadRegisteredApplications2.FriendGetItem(RuntimeHelpers.GetObjectValue(vvarValue));
                    if (dobjAcadRegisteredApplication2 != null)
                    {
                        rdblObjectID = dobjAcadRegisteredApplication2.ObjectID;
                        dblnValid    = true;
                    }
                    break;

                case 8:
                    dobjAcadViews2 = (AcadViews)vobjAcadTable;
                    dobjAcadView2  = (AcadView)dobjAcadViews2.FriendGetItem(RuntimeHelpers.GetObjectValue(vvarValue));
                    if (dobjAcadView2 != null)
                    {
                        rdblObjectID = dobjAcadView2.ObjectID;
                        dblnValid    = true;
                    }
                    break;
                }
            }
            bool InternCheckSymTable = dblnValid;

            dobjAcadBlocks2                 = null;
            dobjAcadBlock2                  = null;
            dobjAcadUCSs2                   = null;
            dobjAcadUCS2                    = null;
            dobjAcadTextStyles2             = null;
            dobjAcadTextStyle2              = null;
            dobjAcadLineTypes2              = null;
            dobjAcadLinetype2               = null;
            dobjAcadLayers2                 = null;
            dobjAcadLayer2                  = null;
            dobjAcadDimStyles2              = null;
            dobjAcadDimStyle2               = null;
            dobjAcadViewports2              = null;
            dobjAcadViewport2               = null;
            dobjAcadRegisteredApplications2 = null;
            dobjAcadRegisteredApplication2  = null;
            dobjAcadViews2                  = null;
            dobjAcadView2                   = null;
            return(InternCheckSymTable);
        }
Пример #4
0
 internal bool FriendCheckValue(object vvarValue, AcadTable vobjAcadTable, ref string nrstrErrMsg)
 {
     nrstrErrMsg = null;
     return(InternCheckValue(RuntimeHelpers.GetObjectValue(vvarValue), vobjAcadTable, ref mdblObjectID, ref nrstrErrMsg));
 }