Aller au contenu

Messages recommandés

Posté(e)

salut,

 

Voulant approfondir mes connaissance, je me suis mis sur les réacteurs.

Après les variables systèmes, j'ai voulu m'attaquer au clic droit, dans un dessin j'ai

des blocs "etiquette", ceux-si sont liés en fait à des lignes, une ligne = une étiquette.

l'étiquette ne sert qu'a afficher une partie des données xdata. Ces xdata contiennent aussi

un élément qui dit si on affiche ou non l'étiquette (visible ou non).

 

j'ai fait un réacteur sur le clic droit (petit coucou à patrick_35 pour son exemple), si je le fait

sur une étiquette, je lance une dcl avec 2 radio boutons: visible ou invisible. Si je fait ok, je lance

une fonction qui modifie les xdata et doit donc faire un entmod pour mettre à jour la ligne.

et bien le entmod me renvoi toujours nil.

par contre, si je lance la dcl à la main, et je fait ok, le entmod passe et ma ligne est bien à jour.

 

Alors est-ce normal que ca ne marche pas? j'ai même essayé au-lieu de changer les xdata, de modifier

le point d'insertion de mon étiquette (code dxf 10), et là, pareil le entmod marche pas.

 

 

Sinon, j'ai fait des recherches sur le site, mais je n'ai pas vraiment trouver ce que je cherchai et pas trop compris ce que j'ai trouvé. Car j'aimerai ajouter à mon clic droit dans la partie dessin, l'option visible et invisible en plus de dernière commande, couper, coller, options ....

 

 

 

Tous pour lisp, Lisp pour tous!

Avec Revit, cela ne vas trop vite...

Posté(e)

Salut patrick_35!

 

Et un petit entupd après un entmod

 

Et bien non, j'ai aussi essayé cela, mais nada. comme le entmod ne marche, le entupd

disont fonctionne puisqu'il renvoie l'entité, mais les modif faites par l'entmod ne sont pas

présentes . :(

 

Mais comme dit, je ruse avec l'utilisation des vla.

Tous pour lisp, Lisp pour tous!

Avec Revit, cela ne vas trop vite...

Posté(e)

bseb67

 

Avec les réacteurs, il est impossible d'utiliser certaines fonctions, entre autres et sans se limiter à: entget, entmod, entupd, entmake. Il faut obligatoirement passer par les implémentations d'ActiveX (les fonctions vla).

 

Tiré du fichier d'aide:

A callback function is a regular AutoLISP function, which you define using defun. However, there are some restrictions on what you can do in a callback function. You cannot call AutoCAD commands using the command function. Also, to access drawing objects, you must use ActiveX® functions; entget and entmod are not allowed inside callback functions. See Reactor Use Guidelines for more information.

 

Serge

 

Posté(e)

Salut serge,

 

c'est bien ce que je pensais :cool: , et les fonctions vla que j'ai trouvé fonctionnent à merveille.

Et pour la commande c'était pareil, je faisait un (command "zoom" "objet" ...) et là le lisp stoppai.

Donc mystère résolu, mais d'où en vient la raison?

Tous pour lisp, Lisp pour tous!

Avec Revit, cela ne vas trop vite...

Posté(e)

bseb67

 

La vraie raison vient de la façon dont les processus internes communiquent entre-eux. Il ne faut pas oublier qu'un dessin est d'abord une grosse base de données et que ce qe l'on voit à l'éran est une autre base de données distincte (écran virtuel) qui nous permet de sélectionner des objets, de la dragguer, etc. Il y a le noyau d'AutoCAD qui doit communiquer avec ses interfaces de programmation en différents langages ou avec des controles ActiveX qui doivent rouler dans des processus différents. Il y a aussi toutes la série d'événements qu'AutoCAD collecte et envoie à tous les réacteurs. Quand on commence à gratter, il est encore heureux de voir que tout soit toujours synchronisé.

 

Lorsqu'on utilise les fonctions entxxxx, AutoCAD démarre un processus de gestion de base de données qui est incompatible aux autres méthodes, ce qui risquerait d'entrainer des objets mal fermés ou déjà ouvert par un autre processus asynchrone. On a aussi des limitations lorsqu'on ouvre des boites de dialogue en DCL. Si on pouvait mixer les méthodes, on augmenterait de façon signicatives les risques de récursions dans les processus.

 

En C++, le code est plus près du noyau et on dispose généralement de plus de latitude. On dispose en autre d'une fonction SendStringToExecute qui permet de placer une commande de notre choix sur le dessus de la pile des processus en attente et cela permet ainsi de lancer une opération dès qu'AutoCAD est disposé à le faire.

 

Serge

 

 

Posté(e)

Serge,

 

couche tard ou lève tôt? (3:40).

 

Merci pour les détails, je travail sous autocad que depuis février 2007. Donc je suis encore un

débutant ;).

