
Ahryman40k
Membres-
Compteur de contenus
17 -
Inscription
-
Dernière visite
Tout ce qui a été posté par Ahryman40k
-
Bonjour bonjour, Cela fait un moment que je n'ai pas eut de problemes avec AutoCAD. ( Peut etre que je devient bon ? Non impossible ! ) Je n'ai pas bien compris le fonctionnement des polylignes ... je voudrait recuperer les coordonnées de chaque sous-entitées dans le repere Global ( WCS ) ... Visiblement cela fonctionne sur les lignes ( ou est ce un coup de chance ! ), mais pas sur les arcs ... En fait je demande tour a tour les segments qui compose la polyligne, le type de ce segment, et je recupere soit un AcGeCircArc3d pour les arcs soit AcGeLineSeg3d pour les segments. Pourquoi justement ce type d'objet ??? Comment avec ca je retrouve les coordonnées qui m'interesse, ( celle que j'ai ne sont pas exprimées dans le bon repere ). merci de vos conseils.
-
API AutoCAD Mechanical 2004
Ahryman40k a répondu à un(e) sujet de Ahryman40k dans ObjectARX/DBX, C++, .NET, RealDWG
Finalement tout est ok ;)) -
API AutoCAD Mechanical 2004
Ahryman40k a répondu à un(e) sujet de Ahryman40k dans ObjectARX/DBX, C++, .NET, RealDWG
J'ai finalement trouvé le probleme !! ( Comme quoi une semaine de recul sa fait du bien !! ) En fait le premier ARX recoit un evenement COM, charge un second ARX qui possede une interface qui va me permettre d'obtenir des renseignements sur mechanical. Le but etant de ne pas compiler 2 fois le même ARX ( un pour AutoCAD et l'autre pour AcadM ), j'ai deporté toutes les manipulations de acadM dans un ARX a part ( le second ). c'est dans ce second ARX que je manipule Mechanical via COM. Apparement de la partie evenementielle du premier lorsque je construit la partie COm du second et que je l'interroge, le contexte ne permet pas d'avoir acces a AcadM ??? Alors que j'accede aux objets comme la Db AutoCAD ... Si en fait c'est une commande ARX du premier qui construit et fait les appels sur le second, le même code fonctionne et j'accede sans erreur a mechanical !! 2 solutions s'offrent a moi : Ou je trouve le probleme du contexte d'appel ( resource ou autre ?? Mais les essai ne sont pas concluant ) Ou je fais les même les memes appels depuis une commande ARX, auquel cas comment passer et recuperer des arguments dans une commande ARX ??? Je me suis deja lancé dans plusieurs essais, acedGetArgs ne recupere rien apres un sendStringToExecute() ... Aurais je des problemes de syntaxe : ARXAcadTools acadUtl; CString strCmd; strCmd.Format("TrTest1\n%f,%f,%f\nDESCR\nMa description", mLastInsertPoint.x, mLastInsertPoint.y, mLastInsertPoint.z); acadUtl.sendCommand( strCmd ); g egalement fais l'essai avec des espaces plutot que \n sans resultats ... merci pour ton aide Serge. -
API AutoCAD Mechanical 2004
Ahryman40k a répondu à un(e) sujet de Ahryman40k dans ObjectARX/DBX, C++, .NET, RealDWG
Je retire ce que j'ai dit, apperement g eut un tit soucis de compil et sa chargeait plus ! Maintenant il se recharge mais le resultat est toujours le même ... mon code : ARXLock lockApp; ads_point pnt; // CString numItemColumnName; Adesk::Int16 numOfItems = 1; int res = acedGetPoint(NULL,"\nSelect point :",pnt); if( res == RTCAN || res == RTERROR ) return AutoCAD::eOk; // creates new instance of AcmPartRef and sets defaults AcmPartRef *pRef = new AcmPartRef; pRef->setSymbolDefaults(); // will create data id, because we didn't initialize it. pRef->setOrigin( asPnt3d( pnt ) ); // attempts to add partref to database AcDbObjectId partId; if ( appendToBlock(pRef, partId) != Acad::eOk) { delete pRef; return AutoCAD::eOk; } pRef->close(); acmBomMgr->setPartData(partId,numOfItems,valueMap); // et sa pete ici donc la partref est crée mais aucune valeur dedans ... valueMap doit il avoir des valeurs particulieres ?? -
API AutoCAD Mechanical 2004
Ahryman40k a répondu à un(e) sujet de Ahryman40k dans ObjectARX/DBX, C++, .NET, RealDWG
J'ai trouvéééééé !!! Seulement le probleme, maintenant il me faut le resoudre ... Le sample TestPartRef fonctionnant ( apres qlq modifs, mais fonctionnant ), je ne comprenais pas pourquoi mon ARX explosait la ou le sample fonctionnait !!! En fait c'est un ARX que je charge a la volée, mais dont g desactivé le message d'erreur lorsque le chargement s'effectue mal :) En fait il ne charge pas ! sa explique bcp -_-' Commande: _appload TrBCMBOM.arx n'est pas compatible avec cette version de AutoCAD. AcRxDynamicLinker n'a pas chargé 'C:\BUSAPPS\Rbcm\Mv6\Frfr\LibMgr\TrBCMBOM.arx' C:\Program Files\Autodesk\Acadm 2004\acad.exeImpossible de charger le fichier TrBCMBOM.arx. le plus drole, c'est qu'il me dit qu'il n'est pas compatible avec cette version d'AutoCAD alors que c'est les même libs que le sample ... j'en ai marre ... :casstet: -
API AutoCAD Mechanical 2004
Ahryman40k a répondu à un(e) sujet de Ahryman40k dans ObjectARX/DBX, C++, .NET, RealDWG
Trop puissant, Alors g modifie le code de l'exemple car sa peté sur AcmPartRef->setOrigin( AcGePoint3d ) le parametre passé etait obtenue par ceci : int res = ads_getpoint(NULL,"\nSelect point :",asDblArray(pnt)); je ne sais pas ce que fait asDblArray sur un AcGePoint3d, mais surement que le point n'etait plus valide car en passant un point fixe AcmPartRef->setOrigin( AcGePoint3d( 10,10,0) ), par exemple sa fonctionne ?? 2e chose bizarre AutoCAD Mechanical PP 2004 DX plante pour l'exemple avec la modif ci-dessus Mais mon second AcadM2004 qui est une version pour Michelin lui fonctionne !!??!!! Ca tombe bien, de toute facon c'est sur cette version que sa devra tourner ... DX me laisse perplexe, car je me rappelle avoir egalement eut des problemes avec la version de AutoCAD et MDT2004 ... :question: Bon enfin bref, par contre je n'ai aucun lien entre ces partref et la base de nomenclature ... Ce que je ne comprend pas c'est que j'avais un code en 2000 qui fonctionnait sans probleme, et la y'a pas moyen ... je comprend pas ou sa delire ... :casstet: -
API AutoCAD Mechanical 2004
Ahryman40k a répondu à un(e) sujet de Ahryman40k dans ObjectARX/DBX, C++, .NET, RealDWG
Je suis un peu inquiet, le sample TestPRef plante de la même maniere que mon application :casstet: -
API AutoCAD Mechanical 2004
Ahryman40k a répondu à un(e) sujet de Ahryman40k dans ObjectARX/DBX, C++, .NET, RealDWG
C'est un beau projet qui fonctionne depuis plusieurs mois deja mais malheureusement qui possede une tache sombre dans son fonctionnement avec mechanical ... Je ne suis pas certain de vraiment avoir compris le fonctionnement de la nomenclature et des partRef sous mechanical ( je suis passé un peu vite a l'essentiel ... ) Si tu es d'accord, je veux bien un cours de rattrapage, tu as l'air de bien connaitre le sujet :P -
API AutoCAD Mechanical 2004
Ahryman40k a répondu à un(e) sujet de Ahryman40k dans ObjectARX/DBX, C++, .NET, RealDWG
Franchement je vois pas ce qui pourrait causer l'erreur ... En fait il s'agit toujours de ma fameuse bibli de composant parametriques 2D, suivant la config, si une personne est dans AutoCAD suite a l'insertion d'une piece, je place un bloc avec attributs contenant des infos de nomenclatures ... On peut ensuite faire des traitements sur ces blocs pour contruire une nomenclature ... la dedans il n'y a aucune erreur ... Dans le cas d'AcadM, je charge dynamiquement un autre ARX qui expose une interface COM dont je me sert pour lui demander d'inserer un AcmPartRef dans le dessin avec des infos particulieres ... Je n'ai jusque maintenant jamais rencontré de problemes particuliers a faire des ARX de ce type ... Je vais recompiler les exemples AcadM pour voir, mais il me semble que j'ai egalement eut des soucis avec ... Pourtant c'est bien le SDK extrait du même CD que l'Applie ... Je fais recommencer de 0, car j'en perds mon latin !! ( arf non la mode est au Grec ;) ) -
API AutoCAD Mechanical 2004
Ahryman40k a répondu à un(e) sujet de Ahryman40k dans ObjectARX/DBX, C++, .NET, RealDWG
excuse moi mais je ne comprend pas ou tu veux en venir ?? Acm::ErrorStatus as = AcmSymbol::setSymbolDefaults(); // Je ne peux pas appeler une fonction non static comme ca ??? A moins que tu pensais a "caster" la partref en AcmSymbol ... j'essaierai demain ... merci. -
API AutoCAD Mechanical 2004
Ahryman40k a répondu à un(e) sujet de Ahryman40k dans ObjectARX/DBX, C++, .NET, RealDWG
Bon g teste ton code au point-virgule pret et lui non plus ne fonctionne pas !! detail de ce qui ne vas pas : donc jusque getBomTable returned : es = eNullObjectId le fonctionnement est normal . ensuite on crée la parRef AcmPartRef* pPartRef = new AcmPartRef(); on l'ajoute a l'espace objet voulut appendToBlock(pPartRef,partRefId); // retourne bien eOk !! ici sa ne vas plus !!! as = pPartRef->setSymbolDefaults(); // retourn AcmFail ??????? ici sa se passe bien ... pPartRef->setOrigin(asPnt3d(pt)); pPartRef->close(); es = acmBomMgr->createBomTable(mainBom,targetId); // return eNotApplicable et du coup bye bye :mad2: bon je pige vraiment pas pourquoi ... :casstet: -
API AutoCAD Mechanical 2004
Ahryman40k a répondu à un(e) sujet de Ahryman40k dans ObjectARX/DBX, C++, .NET, RealDWG
merci pour ta reponse rapide :p je vois que le code que tu me proposes n'est pas tres eloigné du code que j'avais testé en premier ... Je vois que tu crées bien la BomTable, c'est bizarre car chez moi cette fonction provoque une assertion , d'ailleurs comme la fonction setOrigin de l'AcmPartRef !! Pourtant je me suis assuré que lib et include sortait bien du même CD que ma version d'autoCAD 2004 installé ... Malgré que je ne crée pas la bomTable, sa n'empeche en rien AutoCAD de bien gerer la liste de nomenclature. Pour placer l'AcmPartRef, je suis donc obligé de passer par transformBy( matrix ), le resultat est identique mais faut construre l'AcGeMatrix3d en plus, c'est ballot ... :D Je testerai toutefois ton code ligne pour ligne demain histoire d'etre sur de mes delires, peut etre qu'il serait temps que je me mette en vacance ;) Pour repondre a tes question, je crée l'AcmPartRef comme dans ton exemple avec un new. Evidement mon reflexe a ete de fermer l'objet dès que je l'avais renseigner correctement, et du coup une reponse du type "eNotOpenForRead " me laissait perplexe puisque je passe un AcDbObjectId. Il etait etonnant de laisser l'objet ouvert en lecture/ecriture pour un appelle a setPartData. dans le doute j'ai donc laisse l'objet ouvert et fermé apres cet appel, mais la même reponse m'a a nouveau ete retournée ??? :exclam: Quel objet pouvais donc ne pas etre ouvert en lecture !!! Bon enfin je teste et je donne mes resultats !! Ca commence un peu a m'ennerver Mechanical !!!! :mad2: -
bonjour, j'espere que quelqu'un pourra m'aider car j'ai vraiment des petits soucis avec AutoCAD mechanical 2004. Le but du jeux est de créé un ACMPartRef ( une espece de bloc avec attributs liée a la BOMTable de mechanical ) Donc sa fonctionne dans la mesure ou j'arrive a le créer et a le placer ou je veux, mais malheureusesement je n'arrive pas a lui fournir les valeurs pour ses attributs. Entre le code exemple, l'ancien code sur la 2000, et le code que j'ai mis en oeuvre dans la 2004, il n'y a strictement aucun rapport. J'ai systematiquement ( a mon idée ) des fonctionnements etrange de l'API mechanical ... j'ai reussit a contourner tous les problemes, le derniers restant est de passer les valeurs des attributs a cet AcmPartRef ... Pour cela l'API met a disposition ( si g tout suivit au jeux ) une methode setPartData( AcDbObjectId, CMapStringttoString ) que j'utilise comme suis : AutoCAD::ErrorStatus es = acmBomMgr->SetPartData( partRefId, valueMap ); qui me retourne a chaque fois eNotOpenForRead !!??!!! j'ai donc ouvert en lecture l'objet pointé par partRefId --> sa me retourne la même chose !!??!! :casstet: g pas d'idee, je vois pas quel autre objet devrait etre ouvert en lecture ???? merci pour vos conseils !
-
ObjectARX 2004, utilisation de acedCommand
Ahryman40k a répondu à un(e) sujet de Ahryman40k dans ObjectARX/DBX, C++, .NET, RealDWG
Super sa marche genial !!! j'avais oublié que l"on pouvait faire ce genre de chose !!! :D Je te remercie Serge, ton aide a ete super precieuse !!! Merci pour tout :D -
ObjectARX 2004, utilisation de acedCommand
Ahryman40k a répondu à un(e) sujet de Ahryman40k dans ObjectARX/DBX, C++, .NET, RealDWG
Est-ce que j'avais dit qu'il y avait tres peu de post !!!??? En fait, c'est plus reactif ici que sur adn !!! :D Bon je reviens a mes moutons !! c'est vrai que je me suis prie la tete avec des bricoles pour exploser mon block, y'a une fonction toute faite qui m'etait sortie de la tete ( faut pas trop collé aux vieux code !! ) : AcDbBlockReference::explodetoOwnerSpace(). Et sa corrige nickel 1 point sur les 2 !! Concernant l'edition des atrributs !! decidement, je pense que mes appels se situe dans un contexte qui ne me permette pas d'utiliser acedCommand ... :casstet: Donc j'ai vu que l'on pouvait faire ce genre de truc acedCommand( RTSTR, "_eattedit", RTSTR, "(handent "a7"), RTNONE ); (par contre je sais pas si sa fonctionne !! ) Si y'a moyen de passer un handle ou un Id a travers sendStringToExecute, ca fera finalement ce que je veux !! Question a part, quand tu parles de : "Sinon, tu peux passer ce genre de chaine : (handent "a7"), où "a7" est un handle que tu composes dynamiquement" << Il s'agit bien du même handle que retourne AcDbObjectId::handle() ??? merci bien ;) -
ObjectARX 2004, utilisation de acedCommand
Ahryman40k a répondu à un(e) sujet de Ahryman40k dans ObjectARX/DBX, C++, .NET, RealDWG
Haaaa merci beaucoup ... je desespere de trouvez pourquoi sa ne fonctionne pas ! Donc en fait c'est en ARX que j'ai refais completement en Visual Studio 7, la structure de l'ARX a etait créé par l'assistant, les commandes sont donc enregistrées par une macro ACED_ARXCOMMAND_ENTRY_AUTO( ). Il s'agit de commande ARX natives donc, pas de LISP et pas d'acadDefun ! Lorsque j'appelle cette commande ainsi cree, j'initialise en fait un serveur COM EXE qui est une bibliotheque de composants mecaniques 2D, ainsi qu'une interface de communication. la bibliotheque fonctionne donc en parallele a AutoCAD et lorsque l'on decide d'inserer une piece, je recoit l'evenement d'insertion et j'insere alors dans le dessin des pieces parametriques ou des blocs avec attributs. Des options de configuration permettent d'editer les blocs avec attributs durant l'insertion et d'exploser le bloc. en fait pour editer les attributs, j'aurai voulu faire : acedCommand( RTSTR, "_eattedit", RTPICKS, myselection, RTNONE ); et pour l'autre acedCommand( RTSTR, "_explode", RTPICKS, myselection, RTNONE ); ce genre de chose fonctionnait avant avec AutoCAD 2000/2000i/2002. Etant donné que cela n'a jamais fonctionné, je me suis rabattu sur l'utilisation de sendStringToExecute en passant le point ou etait positionné le bloc. Malheureusement dans le cas d'entitées supperposées, il existe parfois des problemes et la commande _eattedit prend en compte les mauvaises et l'edition deconne. Peut on passer un jeu de selection a sendStringToExecute ?? si oui comment ?? Sinon comment puis je m'arranger pour acedCommand fonctionne enfin. Je m'interroge sur le fait que l'insertion se deroule en fait en dehors d'un appellle de commande ... erreur de context ?? j'espere etre assez clair ... Merci pour tes conseil ! -
ObjectARX 2004, utilisation de acedCommand
Ahryman40k a posté un sujet dans ObjectARX/DBX, C++, .NET, RealDWG
Bonjour, apparement il s'agit d'un forum reservé pour les questions sur le developpement d'ARX en C++. Si c'est bien le ca ( j'y vois pas beaucoup de post ... ), voici ma question : j'ai definie ma commande perso, a l'interieur de celle-ci, je fais des appels a acedCommand pour faire une edition d'attributs et aussi, exploser des entitées. Cela fonctionnait tres bien dans la version 2002 de cet ARX, bizarement, je n'arrive pas a faire fonctionner correctement cette fonction en 2004. Si quelqu'un a des idées ... NB: Je n'utilise pas le flag ACRX_CMD_TRANSPARENT, comme preciser dans la doc. Sa serait cool si ce forum se developpait, car ce genre de forum en fancais est plutot inexistant ... Bon courage ...