ObjectARX, AutoCAD. Среда программирования библиотеки C++




Типовой Код


Этот пример создает класс, который дает возможность пользователю создать эллипс,  выбирая его среднюю точку и затем перемещая, чтобы выбрать желательную главную ось и незначительные{*младшие*} длины оси. В течение перетащенных операций, пользователь будет способен видеть то, что эллипс напоминает в любое время.

ОБРАТИТЕ ВНИМАНИЕ, пробует ли пользователь делать незначительную{*младшую*} ось дольше чем главная ось, эллипс закончится как круг, потому что отношение{*коэффициент*} радиуса не может быть большее чем 1.0.

class AsdkEllipseJig : public AcEdJig

// This class allows the user to create an ellipse by

// picking its center point and then dragging to select the

// desired major axis and minor axis lengths. During the

// drag operations, the user will be able to visually see

// what the ellipse looks like at any time.

//

{

public:

AsdkEllipseJig(const AcGePoint3d&, const AcGeVector3d&);

void doIt();

virtual DragStatus sampler();

virtual Adesk::Boolean update();

virtual AcDbEntity* entity() const;

private:

AcDbEllipse *mpEllipse;

AcGePoint3d mCenterPt, mAxisPt;

AcGeVector3d mMajorAxis, mNormal;

double mRadiusRatio;

int mPromptCounter;

};

// The following defines the constructor that accepts a point to be

// used as the centerpoint of the ellipse and the current UCS normal

// vector to be used as the normal for the ellipse. It also

// initializes the radius ratio to a small value so that during

// selection of the major axis, the ellipse will appear as a line.

// The prompt counter is also initialized to 0.

//

AsdkEllipseJig::AsdkEllipseJig(

const AcGePoint3d& pt,

const AcGeVector3d& normal)

: mCenterPt(pt),

mNormal(normal),

mRadiusRatio(0.00001),

mPromptCounter(0)

{ }

// This function creates an AcDbEllipse object and gets the

// jig started acquiring the necessary info to properly fill

// it in.

//

void

AsdkEllipseJig::doIt()

{

mpEllipse = new AcDbEllipse;

// Get the major axis vector from the user.




Содержание  Назад  Вперед