ブロックテーブル選択エンティティのブロックで作られたCAD(COMインターフェイスウェブ上)

以下のコード、その結果、選択された図形内のエンティティ、次いで図に固体ブロック化し、その後挿入されています。

jsのコードは次のよう:

//は、フィルタ構成の選択されたセットをインスタンス化し、クラスが選択ハンドラーのセットをカプセル化します。
VAR SS = mxOcx.NewSelectionSet();
 // フィルタされたリストの構築
VAR spFilte = mxOcx.NewResbuf();
 // ユーザが選択をユーザGETエンティティによって選択されたオブジェクト 
ss.Select2(8、NULLNULLNULL 、spFilte)。
  
VAR aryId = 新しいアレイ();
以下のためにVAR ; I <ss.Count、私は0を= I ++ 
{
    VAR ENT = ss.Item(I);
    もし(ENT!= nullの
    {
        aryId.push(ent.ObjectID)。
        ent.Close();
    }
}
// コントロール・データベース・オブジェクトを返し
VARを curDatabase = mxOcx.GetDatabase();
 VAR dMinX = 0、0 = dMinY、dMaxX = 0、dMaxY = 0 ;
 VAR isFirstEnt = trueにためVARの L = 0; L <aryId.length ; L ++ 
{
    VAR POBJ = curDatabase.ObjectIdToObject(aryId [L])。
    もし(POBJ == nullの継続VARペント= POBJ。
    もし(ペンタ== nullの継続VaRの   点= pEnt.GetBoundingBox2()。
  
    VAR minPt = points.Item(0 )。
    VAR MAXPT = points.Item(1 )。
  
    もし(minPt!= nullの && MAXPT!= nullの
    {
        もし(isFirstEnt)
        {
            dMinX = minPt.x。
            dMinY = minPt.y。
            dMaxX = maxPt.x。
            dMaxY = maxPt.y。
            isFirstEnt = ;
        }
        
        {
            もし(dMinX> minPt.x)
                dMinX = minPt.x。
  
            もし(dMinY> minPt.y)
                dMinY = minPt.y。
  
            もし(dMaxX < maxPt.x)
                dMaxX = maxPt.x。
  
            もし(dMaxY < maxPt.y)
                dMaxY = maxPt.y。
        }
    }
}
  
もし(isFirstEnt)
{
    // 物理的な
    リターンません
}
VAR POS = mxOcx.NewPoint()。
pos.x = dMinX +(dMaxX - dMinX)/ 2.0 
pos.y = dMinY +(dMaxY - dMinY)/ 2.0 
  
// 現在のデータベースに既に存在するかどうか、新しく作成されたブロック名を確認してください。
  
VAR blkTable = curDatabase.GetBlockTable()。
VAR curSpace = curDatabase.CurrentSpace()。
  
だっsNewBlakNameは、
  
VAR blkNewRec = blkTable.Add( "" );
sNewBlakName = blkNewRec.Name。
  
blkNewRec.Origin = POS;
  
VARは L = 0、L <aryId.length; L ++ 
{
  
    blkNewRec.AddCloneEntity(aryId [L])。
    // 前のエンティティを削除します。
    VAR POBJ = curDatabase.ObjectIdToObject(aryId [L]);
     IF(POBJ == NULL 続けます
    pObj.Erase();
}
もし(blkNewRec!= nullの
{
    VAR blkRef = curSpace.InsertBlock(pos.x、pos.y、sNewBlakName、1.0、0.0 )。
    VAR ATTRIB = blkRef.AppendAttribute()。
    attrib.Position = POS;
    attrib.AlignmentPoint = POS;
    attrib.Oblique = 0.0 
    attrib.Rotation = 0.0 
    attrib.Height = 2.0 
    attrib.TextString =「これはテスト用テキスト属性です」
    attrib.Tag = "TestTag" 
    attrib.IsInvisible = ;
  
    blkRef.Position = blkRef.Position。
  
}
  
リターン ;

 

おすすめ

転載: www.cnblogs.com/yzy0224/p/12012104.html