实现画线和修改颜色全部代码:
// (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)