ObjectArx学习笔记-画线并修改颜色
2014-05-21 16:41
134 查看
实现画线和修改颜色全部代码:
// (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)
// (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)
相关文章推荐
- ObjectArx学习笔记-画线并修改颜色改进写法
- BZOJ 2120 数颜色&2453 维护队列 [带修改的莫队算法]【学习笔记】
- WPF学习笔记--使用配置文件修改控件、面板颜色
- ObjectArx学习笔记-画线
- OpenLDAP学习笔记8——LDAP常用操作:添加、删除、修改、搜索
- VC++ 深入详解 学习笔记(5) -- 修改窗口样式续
- ASP.NET MVC学习笔记 -- NerdDinner实战1 -- 中文Visual Studio 2008的设置修改以实现复数表单数类名
- FreeBSD学习笔记09-修改主机名
- IIS图片上传大小限制的修改(学习笔记)
- 孙鑫VC++视频学习笔记之9: 应用程序外观修改
- 孙鑫VC学习笔记:第十讲画图 改变对话框及控件的文字/背景颜色
- ASP.NET学习笔记一:在上传图片的同时修改图片大小
- 【T-MAC学习笔记10之--数据修改之插入数据,更新数据,删除数据】
- php学习笔记(7):PHP数组的创建修改使用
- C#学习笔记1-类型之间的转换 分享修改删除
- ObjectARX-学习笔记
- 【转】修改默认样式 Flex学习笔记
- 孙鑫VC学习笔记:第十讲画图 创建颜色/字体对话框
- Sandy引擎学习笔记:颜色材质
- 【转】C++/GDI+ 学习笔记(四)——实用技巧——颜色矩阵(ColorMatrix)