创建一个块定义,并添加实体插入到指定位置

这里实现的是在当前图纸中创建一个新的块定义,并且向该块定义中添加实体,将实体插入到当前图纸中,例子如下:

    CString blockName = _T("adf");//这里为要创建的块定义名称
    AcDbBlockTable *pBlkTab;
    acdbHostApplicationServices()->workingDatabase()
        ->getBlockTable(pBlkTab, ZcDb::kForWrite);
    if (pBlkTab->has(blockName))//判断该块定义是否已经存在
    {
        AfxMessageBox(_T("该块定义已经存在!已创建一个新的块定义,名称为:") + blockName + m_sAntennaSys);
        blockName += m_sAntennaSys;
    }
    AcDbBlockTableRecord *pBlkTabRcd;
    pBlkTabRcd = new AcDbBlockTableRecord();
    pBlkTabRcd->setName(blockName);
    AcDbObjectId blockId;
    pBlkTab->add(blockId, pBlkTabRcd);
    pBlkTab->close();
    //插入点的选取
    AcGePoint3d ptInsert;
    GetPoint(ptInsert, _T("输入adf插入点。"));
       //向该块定义中添加实体
       AcDbBlockReference *pBlkRef = new AcDbBlockReference(pInsert, idJiantou);//前一个参数为插入点,后一个为实体id
    pBlkRef->setRotation(dAngle);//设置偏转角
    CBlockUtil::SetScaleFactor(pBlkRef, dScale);
    pBlkTabRcd->appendZcDbEntity(pBlkRef);
    pBlkRef->close();
    //将该块插入带当前图纸中
    AcDbBlockReference *pBlkTabRef = new AcDbBlockReference(ptInsert, blockId);//blockId为该块定义的id
    CDwgDatabaseUtil::PostToModelSpace(pBlkTabRef);//该函数为插入实体到当前模型空间中的一般函数,这里不给出
    pBlkTabRcd->close();
    pBlkTabRef->close();

上面的列子完成的就是新建块定义,并添加实体,插入块定义的基本操作,具体操作还需要依据具体的需求。

时间: 2024-08-10 00:00:06

创建一个块定义,并添加实体插入到指定位置的相关文章

创建一个单链表,实现头部插入和尾部插入

/*目的:创建一个单链表,实现尾部插入,头部插入,遍历链表*/ #include <stdio.h>#include <string.h>#include <stdlib.h> //定义一个结构体,用来表示一个节点,包含指针域,数据域 struct node{ int data; //数据域 struct node *next; //指针域,指向节点的指针,用来连接两个节点}; //定义一个函数,用来创建节点,为节点分配堆内存,由于堆内存残留有随机值,创建成功后清空内存

42.C#--集合的使用,创建一个集合,里面添加一些数字,求平均值与和,以及最大值,最小值

static void Main(string[] args){//42.集合的使用,创建一个集合,里面添加一些数字,求平均值与和,以及最大值,最小值//创建一个集合ArrayList list = new ArrayList();//向集合添加一些数字list.AddRange(new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 });//新建sum变量来存储和int sum = 0;//新建一个max来存储最大值int max = (int)list[0];//新建一

初识SFDC创建一个google map(添加了marker小图标)

1 <apex:page > 2 <head> 3 <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 4 <script type="text/javascript" src="http://maps.google.cn/maps/api/js?sensor=false"></scr

初识SFDC创建一个google map(添加了marker小图标让他可以去到你输入的经纬度上)

1 <apex:page > 2 <head> 3 <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 4 <script type="text/javascript" src="http://maps.google.cn/maps/api/js?sensor=false"></scr

初识SFDC创建一个google map(添加了marker小图标上的小框框InfoWindow可变更文字)

1 <apex:page > 2 <head> 3 <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> 4 <script type="text/javascript" src="http://maps.google.cn/maps/api/js?sensor=false"></scr

C# 直接创建一个DataTable,并为之添加数据(自定义DataTable) 转

DataTable dt=new DataTable("cart"); DataColumn dc1=new DataColumn("prizename",Type.GetType("System.String")); DataColumn dc2=new DataColumn("point",Type.GetType("System.Int16")); DataColumn dc3=new DataCol

python 创建一个实例:步骤二 添加行为方法,编写方法

添加方法 class Person(): def __init__(self,name,job=None,pay=0): self.name= name self.job = job self.pay = pay##用封装的设计概念,添加方法:方法只是附加给类并在处理那些类的实例的常规函数.实例是方法调用的主体,并且会自动专递给方法的self 参数. def LastName(self): return self.name.split()[-1] def giveRaise(self,perce

C#DataTable添加列、C#指定位置添加列

DataSet ds = SQlHelper.GetDataTable(Con, sb.ToString()); ds.Tables[0].Columns.Add("Check", System.Type.GetType("System.Boolean")); ds.Tables[0].Columns["Check"].SetOrdinal(0);//此列放置的顺序 ds.Tables[0].Columns["Check"].

向当前模型空间中插入带属性的块定义

//其中blockName为插入的块表的名称, ptInsert为块表指定的插入点 void InsertBlkToSpace(CString blockName, AcGePoint3d ptInsert){ //获得当前的数据库的块表 AcDbBlockTable *pBlkTab; acdbHostApplicationServices()->workingDatabase() ->getBlockTable(pBlkTab, ZcDb::kForWrite); //判断插入的块定义是否