Comme tu parles de C++, je voudrais savoir avec quel outils tu développes pour autocad, et si en c++

tu as plus de possibilités que le lisp? Et dernièrement si on peut créer des threads (processus) en c++? car disposant de machines mutlicoeurs, autant les utiliser à fond.

 

merci.

Tous pour lisp, Lisp pour tous!

Avec Revit, cela ne vas trop vite...

Posté(e)

bseb67

 

Je suis un "Couche normal". J'habite Québec donc 6 heures de décalage.

 

Pour C++, un seul environnement: Visual Studio (Pro)

 

Pour le multi-thread, je ne veux pas faire le rabat-joie mais AutoCAD n'utilise qu'un thread. Pire (ou mieux), pour gérer le multi-documents, Autodesk a inventé le concept de brins (séparation d'un fil) afin d'allouer un brin à chaque dessin.

 

Serge

Posté(e)

Je suis un "Couche normal". J'habite Québec donc 6 heures de décalage.

 

Normal alors, j'ai un ami (pas mai) qui était au québec au mois de mars pendant 15j pour fêter ses 40ans.

Il y avait beaucoup de neige :o . Par contre, c'a ma attristé qu'une ancienne école militaire

ai brulée, car le bâtiment aviat l'air super beau (architecturalement parlant)

 

Si j'ai l'argent, je pense y aller avec lui pour ses 45ans.

 

en tout cas merci pour l'info.

Pour le multi-thread, je ne veux pas faire le rabat-joie mais AutoCAD n'utilise qu'un thread

 

C'est dommage, mais compréhensible, car faut éviter les surcouches à bug.

 

 

 

[Edité le 20/8/2008 par bseb67]

Tous pour lisp, Lisp pour tous!

Avec Revit, cela ne vas trop vite...

Posté(e)

bseb67

 

J'avais déduit que tu avait 41 ans à cause du 67 dans le nom.

 

Oui, c'est dommage que le manège militaire ait brûlé. Le gouvernement fédéral a promi qu'il allait le faire reconstruire. On y retrouvait l'une des plus anciennes prisons de la ville de Québec (et non, je n'y ai pas résidé).

 

Oui, on a reçu de la neige ... Un total de 558cm. Si je savais comment ajouter des photos, je montrerais le devant et l'arrière de notre maison. Pour bien s'imaginer ce que ça donne (car le vent fait empirer les choses), on a un panier de basket-ball dans la cour. Le panier est à 10 pieds et il y a environ 2 pieds de plus pour le dessus du panneau (soit disons 4 mètres). Le sommet de la butte de neige dépassait ce panneau d'environ 1 mètre. Je me suis réveillé un matin et il faisait complètement noir dans la maison. Il a fallut que j'aille dégager la neige qui bloquait les fenêtres. J'en connais un qui ne pouvait même plus sortir par la porte. Il a fallut qu'il se fasse un tunnel en transportant la neige jusqu'à dans sa baignore (et tout ceci avec photos à l'appui).

 

Je lance l'invitation à tous. Si vous venez à Québec, me prévenir à l'avance pour que je me libère. Je vous ferai visiter ... (comme Tramber m'a promi de me faire visiter Colmar)

 

 

Serge

Posté(e)

salut serge!

 

 

Euh, non, je n'ai pas 41 ans, le 67 c'est par ce que j'habite dans le département 67 en france.

Pour mettre des photos il faut tout d'abord déposer tes photos sur un site web ou des pages persos.

Moi je suis chez free pour mon accès web, et j'ai donc un site à mon nom bseb67.free.fr.

Et là j'ai déposé mes images, après lorsque tu tapes un message, il suffit de cliquer sur le petit icone qui représente un écran et un palette de dessin (à coté de l'icone représentant la terre), et entre les deux balises tu colles l'adresse web de l'image ex: http://bseb67.free.fr/.../mon_image.jpg

Voilà.

 

Pour la hauteur de neige j'avais vu les photos de mon ami, là où il était hébergé, il devait sortir par la terrasse au premier étage, puis ils ont dégagé la porte d'entrée.

 

a+

Tous pour lisp, Lisp pour tous!

Avec Revit, cela ne vas trop vite...

Posté(e)

bseb67

 

Merci pour le tuyau. Il me semble cependant avoir vu des photos à même les messages et non en référence (bien que je ne trouve pas que ce soit une bonne idée puisqu'un jour le site ne seraplus utilisable).

 

Serge

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é