Aller au contenu

Gerer enregidtere avec lisp


Ellionel

Messages recommandés

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

 

 

 

Lien vers le commentaire
Partager sur d’autres sites

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]

Lien vers le commentaire
Partager sur d’autres sites

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

AutoCAD, Revit, GstarCAD, Fisa-CAD, Microsoft Office

PlaquetteCommerciale.pdf

Lien vers le commentaire
Partager sur d’autres sites

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 -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

  • 3 semaines après...
  • 11 ans après...
Invité eklundh80

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

 

?

Lien vers le commentaire
Partager sur d’autres sites

Coucou

 

Pour ajouter un préfixe (ou un suffixe) à une chaîne de caractères (string)

Voir la fonction STRCAT

Pour faire de l'auto-promo : Explications sur mon site

Si ton fichier est nommé "zaza.dwg"

(strcat "prefixe" (getvar "dwgname"))

Renvoie "prefixezaza.dwg"

 

Amicalement

Lien vers le commentaire
Partager sur d’autres sites

Invité eklundh80

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.

Lien vers le commentaire
Partager sur d’autres sites

Coucou

 

J'ai la faiblesse de penser que mon site s'adresse, entre-autres, aux gens qui partent de 0, voire -1 pour certains

Tu peux me contacter par le site et je ferai mon possible pour te dépatouiller

Sinon, reviens à la charge sur CadXP.

 

Amicalement

 

Lien vers le commentaire
Partager sur d’autres sites

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)

Lien vers le commentaire
Partager sur d’autres sites

Invité eklundh80

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.

Lien vers le commentaire
Partager sur d’autres sites

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

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é