ObjectArx學習筆記-畫線並修改顏色
實現畫線和修改顏色全部代碼:
// (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)
最後更新:2017-04-03 08:26:12