在黑暗中举起探索的火炬的网志
在喧闹、混杂的生活中
你应该与你的心灵和平相处
尽管这世上有很多假冒和欺骗
有很多单调乏味的工作
和众多破灭的梦幻
它仍然是一个美好的世界
记住:你应该努力去追求幸福。
是的,记住:你应该努力去追求幸福。
每个早晨灿烂的太阳升起的时候,
每个人都应
-
2004-04-29
[原创] Block_Manager V1.00 - [ObjectArx开发专辑]
http://upload.yourblog.org/20044/junglesong.20040429163431.rar
图块管理器1.00版本 -
2004-02-19
[原创]用ARX进行对象筛选 - [ObjectArx开发专辑]
此类需要”创建新层类“的配合。要实现功能,调用一下函数OuterCheck()就可以了。
/******************************************************************
** File name :OuterCheck.h
** Copyright (c) 2004-2005 ********* DHC ltd.
** Description :check outer objects in ACAD
** Version :1.00
******************************************************************/
#if !defined C_OUTER_CHECK_H
#define C_OUTER_CHECK_H
#include "global.h"
void OuterCheck();
class COuterCheck
{
public:
COuterCheck();
virtual ~COuterCheck();
BOOL GetCreateFlag() const
{
return m_bCreateFlag;
};
Acad::ErrorStatus Setup_BlockTable();
Acad::ErrorStatus Setup_BlockTableRecord();
Acad::ErrorStatus Setup_BlockIterator();
void Select_OuterObjects();
private://Variables
AcDbBlockTable* m_pBlockTable;
BOOL m_bCreateFlag;
AcDbBlockTableRecord* m_pBlockTableRecord;
AcDbBlockTableRecordIterator* m_pBlockIterator;
};
#endif
/******************************************************************
** File name :OuterCheck.cpp
** Copyright (c) 2004-2005 ********* DHC ltd.
** Description :check outer objects in ACAD
** Version :1.00
******************************************************************/
#include "stdafx.h"
#include "resource.h"
#include "OuterCheck.h"
COuterCheck::COuterCheck()
{
m_bCreateFlag=TRUE;
m_pBlockTable=NULL;
m_pBlockTableRecord=NULL;
m_pBlockIterator=NULL;
}
COuterCheck::~COuterCheck()
{
m_pBlockTableRecord->close();
delete m_pBlockIterator;
}
Acad::ErrorStatus COuterCheck::Setup_BlockTable()
{
Acad::ErrorStatus es;
es=acdbHostApplicationServices()->workingDatabase()->getSymbolTable(m_pBlockTable,AcDb::kForWrite);
if(es!=Acad::eOk)
{
ads_printf("\nApp fialed to setup BlockTable.");
m_pBlockTable=NULL;
m_bCreateFlag=FALSE;
return es;
}
else
{
return Acad::eOk;
}
}
Acad::ErrorStatus COuterCheck::Setup_BlockTableRecord()
{
Acad::ErrorStatus es;
es=m_pBlockTable->getAt(ACDB_MODEL_SPACE,
m_pBlockTableRecord,
AcDb::kForRead,Adesk::kFalse);
if(es!=Acad::eOk)
{
ads_printf("\nApp fialed to setup BlockTableRecord.");
m_pBlockTable->close();
m_pBlockTableRecord=NULL;
m_bCreateFlag=FALSE;
return es;
}
else
{
m_pBlockTable->close();
return Acad::eOk;
}
}
Acad::ErrorStatus COuterCheck::Setup_BlockIterator()
{
Acad::ErrorStatus es;
es=m_pBlockTableRecord->newIterator(m_pBlockIterator);
if(es!=Acad::eOk)
{
ads_printf("\nApp fialed to setup BlockIterator.");
delete m_pBlockIterator;
m_pBlockIterator=NULL;
m_bCreateFlag=FALSE;
return es;
}
else
{
return Acad::eOk;
}
}
void COuterCheck::Select_OuterObjects()
{
AcDbEntity *pEntity;
char pSzname[132];
int nOuterObjectNumber=0;
for (; !m_pBlockIterator->done(); m_pBlockIterator->step())
{
m_pBlockIterator->getEntity(pEntity, AcDb::kForWrite);
if(strcmp(pEntity->layer(),g_strNewLayerName)!=0)
{
strcpy(pSzname , pEntity->isA()->name());
if( strcmp(pSzname,"AcDbLine")!=0 &&
strcmp(pSzname,"AcDbPolyline")!=0 &&
strcmp(pSzname,"AcDbArc")!=0 &&
strcmp(pSzname,"AcDbCircle")!=0 )
{
pEntity->setLayer(g_strNewLayerName);
nOuterObjectNumber++;
}
}
pEntity->close();
}
ads_printf("\nThere are %d outer objects Checked out.",nOuterObjectNumber);
}
void OuterCheck()
{
COuterCheck cOuterCheck;
cOuterCheck.Setup_BlockTable();
if(cOuterCheck.GetCreateFlag())
cOuterCheck.Setup_BlockTableRecord();
if(cOuterCheck.GetCreateFlag())
cOuterCheck.Setup_BlockIterator();
if(cOuterCheck.GetCreateFlag())
cOuterCheck.Select_OuterObjects();
}
created by junglesong
2004-2-29 -
2004-02-18
[原创]用Arx在ACAD中创建一个新层 - [ObjectArx开发专辑]
此类用于创建一个新层,如果已经存在则提示用户.
//外部调用函数
void Create_New_layer()
{
CCreate_New_Layer* pCreate_New_Layer=new CCreate_New_Layer();
pCreate_New_Layer->Setup_LayerTableRecord();
if(pCreate_New_Layer->GetCreateFlag())
pCreate_New_Layer->Set_LayerName();
if(pCreate_New_Layer->GetCreateFlag())
pCreate_New_Layer->Setup_LayerTable();
if(pCreate_New_Layer->GetCreateFlag())
pCreate_New_Layer->Setup_LineTypeTable();
if(pCreate_New_Layer->GetCreateFlag())
pCreate_New_Layer->Create_LineTypeObjectId();
if(pCreate_New_Layer->GetCreateFlag())
pCreate_New_Layer->add_TableRecord_To_LayerTable();
if(pCreate_New_Layer->GetCreateFlag())
{
delete pCreate_New_Layer;
pCreate_New_Layer=0;
}
}
/******************************************************************
** File name :Create_New_Layer.h
** Copyright (c) 2004-2005
** Description :create a new layer in ACAD
** Version :1.00
******************************************************************/
#if !defined CREATE_NEW_LAYER_H
#define CREATE_NEW_LAYER_H
#include "global.h"
class CCreate_New_Layer
{
public:
CCreate_New_Layer();
virtual ~CCreate_New_Layer();
BOOL GetCreateFlag() const
{
return m_bCreateFlag;
};
Acad::ErrorStatus Setup_LayerTableRecord();
Acad::ErrorStatus Set_LayerName(CString strLayerName="MYLAYER");
Acad::ErrorStatus Setup_LayerTable();
Acad::ErrorStatus Setup_LineTypeTable();
Acad::ErrorStatus Create_LineTypeObjectId();
Acad::ErrorStatus add_TableRecord_To_LayerTable();
private://functions
void Set_LayerAttibutes();
void Delete_LayerTableRecord();
private://variables
BOOL m_bCreateFlag;//the flagment in the process of creating a new layer
AcDbLayerTableRecord* m_pLayerTableRecord;//the pointer of new layer table record
AcDbLayerTable* m_pLayerTable;//the pointer of LayerTable in ACAD workspace
AcDbLinetypeTable* m_pLinetypeTbl;//the pointer of LineLayerTable in ACAD workspace
AcDbObjectId m_ltypeObjId;//new layer table record ’s id
};
#endif
/******************************************************************
** File name :Create_New_Layer.cpp
** Copyright (c) 2004-2005
** Description :create a new layer in ACAD
** Version :1.00
******************************************************************/
#include "stdafx.h"
#include "resource.h"
#include "Create_New_Layer.h"
CCreate_New_Layer::CCreate_New_Layer()
{
m_pLayerTableRecord=NULL;
m_bCreateFlag=TRUE;
m_pLayerTable=NULL;
m_pLinetypeTbl=NULL;
}
CCreate_New_Layer::~CCreate_New_Layer()
{
Acad::ErrorStatus es;
es=m_pLayerTable->close();
if(es!=Acad::eOk)
{
ads_printf("\nApp fialed to close layer.");
}
es=m_pLayerTableRecord->close();
if(es!=Acad::eOk)
{
ads_printf("\nApp fialed to close layer record");
}
}
Acad::ErrorStatus CCreate_New_Layer::Setup_LayerTableRecord()
{
m_pLayerTableRecord=new AcDbLayerTableRecord;
if(NULL==m_pLayerTableRecord)
{
m_bCreateFlag=FALSE;
ads_printf("\nOut of memory.");
return Acad::eOutOfMemory;
}
return Acad::eOk;
}
Acad::ErrorStatus CCreate_New_Layer::Set_LayerName(CString strLayerName)
{
Acad::ErrorStatus es=m_pLayerTableRecord->setName(strLayerName);
if(es!=Acad::eOk)
{
Delete_LayerTableRecord();
m_bCreateFlag=FALSE;
ads_printf("\nApp fialed to set LayerName.");
return es;
}
else
{
Set_LayerAttibutes();
return Acad::eOk;
}
}
void CCreate_New_Layer::Set_LayerAttibutes()
{
m_pLayerTableRecord->setIsFrozen(0);
m_pLayerTableRecord->setIsOff(0);
m_pLayerTableRecord->setVPDFLT(0);
m_pLayerTableRecord->setIsLocked(0);
AcCmColor color;
color.setColorIndex(3);
m_pLayerTableRecord->setColor(color);
}
Acad::ErrorStatus CCreate_New_Layer::Setup_LayerTable()
{
Acad::ErrorStatus es;
es=acdbHostApplicationServices()->workingDatabase()->getSymbolTable(m_pLayerTable,AcDb::kForWrite);
if(es!=Acad::eOk)
{
Delete_LayerTableRecord();
m_pLayerTable=NULL;
m_bCreateFlag=FALSE;
共1页 1






