Aller au contenu

Test insertion de code


belam

Messages recommandés

Salut à tous

 

C'est re moi

 

J'ai remis au goût du jour la commande bati2 ou b2, c'est la plus simple et la plus courte. Elle dessine un rectangle dont on connait deux points représentant les extrémités d'un coté et la hauteur.

 

Ce peut être les deux point levés d'une construction rectangulaire et de l'autre dimension du rectangle.

 

Par convention le rectangle est dessiné à gauche du coté levé [pt1, pt2] en regardant de pt1 vers pt2.

 

La commande marche correctement. En voici le code.

 

void bati2(){

h = 0.0;
struct resbuf *result; 

ads_initget(1, NULL);
resget = ads_getpoint(NULL, _T("\n1° point ? "), pt1);
#include "rtcan.h"
if(resget != RTNORM)
{
	acutPrintf(_T("\nLa saisie du premier point a échoué."));
	_flushall(); _fcloseall();
	return;
}

x1 = pt1[0]; 
y11 = pt1[1];

ads_initget(1, NULL);
resget = ads_getpoint(pt1, _T("\n2° point ? "), pt2);
#include "Rtcan.h"
if(resget != RTNORM)
{
	acutPrintf(_T("\nLa saisie du second point a échoué."));
	_flushall(); _fcloseall();
	return;
}

x2 = pt2[0]; y2 = pt2[1];

acedGetVar(_T("userr2"), &rb);
rb.restype = RTREAL;
h = rb.resval.rreal;

if(h != 0.0)
	acutPrintf(_T("\nHauteur   <%.2lfm> ? "), h);
else
	acutPrintf(_T("\nHauteur ? "));

ads_initget(2, NULL);
resget = ads_getdist(NULL, NULL, &h);
#include "rtcan.h"
if(resget != RTNORM)
{
	acutPrintf(_T("\nLa saisie de la hauteur a échoué."));
	_flushall(); _fcloseall();
	return;
}

rb.resval.rreal = h;
ads_setvar(_T("userr2"), &rb);

dx = x2 - x1; dy = y2 - y11;
d = sqrt(dx * dx + dy * dy);

gis = gisement(dx, dy) - 1.570796327;

x3 = x2 + h * sin(gis);
y3 = y2 + h * cos(gis);
pt3[0] = x3; pt3[1] = y3;
x4 = x1 + h * sin(gis);
y4 = y11 + h * cos(gis);
pt4[0] = x4; pt4[1] = y4;

acedCommand(RTSTR, _T("_pline"), RTPOINT, pt1, RTPOINT, pt2,
	        RTPOINT, pt3, RTPOINT, pt4, RTSTR, _T("_close"), 0);
	
_flushall(); _fcloseall();
return;
}
 

C'est programmé plutôt en C et ADS au lieu de C++ et ObjectARX.

 

Si ça peut servir voici aussi le code du programme principal ObjectArx.

 

 
#include "stdafx.h"
#include "tchar.h"
#include 
#include "adscodes.h"
#include "acedads.h"
#include 
#include 
#include 
#include 
#include 

#include 
#include 
#include 

ads_real xor, yor, x1, x2, x3, x4, y11, y2, y3, y4, xprov, yprov;
ads_real dx, dy, gis, d, h;
ads_point pt0, pt1, pt2, pt3, pt4;
char layname[80], buffer[160];

int resget;

struct resbuf rb, cecol, osm;
void initApp();
void unloadApp();

void helloWorld();
void bati2();
void bati3();

void initApp()
{ 

acedRegCmds->addCommand(_T("TOPO1_COMMANDS"),
                       _T("Hello"),
                       _T("Bonjour"),
                       ACRX_CMD_TRANSPARENT,
                       helloWorld);

acedRegCmds->addCommand(_T("TOPO1_COMMANDS"),
                       _T("b2"),
                       _T("bati2"),
                       ACRX_CMD_MODAL,
                       bati2);

acedRegCmds->addCommand(_T("TOPO1_COMMANDS"),
                       _T("b3"),
                       _T("bati3"),
                       ACRX_CMD_MODAL,
                       bati3);
}

void unloadApp()
{ 
acedRegCmds->removeGroup(_T("TOPO1_COMMANDS"));
}

void helloWorld()
{ 
acutPrintf(_T("\nHello World!"));
}

#include "gisement.h"

#include "bati2.h"
#include "bati3.h"

extern "C" AcRx::AppRetCode
acrxEntryPoint(AcRx::AppMsgCode msg, void* pkt)
{
switch (msg)
{
	case AcRx::kInitAppMsg:
	acrxDynamicLinker->unlockApplication(pkt);
	acrxRegisterAppMDIAware(pkt);
	initApp();
	break;
	case AcRx::kUnloadAppMsg:
	unloadApp();
	break;
	default:
	break;
}
return AcRx::kRetOK;
}
 

 

J'ai fais la même chose avec la commande bati3 (b3) qui dessine un rectangle à partir de trois points levés, en positionnant au mieux les coins du rectangle par rapport aux points levés.

 

La commande suivante, plus complxe, fait appel à une boite de dialogue implémentée en DCL que je me propose de remplacer par une boite MFC.

 

A+

 

belam

 

 

-------------------------------------------------------------------------------

De toute façon c'est moins grave que si c'était pire. (Frédéric Dard - San Antonio ?)

Si c'est pas sûr, c'est quand même peut-être. (Jacque Brel)

 

 

 

 

 

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité