ObjectArx学习笔记-画线并修改颜色

论坛 期权论坛 脚本     
匿名技术用户   2021-1-2 03:21   44   0

实现画线和修改颜色全部代码:

// (C) Copyright 2002-2005 by Autodesk, Inc. 
//
// Permission to use, copy, modify, and distribute this software in
// object code form for any purpose and without fee is hereby granted, 
// provided that the above copyright notice appears in all copies and 
// that both that copyright notice and the limited warranty and
// restricted rights notice below appear in all supporting 
// documentation.
//
// AUTODESK PROVIDES THIS PROGRAM "AS IS" AND WITH ALL FAULTS. 
// AUTODESK SPECIFICALLY DISCLAIMS ANY IMPLIED WARRANTY OF
// MERCHANTABILITY OR FITNESS FOR A PARTICULAR USE.  AUTODESK, INC. 
// DOES NOT WARRANT THAT THE OPERATION OF THE PROGRAM WILL BE
// UNINTERRUPTED OR ERROR FREE.
//
// Use, duplication, or disclosure by the U.S. Government is subject to 
// restrictions set forth in FAR 52.227-19 (Commercial Computer
// Software - Restricted Rights) and DFAR 252.227-7013(c)(1)(ii)
// (Rights in Technical Data and Computer Software), as applicable.
//

//-----------------------------------------------------------------------------
//----- acrxEntryPoint.h
//-----------------------------------------------------------------------------
#include "StdAfx.h"
#include "resource.h"

//-----------------------------------------------------------------------------
#define szRDS _RXST("qxzy")

//-----------------------------------------------------------------------------
//----- ObjectARX EntryPoint
class CModifyEntApp : public AcRxArxApp {

public:
 CModifyEntApp () : AcRxArxApp () {}

 virtual AcRx::AppRetCode On_kInitAppMsg (void *pkt) {
  // TODO: Load dependencies here

  // You *must* call On_kInitAppMsg here
  AcRx::AppRetCode retCode =AcRxArxApp::On_kInitAppMsg (pkt) ;
  
  // TODO: Add your initialization code here

  return (retCode) ;
 }

 virtual AcRx::AppRetCode On_kUnloadAppMsg (void *pkt) {
  // TODO: Add your code here

  // You *must* call On_kUnloadAppMsg here
  AcRx::AppRetCode retCode =AcRxArxApp::On_kUnloadAppMsg (pkt) ;

  // TODO: Unload dependencies here

  return (retCode) ;
 }

 virtual void RegisterServerComponents () {
 }

public:

 // - qxzyModifyEnt._ChangeColor command (do not rename)
 static void qxzyModifyEnt_ChangeColor(void)
 {
  // 首先创建一条直线,然后修改直线的颜色为红色
  AcDbObjectId lineId;
  lineId = CreateLine();
  ChangeColor(lineId, 1);
 }

 static AcDbObjectId CreateLine()
 {
  AcGePoint3d ptStart(0,0,0);
  AcGePoint3d ptEnd(100,100,0);
  AcDbLine *pLine = new AcDbLine(ptStart, ptEnd);

  AcDbBlockTable *pBlockTable;
  acdbHostApplicationServices()->workingDatabase()
   ->getBlockTable(pBlockTable,AcDb::kForRead);

  AcDbBlockTableRecord *pBlockTableRocord;
  pBlockTable->getAt(ACDB_MODEL_SPACE,pBlockTableRocord,
   AcDb::kForWrite);

  AcDbObjectId lineId;
  pBlockTableRocord -> appendAcDbEntity(lineId, pLine);

  pBlockTable -> close();
  pBlockTableRocord -> close();
  pLine -> close();

  return lineId;
 }

 static Acad::ErrorStatus ChangeColor(AcDbObjectId entId, Adesk::UInt16 colorIndex)
 {
  AcDbEntity *pEntity;
  //打开图像数据库中的对象
  acdbOpenObject(pEntity, entId,AcDb::kForWrite);

  //修改实体颜色
  pEntity->setColorIndex(colorIndex);

  pEntity->close();

  return Acad::eOk;
 }

} ;

//-----------------------------------------------------------------------------
IMPLEMENT_ARX_ENTRYPOINT(CModifyEntApp)

ACED_ARXCOMMAND_ENTRY_AUTO(CModifyEntApp, qxzyModifyEnt, _ChangeColor, ChangeColor, ACRX_CMD_TRANSPARENT, NULL)


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP