1.
      
      
       acutPrintf
      
     
    
    
     
      (
     
     
      _T
     
     
      (
     
     
      “\nHello World!”
     
     
      ));
     
     在命令行中输出Hello World!
    
   
    
     一般使用acedGetXXX();来获得一个用户输入的值。
    
   
int nCountNode = 3;
int nReturn;
nReturn = acedGetInt(_T(“请输入一个整数然后回车:”),&nCountNode);
if(nReturn == RTNORM)
{
CString str;
str.Format(_T(“%d”),nCountNode);
AfxMessageBox(_T(“你输入了:”) + str);
}
class CCreateEnt:public AcDb
{
public:
CCreateEnt();
//单行文字
static AcDbObjectId CreateText(const AcGePoint3d& ptInsert, const ACHAR* text //ptInsert为文字的3维空间坐标点 text为显示的文本内容
, AcDbObjectId style = AcDbObjectId::kNull, double height = 2.5, double rotation = 0);
//多行文字
static AcDbObjectId CreateMText(const AcGePoint3d& ptInsert, const ACHAR* text
, AcDbObjectId style = AcDbObjectId::kNull, double height = 2.5, double width = 10);
~CCreateEnt();
static AcDbObjectId PostToModelSpace(AcDbEntity *pEnt); //投影至模型空间
};
          AcDbObjectId CCreateEnt::PostToModelSpace(AcDbEntity *pEnt)
          
          {
          
          
          AcDbBlockTable *pBlockTable;
          
          acdbHostApplicationServices()->workingDatabase()->getBlockTable(pBlockTable, AcDb::kForRead); //获取可读的块表对象
         
          AcDbBlockTableRecord *pBlockTableRecord;
          
          pBlockTable->getAt(ACDB_MODEL_SPACE, pBlockTableRecord, AcDb::kForWrite);  //获取模型空间中可写的块表记录
         
          AcDbObjectId entId;
          
          Acad::ErrorStatus es = pBlockTableRecord->appendAcDbEntity(entId, pEnt);  //将AcDb对象加入该块表记录中。并可显示出来
         
          pBlockTable->close();
          
          pBlockTableRecord->close();
          
          pEnt->close();
         
          return entId;
          
          }
         
          AcDbObjectId CCreateEnt::CreateText(const AcGePoint3d& ptInsert, const ACHAR* text
          
          , AcDbObjectId style, double height, double rotation)
          
          {
          
          
          AcDbText *pText = new AcDbText(ptInsert, text, style, height, rotation);
          
          return PostToModelSpace(pText);
          
          }
          
          //多行文字
          
          AcDbObjectId CCreateEnt::CreateMText(const AcGePoint3d& ptInsert, const ACHAR* text
          
          , AcDbObjectId style, double height, double width)
          
          {
          
          
          AcDbMText *pMText = new AcDbMText();
          
          //设置多行文字的特性
          
          pMText->setTextStyle(style);
          
          pMText->setContents(text);
          
          pMText->setLocation(ptInsert);
          
          pMText->setTextHeight(height);
          
          pMText->setWidth(width);
          
          pMText->setAttachment(AcDbMText::kBottomLeft);
          
          return PostToModelSpace(pMText);
          
          }
          
         
          static void Demo_Test3(); //具体命令行函数,此处声明
          
          private:
          
          };
          
          void CZrxTemplate1App::Demo_Test3() //具体命令行函数
          
          {
          
          
          //创建单行文字
          
          AcGePoint3d ptInsert(0, 4, 0);
          
          CCreateEnt::CreateText(ptInsert, _T(“abck中文”));
          
          //创建多行文字
          
          ptInsert.set(0, 0, 0);
          
          CCreateEnt::CreateMText(ptInsert, _T(”
          
           http://www.weiqi9d.com
          
          “));
          
          }
         
          //—————————————————————————–
          
          IMPLEMENT_ARX_ENTRYPOINT(CZrxTemplate1App)
          
          ACED_ARXCOMMAND_ENTRY_AUTO(CZrxTemplate1App, Demo, _Test3, Test3, ACRX_CMD_MODAL, NULL)  //在此处注册命令
         
//
创建直线
AcDbObjectId CCreateEnt::CreateLine(AcGePoint3d ptStart,AcGePoint3d ptEnd)
{
AcDbLine
*
pLine
=
new
AcDbLine(ptStart,ptEnd);
//
将实体添加到图形数据库
AcDbObjectId lineId;
lineId
=
PostToModelSpace(pLine);
return
lineId;
}
//
创建圆
AcDbObjectId CCreateEnt::CreateCircle(AcGePoint3d ptCenter,AcGeVector3d vec,
double
radius)
{
AcDbCircle
*
pCircle
=
new
AcDbCircle(ptCenter,vec,radius);
//
将实体添加到图形数据库
AcDbObjectId circleId;
circleId
=
PostToModelSpace(pCircle);
return
circleId;
}
#pragma
once
#include
”
StdAfx.h
”
class
CModifyEnt
{
public
:
CModifyEnt(
void
);
~
CModifyEnt(
void
);
static
Acad::ErrorStatus ChangeColor(AcDbObjectId entId,Adesk::UInt16 colorIndex);
static
Acad::ErrorStatus ChangeLayer(AcDbObjectId entId,CString strLayerName);
};
.cpp文件:
#include
”
StdAfx.h
”
#include
”
ModifyEnt.h
”
//
修改实体颜色
//在CCreateEnt中定义的图形,在CModifyEnt类中只能通过AcDbObjectId来识别并修改
Acad::ErrorStatus CModifyEnt::ChangeColor(AcDbObjectId entId,Adesk::UInt16 colorIndex)
{
AcDbEntity
*
pEntity;
//
打开图形数据库中的可写对象
acdbOpenObject(pEntity,entId,AcDb::kForWrite);
//
修改实体的颜色
pEntity
->
setColorIndex(colorIndex);
//
用完之后,及时关闭
pEntity
->
close();
return
Acad::eOk;
}
//
改变实体所在层
Acad::ErrorStatus CModifyEnt::ChangeLayer(AcDbObjectId entId,CString strLayerName)
{
AcDbEntity
*
pEntity;
//
打开图形数据库中的对象
acdbOpenObject(pEntity,entId,AcDb::kForWrite);
//
修改实体的图层
pEntity
->
setLayer(strLayerName);
//
用完之后,及时关闭
pEntity
->
close();
return
Acad::eOk;
}