www.mxdraw.com
内容索引主面
前一个向上下一个
MxDrawXCustomFunction::Mx_Wblock 方法

把一堆对象,输出到一个新的Database中。 Js调用.

IDL
MxDrawDatabase Mx_Wblock(McDbObjectIdArray aryId, McGePoint3d bastPt);

例如: js

        function ToDwg()
        {
          //实例化一个构造选择集进行过滤,该类封装了选择集及其处理函数。
            var  ss = mxOcx.NewSelectionSet();

            ss.Select2(8, null, null, null, null);

            var param =mxOcx.NewResbuf();

           var aryId = new Array();
            for (var i = 0; i < ss.Count; i++)
            {
                var ent = ss.Item(i);
                if (ent != null)
                {
                    param.AddObjectId(ent.ObjectID);
                    //aryId.Add(ent.ObjectID);

                    aryId[i]=ent.ObjectID;

                    ent.Close();
                }
            }
            //  计算新的图块的插入基点,把所实体外包的中点做为插入基点。

            //返回控件的数据库对象
            var curDatabase =mxOcx.GetDatabase();
            var dMinX = 0, dMinY = 0, dMaxX = 0, dMaxY = 0;
            var isFirstEnt = true;
            for (var l = 0; l < aryId.length; l++)
            {
                var pObj = curDatabase.ObjectIdToObject(aryId[l]);
                if (pObj == null)
                    continue;
                var pEnt = pObj;
                if (pEnt == null)
                    continue;
                var pt1Ob=mxOcx.NewPoint();
                    var pt2Ob=mxOcx.NewPoint();
                pEnt.GetBoundingBox(pt1Ob,pt2Ob);
                var minPt = pt1Ob;
                var maxPt = pt2Ob;

                if (minPt != null && maxPt != null)
                {
                    if(isFirstEnt)
                    {
                        dMinX = minPt.x;
                        dMinY = minPt.y;
                        dMaxX = maxPt.x;
                        dMaxY = maxPt.y;
                        isFirstEnt = false;
                    }
                    else
                    {
                        if (dMinX > minPt.x)
                            dMinX = minPt.x;

                        if (dMinY > minPt.y)
                            dMinY = minPt.y;

                        if (dMaxX < maxPt.x)
                            dMaxX = maxPt.x;

                        if (dMaxY < maxPt.y)
                            dMaxY = maxPt.y;
                    }
                }
            }
            if(isFirstEnt)
            {
                // 没有实体
                return;
            }
            var pos =  mxOcx.NewPoint();
            pos.x = dMinX + (dMaxX - dMinX) / 2.0;
            pos.y = dMinY + (dMaxY - dMinY) / 2.0;

            param.AddPoint(pos);



            var newDatabase = mxOcx.CallEx("Mx_Wblock", param);


            // 保存为dwg文件。

            if (newDatabase.SaveAs("D:\wblock.dwg", 1, null))
            {
                alert("Ok");
            }
            else
            {
                alert("Failed");
            }


        }
Copyright (c) 2010. All rights reserved.
你认为该帮助怎么样? 发送反馈信息!