⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 asdksmiley.h

📁 autocad 编程 对autocad 开发软件的朋友提供
💻 H
字号:
//
// (C) Copyright 2000 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.
//
//

// AsdkSmiley custom object.

#if !defined(ARX__ASDKSMILEY_H__19990215_125311)
#define ARX__ASDKSMILEY_H__19990215_125311

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

#pragma warning(disable: 4275 4251)

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

#ifndef ASDKSMILEYDB_DBXSERVICE
#define ASDKSMILEYDB_DBXSERVICE "ASDKSMILEYDB_DBXSERVICE"
#endif


#include <dbents.h>
#include <acgi.h>
#include <math.h>

#include <objbase.h>

class DLLIMPEXP AsdkSmiley : public AcDbEntity
{
public:

	ACRX_DECLARE_MEMBERS(AsdkSmiley);

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

	//{{AFX_ARX_METHODS(AsdkSmiley)
	virtual Acad::ErrorStatus setColor(const AcCmColor& color,
	                                   Adesk::Boolean doSubents = true);
	virtual Adesk::Boolean worldDraw(AcGiWorldDraw* mode);
	virtual Acad::ErrorStatus dwgInFields(AcDbDwgFiler* pFiler);
	virtual Acad::ErrorStatus dwgOutFields(AcDbDwgFiler* pFiler) const;
	virtual Acad::ErrorStatus dxfInFields(AcDbDxfFiler* pFiler);
	virtual Acad::ErrorStatus dxfOutFields(AcDbDxfFiler* pFiler) const;
	virtual Acad::ErrorStatus explode(AcDbVoidPtrArray& entitySet) const;
	virtual void list() const;
	virtual Acad::ErrorStatus getOsnapPoints(AcDb::OsnapMode osnapMode,
	                                         int gsSelectionMark,
	                                         const AcGePoint3d& pickPoint,
	                                         const AcGePoint3d& lastPoint,
	                                         const AcGeMatrix3d& viewXform,
	                                         AcGePoint3dArray& snapPoints,
	                                         AcDbIntArray& geomIds) const;
	virtual Acad::ErrorStatus getGripPoints(AcGePoint3dArray& gripPoints,
	                                        AcDbIntArray& osnapModes,
	                                        AcDbIntArray& geomIds) const;
	virtual Acad::ErrorStatus moveGripPointsAt(const AcDbIntArray& indices,
	                                           const AcGeVector3d& offset);
	virtual Acad::ErrorStatus getStretchPoints(AcGePoint3dArray& stretchPoints) const;
	virtual Acad::ErrorStatus moveStretchPointsAt(const AcDbIntArray& indices,
	                                              const AcGeVector3d& offset);
	virtual Acad::ErrorStatus transformBy(const AcGeMatrix3d& xform);
	virtual void saveAs(AcGiWorldDraw* mode, AcDb::SaveType st);
    virtual Acad::ErrorStatus getClassID(CLSID* pClsid) const;
	//}}AFX_ARX_METHODS

	//{{AFX_ARX_DATA_ACCESS(AsdkSmiley)
	//}}AFX_ARX_DATA_ACCESS


    // Smiley specific protocol
    //
    // smiley center
    virtual AcGePoint3d center() const;
    virtual void setCenter(const AcGePoint3d c);

    // smiley radius
    virtual double radius() const;
    virtual void setRadius(const double r);
    virtual void scaleRadius(const double r);

    // smiley normal
    virtual AcGeVector3d normal() const;
    virtual void setNormal(const AcGeVector3d v);

    // smiley eyes apart
    virtual double eyesApart() const;
    virtual void setEyesApart(const double d);

    // smiley eyes height
    virtual double eyesHeight() const;
    virtual void setEyesHeight(const double h);

    // smiley eyes size
    virtual double eyeSize() const;
    virtual void setEyeSize(const double s);

    // eye locations
    virtual void eyes(AcGePoint3dArray &array) const;

    virtual AcGePoint3d mouthCenter() const;
    virtual double mouthRadius() const;

    // left point of mouth arc (smile)
    virtual AcGePoint3d mouthLeft() const;
    virtual void setMouthLeft(const AcGePoint3d &p);

    // bottom point of mouth arc (smile)
    virtual AcGePoint3d mouthBottom() const;
    virtual void setMouthBottom(const AcGePoint3d &p);

    // right point of mouth arc (smile)
    virtual AcGePoint3d mouthRight() const;
    virtual void setMouthRight(const AcGePoint3d &p);

    // whole mouth
    virtual void setMouth( const AcGePoint3d& left, const AcGePoint3d& bottom, const AcGePoint3d& right);

    // ensure radius is sufficiently large to accomodate features
    virtual void ensureRadius();

	static void initCLSID();

private:

    Acad::ErrorStatus osnapNear(
                                const AcGePoint3d&  pickPoint,
                                AcGePoint3dArray&   snapPoints) const;
    Acad::ErrorStatus osnapCen(
                                const AcGePoint3d&  pickPoint,
                                AcGePoint3dArray&   snapPoints) const;
    Acad::ErrorStatus osnapQuad(
                                const AcGePoint3d&  pickPoint,
                                AcGePoint3dArray&   snapPoints) const;

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

    // data members
    //
    AcGeVector3d  mnormal;            // smiley normal vector
    double        meyesapart;         // smiley eyes apart
    double        meyesheight;        // smiley eyes height
    double        meyesize;           // smiley eye size
    AcGeCircArc3d mfacecircle;        // smiley mouth arc (not written out)
    AcGeCircArc3d mmoutharc;          // smiley mouth arc (not written out)
	AcDbObjectId  mFriend;


	static bool   s_bHasClsid;
	static CLSID  s_clsid;		      // COM wrapper's CLSID, for OPM exposure

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__ASDKSMILEY_H__19990215_125311)

⌨️ 快捷键说明

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