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


Типовое ObjectARX-приложение

Сравните типовые приложения программ факториала, распределенных с AutoCAD. Программа fact.ccp - для среды программы ObjectARX, в то время как fact.c - для среды программы ADS. Следующая версия fact.cpp объявляет и осуществляет acrxEntryPoint (); иначе, fact.cpp почти идентичен fact.c. Функция acrxEntryPoint () заменяет главное в fact.c:

#include <stdio.h>

#include "adslib.h"

#include "rxdefs.h"

// Utility definition to get an array’s element count (at compile

// time). For example:


// int arr[] = {1,2,3,4,5};

// ...

// printf("%d", ELEMENTS(arr));


// would print a five. ELEMENTS("abc") can also be used to tell

// how many bytes are in a string constant INCLUDING THE TRAILING

// NULL.

#define ELEMENTS(array) (sizeof(array)/sizeof((array)[0]))

// All the functions that we’ll define will be listed in a single

// table, together with the internal function that we call to handle

// each. The functions all take a single argument (the resbuf that

// has the arguments) and return an integer (RTNORM or RTERROR for

// good or bad status).

// First, define the structure of the table: a string giving the

// AutoCAD name of the function, and a pointer to a function

// returning type int.

struct func_entry {

char *func_name;

int (*func) _((struct resbuf *));


// Here we declare the functions that handle the calls; at the moment

// there are two of them.

int fact _((struct resbuf *rb));

int squareroot _((struct resbuf *rb));

// Here we define the array of function names and handlers.

static struct func_entry func_table[] = {

{/*MSG0*/"fact", fact},

{/*MSG0*/"sqr", squareroot},


// To add more functions to this table, just put them in the list,

// after declaring the function names. Note that in standard C it’s

// all right to have a superfluous comma after the last item.

// The code from here to the end of dofun() is UNCHANGED when you

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

Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий