chdbsurfd.h

来自「能在MDT5/6环境下对已经存在地曲面进行全部和局部区域展开」· C头文件 代码 · 共 104 行

H
104
字号
/////////////////////////////////////////////
// ChDbSurfD custom object.

#if !defined(ARX__CHDBSURFD_H__20040824_094708)
#define ARX__CHDBSURFD_H__20040824_094708

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "dbmain.h"

#include "CSDAreaMethod.h"

#pragma warning(disable: 4275 4251)

#ifdef _SURFDOBJ_
#define DLLIMPEXP __declspec(dllexport)
#else
#define DLLIMPEXP 
#endif

#ifndef CHSURFDOBJ_DBXSERVICE
#define CHSURFDOBJ_DBXSERVICE "CHSURFDOBJ_DBXSERVICE"
#endif

// 曲面展开数据库对象
class DLLIMPEXP ChDbSurfD : public AcDbObject
{
public:

	ACRX_DECLARE_MEMBERS(ChDbSurfD);

	// Constructor / Destructor
	ChDbSurfD();
	virtual ~ChDbSurfD();

	//{{AFX_ARX_METHODS(ChDbSurfD)
	virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const;
	virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler* pFiler);
	//}}AFX_ARX_METHODS

	// 展开对象初始化, 使用自身的展开数据初始化
	Acad::ErrorStatus initialize();
	// 展开对象初始化, 使用给定的数据初始化
	Acad::ErrorStatus initialize(const AcDbHandle& hSurf,const CSDData& data);

	// 设置展开对象名称
	void setName(const CString& name) { mName = name;	}
	// 获取展开对象名称
	void getName(CString& name) { name = mName;	}

	// 映射曲面上一点到展开平面上,注意op必须是曲面上的点,否则可能错误
	Acad::ErrorStatus mapPointToD(
		const AcGePoint3d& op,AcGePoint2d& dp);
	Acad::ErrorStatus mapPointToD(
		const AcGePoint3d& op,AcGePoint3d& dp);
	// 如果bIfForcedMap=true,则当某个点不能映射时,继续映射下一个点,否则返回错误,dc置空
	Acad::ErrorStatus mapPointsToD(
		const AcGePoint3dArray& oc,AcGePoint2dArray& dc,bool bIfForcedMap=true);
	Acad::ErrorStatus mapPointsToD(
		const AcGePoint3dArray& oc,AcGePoint3dArray& dc,bool bIfForcedMap=true);
	// 映射展开平面上一点到曲面上,成功返回true
	Acad::ErrorStatus mapPointToO(
		const AcGePoint2d& dp,AcGePoint3d& op);
	Acad::ErrorStatus mapPointToO(
		const AcGePoint3d& dp,AcGePoint3d& op);
	Acad::ErrorStatus mapPointsToO(
		const AcGePoint2dArray& dc,AcGePoint3dArray& oc,bool bIfForcedMap=true);
	Acad::ErrorStatus mapPointsToO(
		const AcGePoint3dArray& dc,AcGePoint3dArray& oc,bool bIfForcedMap=true);

	void getCSDData(CSDData& data);
	void getOSurf(AcDbHandle& hSurf);
	Adesk::Boolean getCSDObj(CSDAreaISO& obj);

	// 对象是否已经初始化
	Adesk::Boolean isInitialized(void) const;

	//{{AFX_ARX_DATA_ACCESS(ChDbSurfD)
	//}}AFX_ARX_DATA_ACCESS


private:
	//{{AFX_ARX_DATA(ChDbSurfD)
	//}}AFX_ARX_DATA

	AcDbHandle	mhSurf;			// 原曲面句柄
	CSDData mData;				// 展开数据
	CSDAreaISO mCSDObj;			// 展开对象

	CString mName;				// 对象名称

private:

	void *operator new[](unsigned nSize) { return 0; }
	void operator delete[](void *p) {};
	void *operator new[](unsigned nSize, const char *file, int line) { return 0; }

};



#endif // !defined(ARX__CHDBSURFD_H__20040824_094708)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?