Aller au contenu

équivalent lisp de \"inserer\"


Messages recommandés

Posté(e)

Salut,

 

Dans un dessin j'ai des blocs, avec des attributs, je souhaiterai redéfinir ces blocs en insérant la nouvelle version (à partir d'un fichier). Mais comme j'ai un traitement avant cela et après la maj à faire, et comme le fichier du bloc n'est pas toujours au même endroit, je souhaitais faire en lisp l'équivalent de inserer, mais le problème c'est que j''obtiens pas de boite de dialogue avec (command "inserer"), il attend un message console. J'ai regardé dans les variables *dia* mais cela donne rien.

Merci

 

 

bseb

Tous pour lisp, Lisp pour tous!

Avec Revit, cela ne vas trop vite...

Posté(e)

Salut,

Comme beacoup de commande Autocad, pour ne pas avoir de boite de dialogue, il faut mettre un "-" devant la commande :

-inserer

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

salut Bred,

 

C'est l'inverse que je veux, en mode console =>

Commande: inserer => affiche une boite de dialogue

 

Mais moi je lance un lisp, à cause du pré-traitement et post-traitement, je dois faire (command "....")

mais le "command "inserer") me donne l'équivalent de -inserer ou inserm

 

Je vais voir en passant par un script pour l'insertion.

Tous pour lisp, Lisp pour tous!

Avec Revit, cela ne vas trop vite...

Posté(e)

Avec un petit script ca marche.

 

dans la fonction lisp j'appel le script qui contient:

(vla-sendcommand vlades "inserer ")

 

vlades est un pointeur sur le dessin ouvert initialisé dans ma fonction lisp

Pour rappel:

(setq NomDessin (getvar "DWGNAME"))

(setq vlades (vla-item (vla-get-documents (vlax-get-acad-object)) NomDessin))

 

Que le Lisp soit avec toi!

 

 

bseb

Tous pour lisp, Lisp pour tous!

Avec Revit, cela ne vas trop vite...

Posté(e)

Non, ca ne changera rien en lisp, le "-" est necessaire en script.

Ou alors éventuellement si il y a un chemin à spécifier (à vérifier).

 

(command "inserer" nomdubloc point 1 1 0)

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

J'avoue avoir du mal à comprendre :

je souhaitais faire en lisp l'équivalent de inserer, mais le problème c'est que j''obtiens pas de boite de dialogue avec (command "inserer"), il attend un message console

Si tu veux insérer un bloc en lisp sans boite de dialogue, c'est -inserer.

 

je souhaiterai redéfinir ces blocs en insérant la nouvelle version

Si tu veux le mettre à jour, il faut mettre un "=" à la fin du nom du bloc.

 

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Oups, je voulais juste répondre au message de Bred.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)
Non, ca ne changera rien en lisp, le "-" est necessaire en script.

Ah oui, tiens...

à force de faire du vlisp on en oublis l'autolisp...

désolé !...

j'ai vraiment répondu de travers ! :calim:

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Je dois mal me faire comprendre :casstet:

 

Je veux que la boite de dialogue s'affiche en étant dans le lisp. Pour le script ce n'est pas bon.

Car mon lisp continu à s'exécuter lorsque je l'appelle.

le code principal est celui-ci:

; sauvegarde des attributs

(save_attrib)

 

; on insère la nouvelle version du bloc

; et c'est là mon problème: (command "inserer") ne lance pas la boite de dialogue

; et si je lance le script ici, il fait le attsync et load_attrib avant que j'insère le bloc

; et ce n'est pas ce que je veux

