Aller au contenu

Dossier Labs de ObjectARX


belam

Messages recommandés

Salut à tous

 

J'ai téléchargé à partir d'un site AUTODESK ObjectARX_2010_Win_64_and_32Bit.exe. Je l'ai exécuté. Dans l'arbre des dossiers il n'y a pas le dossier LABS :( alors que tous les autres dossiers y sont, CLASSMAP, DOCS, INC, UTILS ....

 

S'il existe et si quelqu'un pouvait me le procurer je pense que ça m'aiderait beaucoup :D . A défaut celui de ObjectARX2008 pourrait trés bien faire l'affaire

 

A +

 

belam

Lien vers le commentaire
Partager sur d’autres sites

Salut à tous !

 

Salut (gile)

 

Je ne me lance pas dans le C++, je m'y replonge.

 

J'avais écrit un logiciel en C++ (plutôt en C) qui produisait des ARX qui tournaient sur A2000.

 

Pour différentes causes je ne l'ai ni maintenu ni développé depuis A2000 et je me propose de le faire migrer vers A2010.

 

Tout ce qui peut m'aider à le faire est le bienvenu et je suis preneur de l'ARXLABS 2007. Je pense que ça pourra faire l'affaire. Merci (gile).

 

En fait le plus difficile en ARX c'est de mettre en place une solide plateforme de développement. le reste n'est qu'une question de programmation.

 

C'est un logiciel que j'avais commencé à écrire en langage C sous le système ADS (Advenced Development System) pour Autocad R12. Les boites de dialogue étaient configurées en DCL (elles le sont encore).

 

On avait la possibilité de choisir son éditeur de langage C (Microsoft, Borland, Watcom, ....). j'utilisais ces 2 derniers.

 

Sous R13 et R14 ADS est devenu ADSRX, un système intermédiaire entre ADS et ARX. Microsoft.

 

En A2000, c'est l'ARX et le seul langage à utiliser est le C++ 4.00 de MSDEV (Microsoft). Mon travail en est resté là. Quand je devais absolument écrire quelque chose pour AUTOCAD je le faisait en VB (non en VBA), ainsi j'ai un EXE que je peux, sans souci, transporter d'un micro à l'autre.

 

Depuis, toutes les 2 ou 3 versions d'AUTOCAD, Autodesk change carrément de plateforme de développement (nouvelles librairies ARX, nouvelle version C++ de Visual Studio imposée).

 

Autodesk aurait voulu emm..... le monde qu'il n'aurait pas mieux fait.

 

Je comprends que les plateforme de développement évoluent. mais le plus gênant c'est qu'une ARX produite pour une version donnée ne fonctionne plus sur les versions suivantes (pas de compatibilité). C'est ainsi que des acquéreurs d'ARX, en monnaie sonnante et trébuchante, se retrouvent condamnés à travailler sur d'anciennes versions d'Autocad.

 

Pour mon cas, c'est des ARX qui marchent bien et qu'on utilise toujours. et c'est pour éviter les les aller-retour entre A2000 et A2010 que je me propose de les faire sur la dernière version.

 

Bonne nuit

 

A+

 

belam

 

 

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Tu peux télécharger le fichier ObjectARXLabs.chm.

 

Question compatibilité, il semble que .NET ne pose pas ce genre de problème.

Des programmes écrits avec les classes managés d'ObjectARX 2007 et le NetFramework 2.0 fonctionnent sur AutoCAD 2010 malgré les changements de format DWG et ObjectARX.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Salut à tous

 

Re à (gile)

 

Merci (gile).

 

J'ai bien téléchargé le fichier en question mais je n'arrive pas à l'ouvrir correctement. Même en essayant de l'ouvrir avec HTML Microsoft ça ne marche pas. Je n'ai que la table des matières sur la gauche de l'écran et au centre j'ai le message " Navigation sur la page WEB annulées ".

 

Est-ce que tu pourrait me l'envoyer non compilé ?

 

Normalement c'est ce qui me manque pour commencer.

 

A+

 

belam

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Je ne l'ai que sous forme compilée (chm) la table des matières doit faire appel à d'autres fichiers contenus dans d'autres dossiers d'ObjectARX 2007.

Le plus simple est peut-être de télécharger directement la version d'objectARX qui t'intéresse (ici)

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Salut à tous

 

Salut (gile)

 

A partir de l'adresse que tu m'a communiquée à travers ton (Ici) j'ai téléchargé l'ObjectArx2009 et de là, en suivant pas à pas le premier exemple de ArxLabs2009 et àprès maints bidouillages je viens de créer la bien connue commande HELLO qui inscrit "Hello World" sur la ligne de Commande d'Autocad.

 

De prime abord c'est une bonne étape de franchie.

 

A +

 

belam

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines aprè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;
}

 

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 fait 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 complexe, 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)

 

 

 

[Edité le 20/10/2009 par belam]

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é