Aller au contenu

Gerer enregidtere avec lisp


Messages recommandés

Posté(e)

Re bonjour ,

 

Je viens de decouvrir grace à vous les lisp , et cela est bien pratique .

 

Je souhaiterais savoir comment "automatiser le enregistrer sous" en choisisant la version ( 2000 pour ma part ) avec dans l'option dxf le select object activé . Car j'ai des probleme de compatibiliter avec d'autre logiciel ( Romidot) .

 

je souhaiterai placer cela a la suite de cette lisp ( les droits d'auteur reviennent à (gile) ) :

 

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

(defun c:JoinPoly (/ ss)

(if (setq ss (ssget '((0 . "ARC,LINE,LWPOLYLINE"))))

(if (or (= 1 (getvar "PEDITACCEPT"))

(vl-every '(lambda (x) (= "LWPOLYLINE" (cdr (assoc 0 (entget x)))))

(vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))

)

)

(command "_.pedit" "_m" ss "" "_j" "_j" "_b" pause "_c" "")

(command "_.pedit" "_m" ss "" "_y" "_j" "_j" "_b" pause "_c" "")

)

)

(princ)

)

 

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

 

Merci

 

 

 

Posté(e)

Si j'ai bien compris tu a deja la routine

alors lance ta routine avec un icone, ou remplace la commande enregistrer sous par ta commande

Encore plus simple, dans Option\Ouvrir et enregstrer, tu peux enregistrer directement

en dxf version 2000 a chaque enregistrement[Edité le 23/11/2006 par ASTERIXII]

 

[Edité le 24/11/2006 par ASTERIXII]

Posté(e)

Quelques lignes à ajouter alors:

 --------------------------
(defun c:JoinPoly (/ ss)
(if (setq ss (ssget '((0 . "ARC,LINE,LWPOLYLINE"))))
(if (or (= 1 (getvar "PEDITACCEPT"))
(vl-every '(lambda (x) (= "LWPOLYLINE" (cdr (assoc 0 (entget x)))))
(vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))
)
)
(command "_.pedit" "_m" ss "" "_j" "_j" "_b" pause "_c" "")
(command "_.pedit" "_m" ss "" "_y" "_j" "_j" "_b" pause "_c" "")
)
)
[b](command "_SAVEAS" "DXF" "VERSION" "2000" "16" "C://MON_DOSSIER//MON_FICHIER.DXF")[/b]
(princ)
) 

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

 

Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier

Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To

GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office

 

PlaquetteDeplianteMars2024.pdf

Posté(e)

Merci pour cette reponse ,

 

Je crois que à la place du "16" , il faut que mettre "0" , je l'ai fait ms la routine ne s'arrete pas , et du coup cela ne marche pas bien .

 

Merci

 

 

Posté(e)

Un peu plus élaboré, il est demandé de spécifier le répertoire où enregistrer le dxf (taper entrer pour le répertoire du dessin par défaut) et le nom du fichier.

C'est le jeu de sélection qui est enregistré, pas le dessin entier.

 

(defun c:ss2dxf (/ path file ss)
 (setq dir "")
 (while (not (vl-file-directory-p dir))
   (if	(= ""
   (setq dir
	  (getstring T
		     (strcat "\nSpécifiez le chemin du répertoire: 				     (getvar "DWGPREFIX")
			     ">: "
		     )
	  )
   )
)
     (setq dir (getvar "DWGPREFIX"))
   )
 )
 (while
   (findfile (strcat dir
	      (setq file (getstring T "\nSpécifiez le nom du fichier: "))
	      ".dxf"
      )
   )
    (princ (strcat "\n\"" file "\" existe déjà."))
 )
 (if (setq ss (ssget))
   (command "_saveas" "dxf" "_v" "2000" "_o" ss "" "16" (strcat dir file ".dxf"))
 )
 (princ)
) 

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

Posté(e)

Encore un peu plus évolué pour rechercher un répertoire

 

(defun getdir( / cdl rep)
 (setq cdl (vlax-create-object "Shell.Application")
       rep (vlax-invoke cdl 'browseforfolder 0 "Sélectionnez la branche de répertoires à traiter" 512 ""))
 (vlax-release-object cdl)
 (vlax-get-property (vlax-get-property rep 'self) 'path)
)

 

Ou plus directement

(getfiled "Fichier de destination" (getvar "dwgprefix") "dxf" (+ 1 16))

 

@+

 

nb : tu peux reprendre ce qui a été dit concernant le saveas

 

@+

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

Bonjour ,

 

Merci pour ces reponses .

Patrick 35 ta proposition m'interresse beaucoup , je ne suis pas doué pour le frape , mais je ne vois comment comment l'intégrer au code de (gile) .

 

Merci encore .

Posté(e)

J'aimerais le coller à la siute de la routine " joinpoly" .

 

Ou pourrias je trouver une doc intérressante sur les autolisp , stp ,?

J'aimerais m'y intérrésser vraiment ...

 

@+

 

  • 3 semaines après...
Posté(e)

re bonjour

 

je souhaiteria faire execter ces 2 lispt l'une dans l'autre donc ds un premier temps la list poly , puis gerer l'enregistrement des fichiers en 2000 ( objet ) en choissisant le repertoire comme indiqué par patrick !!!

 

Merci

 

 

  • 11 ans après...
Invité eklundh80
Posté(e)

Bonjour,

est-il possible de créer un préfixe afin d'enregistrer dans le même répertoire que le fichier

quelque chose comme:

getvar dwgname (ajout préfixe) getvar dwgprefixe

 

?

Invité eklundh80
Posté(e)

Merci Didier,

Je vais voir ça. Je commence à écrire 2-3 lisp et votre site perso est bien détaillé. Par contre je pars de 0 donc le chemin va être long pour moi.

Merci aussi à Patric_35.

Posté(e)

Salut à tous.

 

Je conseillerais aussi, pour bien débuter en Lisp, le formidable "Introduction_a_AutoLISP" de (gile)...

 

Ce document et le site de didier se complètent à merveille...

Windows 11 / AutoCAD 2024

Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net).
Davantage d'avantages, avantagent davantage (Bobby Lapointe).
La connaissance s'accroît quand on la partage (Socrate).
Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)

Invité eklundh80
Posté(e)

Salut à toi,

Je l'ai lu et ça reste chaud à intégrer pour le moment. Il y a tellement de manières de procéder (autolisp, vlisp) que je me perds un peu. Le plus dur reste de trouver la commande ou la variable sur laquelle peut agir le lisp.

Merci pour l'aide.

Posté(e)

Coucou

 

Il n'y a pas TELLLEMENT de manière de faire

Tu verras ça quand tu seras plus costaud en programmation

Je me permets de te conseiller de partir avec un "programme" simple

La question du message originel est quelque peu complexe pour un pur débutant

Il faut TOUJOURS commencer petit ...

Si tu commences la guitare tu feras des gammes dans ta chambre avant de faire des solos devant 10000 personnes, non ?

 

Amicalement

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é