:( :( :( :(

 

; on synchronise les attibuts

(command "attsync" "" (entlast) "oui" )

 

; on lance la chargement des attributs

(load_attrib)

Tous pour lisp, Lisp pour tous!

Avec Revit, cela ne vas trop vite...

Posté(e)

Pu... de truc, ca ma bouffé le texte.

 

Je veux en lisp ouvrir la boite de dialogue de "inserer", mon lisp se résume à cela:

 

; sauvegarde des attributs

(save_attrib)

 

;insertion de la nouvelle version du bloc

; c'est là que je cherche: (command "inserer") n'ouvre pas la boite de dialogue

; et si je lance le script qui le fait, mon lisp exécute le attsync et load_attrib avant

;même que j'insère le nouvelle version du bloc

 

;synchro des attributs

(command "attsync" "" (entlast) "oui" )

 

;rechargement des attributs

(load_attrib)

Tous pour lisp, Lisp pour tous!

Avec Revit, cela ne vas trop vite...

Posté(e)
c'est là que je cherche: (command "inserer") n'ouvre pas la boite de dialogue

Je ne vois pas ce que tu veus faire avec la boite de dialogue que tu ne peux faire (si tu veux en automatique) avec la console....

ou fait des pauses ....

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

La boite de dialogue c'est pour chercher le fichier contenant le bloc.

 

Comme mon lisp doit être exécutable sur n'importe quel dessin, avec n'importe quelle mise à jour de bloc.

 

Je te remercie pour le temps d'aide.

 

Sinon, j'ai une autre question, ca t'es déjà arrivé qu'autocad se ferme "tout seul", càd je lance autocad (2007) quelque soit la touche que je frappe ou le raccourci dans le menu que je clic avec la souris, autocad se ferme. Deux collègues ont déjà eu se problème, à part une réinstallation, j'ai rien trouvé. Le pire c'est que l'on ne sait pas d'où cela vient. car on a rien fait entre le moment où ca marchait et celui où ca marchai plus (a part dessiner)

Tous pour lisp, Lisp pour tous!

Avec Revit, cela ne vas trop vite...

Posté(e)

Utilises (getfiled)

 

Ex:

(setq blk (getfiled "Sélection d'un bloc externe" "" "dwg" 2))

(command "_.-insert" blk "_none" '(0.0 0.0 0.0) 1.0 1.0 0.0)

 

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)
La boite de dialogue c'est pour chercher le fichier contenant le bloc.

J'ai l'impression qu'il y a un quiprocos : en fait tu ne veux pas inserer un bloc à partir d'une ibliothèque, tu veux aller chercher un bloc contenus dans un plan : ça, tu peux le faire avec le design-center...

et ce n'est pas possible (que je sache) en passant par "inserer", sauf si tu n'as pas de bibliothèque, que tu veux inserer un fichier contenant ce bloc afin qu'il soit dans la collection du nouveau, effacer le fichier précédemet inserer, et inserer le bloc ... c'est tordus....

 

Pour ton problème de fermeture, ça ne m'est jamais arrivé.

As-tu le SP2 ?

Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...

Posté(e)

Je viens de résoudre mon premier problème, il faut bien que je passe par un script, sauf

que j'ai du coupée en deux ma fonction principale main en main et main1 et mettre dans le script ceci: (vla-sendcommand vlades "inserer (main1) ")

 

 

:exclam:

 

 

Oui, on a bien sp2 d'installé. Depuis 1 mois, chaque semaine il y a un autre bug chez quelqu'un dans la boite. Fermeture à cause d'un problème de licence, celle citée avant, problème de police qui font planté autocad,...

A ce demandé si un truc pourri circule est flingue les autocad pour que l'on passe à la 2008 :casstet:

 

Merci encore. Et je sais que par écris c'est pas tjs facile de se faire comprendre.

 

bseb

Tous pour lisp, Lisp pour tous!

Avec Revit, cela ne vas trop vite...

Posté(e)

Salut,

 

pour forcer l'affichage des boites de dialogue avec les commandes : _ATTDEF, _ATTEXT, _BHATCH, _BLOCK, _COLOR, _IMAGE, _IMAGEADJUST, _INSERT, _LAYER, _LINETYPE, _MTEXT, _PLOT, _RENAME, _STYLE, _TOOLBAR, et _VIEW, il faut faire (initdia) juste avant le (command "_.insert")

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

Posté(e)

Merci gile pour l'info, je ne connaissais pas (initdia), mais ca marche. Cela ouvre bien la boite dialogue "insérer".

 

Bonuscad, j'ai essayé ton (getfiled...), cette astuce serai mieux si la définition du bloc serai mis à jour. Son avantage par rapport à insérer, c'est que lisp fonctionne à 100%:

Pour (command "inserer"), si on coche une des saisie à l'écran (position d'insertion, échelle ou rotation), la console autocad attend les saisies, pour l'instant ca va, mais le souci c'est que le lisp continue directement est balance alors la suite du code dans la console :( .

 

Le (getfiled..) permet d'insérer par défaut à un point donné (au pire un dcl de saisie de coordonnées peut être fait), il suffit d'activer la boite de dialogue des attributs et le tour est joué. Maintenant il faudrai juste qu'autocad sache que je charge un fichier avec une nouvelle version du bloc.

 

 

Tous pour lisp, Lisp pour tous!

Avec Revit, cela ne vas trop vite...

Posté(e)
Maintenant il faudrai juste qu'autocad sache que je charge un fichier avec une nouvelle version du bloc.

 

 

TBLSEARCH ;)

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)

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é