Lisp impressionant
5 participants
Le génie climatique de A à Z :: Logiciels, DAO et développement informatique :: Programmation et applications
Page 1 sur 1
Lisp impressionant
J'ai trouvé un lisp incroyable : il permet de faire un comparatif entre un plan à l'indice a et l'indice b en créant un nouveau plan composé de 3 calques : ce qui a été modifié, ce qui a été ajouté et ce qui a été supprimé.
Pour moi, qui fait surtout de la synthèse, c'est très utile.
Il peut également permettre de créer des bulles de révision sur son propre plan lorsqu'on a oublié de noter au fur et à mesure.
Si ça vous intéresse...
Pour moi, qui fait surtout de la synthèse, c'est très utile.
Il peut également permettre de créer des bulles de révision sur son propre plan lorsqu'on a oublié de noter au fur et à mesure.
Si ça vous intéresse...
mikl- Assistant
- Nombre de messages : 19
Age : 53
Localisation : un peu partout
Date d'inscription : 10/06/2010
Re: Lisp impressionant
Bonjour,
Cela m'intéresse grandement. J'arrive avec beaucoup de retard mais qui sait ...
Merci d'avance,
Cela m'intéresse grandement. J'arrive avec beaucoup de retard mais qui sait ...
Merci d'avance,
MLe- Assistant
- Nombre de messages : 4
Age : 59
Localisation : Belgique
Date d'inscription : 05/07/2014
Re: Lisp impressionant
Bonjour,
J'avais zappé ce post. En effet, le lien pourrait etre rendu public cela permettrait à chacun de l'utiliser.
Merci d'avance.
J'avais zappé ce post. En effet, le lien pourrait etre rendu public cela permettrait à chacun de l'utiliser.
Merci d'avance.
Re: Lisp impressionant
Je vais donc vous coller le texte du lisp crée par Vincent Dufournaud (Gloire à lui) :
A copier coller dans un fichier .txt puis renommer en .lsp
Le commande pour lancer la comparaison est : cdwg
;;;*****************************************************************************
;;;*****************************************************************************
;;;************ ** COMPARE 2 PLANS ** ****************
;;;*****************************************************************************
;;;****** *** créé le 16/04/08 par Vincent Dufournaud *** ******
;;;*****************************************************************************
;;;*****************************************************************************
(vl-load-com)
(defun c:cdwg (/ app cdoc fichier old name sp1
sp2 lst2 e obj lstmodif lstajout
lstsuppr lst obj sup
)
(setq ACADLSPASDOC (getvar "ACADLSPASDOC"))
(setvar "ACADLSPASDOC" 0)
(setq app (vlax-get-acad-object)
cdoc (vla-get-activedocument app)
fichier (getfiled
"Sélection de l'ancien plan"
(strcat (vl-filename-directory (vla-get-fullname cdoc))
"/"
)
"dwg"
4
)
old (vla-open (vla-get-documents app) fichier)
name (vla-get-fullname cdoc)
s (getvar "date")
t1 (* 86400.0 (- s (fix s)))
)
(vla-saveas
cdoc
(strcat (substr name 1 (- (strlen name) 4))
" Modications depuis "
(vla-get-name old)
)
)
(setq sp1 (vla-get-modelspace cdoc)
sp2 (vla-get-modelspace old)
)
(vlax-for lay (setq layers (vla-get-layers cdoc))
(vlax-put lay 'color 253)
(vla-put-lock lay :vlax-false)
)
(vlax-for lay (vla-get-layers old)
(vla-put-lock lay :vlax-false)
)
(vlax-for ent sp2
(setq lst2 (cons (cons (vla-get-handle ent) ent) lst2))
)
(defun equal-objects (obj1 obj2)
(vl-every
(function
(lambda (p)
(or (not (vlax-property-available-p obj1 p))
(equal (vlax-get obj1 p)
(vlax-get obj2 p)
1e-9
)
)
)
)
'(ObjectName Center Radius Coordinates
StartPoint EndPoint StartAngle EndAngle
MajorAxis RadiusRatio TextString InsertionPoint
Width Height
)
)
)
(vlax-put (vla-add layers "0.Ajouts") 'color 172)
(vlax-put (vla-add layers "0.Modications") 'color 10)
(vlax-put (vla-add layers "0.Suppressions") 'color 92)
(vlax-for ent sp1
(vla-put-color ent 256)
(if (setq e (assoc (vlax-get ent 'handle) lst2))
;;vérifie si le handle existe sur les 2 plans
(progn
(cond ((not (equal-objects ent (cdr e)))
(vla-put-layer ent "0.Modications")
)
)
(setq lst2 (vl-remove e lst2))
)
(vla-put-layer ent "0.Ajouts")
)
)
(if lst2
(foreach n lst2
(vla-put-layer
(car (vlax-invoke old 'CopyObjects (list (cdr n)) sp1))
"0.Suppressions"
)
)
)
(vla-close old)
(vla-purgeall cdoc)
(vla-save cdoc)
(setq s (getvar "date")
t2 (* 86400.0 (- s (fix s)))
tt (- t2 t1)
)
(if (> tt 60)
(progn
(setq sec (rem tt 60)
mn (strcat (rtos (/ (- tt sec) 60) 2 0) " mn ")
sec (strcat (rtos sec 2 0) " s")
)
)
(progn
(setq sec (strcat (rtos tt 2 0) " s")
mn "0 mn "
)
)
)
(alert
(strcat
"Plan de repérages des modifications\n\nLes ajouts sont en vert\nLes modifications en rouge\nLes suppressions en bleu\n\nTemps d'éxecution : "
mn
sec
)
)
(setvar "ACADLSPASDOC" ACADLSPASDOC)
) ;defun
A copier coller dans un fichier .txt puis renommer en .lsp
Le commande pour lancer la comparaison est : cdwg
;;;*****************************************************************************
;;;*****************************************************************************
;;;************ ** COMPARE 2 PLANS ** ****************
;;;*****************************************************************************
;;;****** *** créé le 16/04/08 par Vincent Dufournaud *** ******
;;;*****************************************************************************
;;;*****************************************************************************
(vl-load-com)
(defun c:cdwg (/ app cdoc fichier old name sp1
sp2 lst2 e obj lstmodif lstajout
lstsuppr lst obj sup
)
(setq ACADLSPASDOC (getvar "ACADLSPASDOC"))
(setvar "ACADLSPASDOC" 0)
(setq app (vlax-get-acad-object)
cdoc (vla-get-activedocument app)
fichier (getfiled
"Sélection de l'ancien plan"
(strcat (vl-filename-directory (vla-get-fullname cdoc))
"/"
)
"dwg"
4
)
old (vla-open (vla-get-documents app) fichier)
name (vla-get-fullname cdoc)
s (getvar "date")
t1 (* 86400.0 (- s (fix s)))
)
(vla-saveas
cdoc
(strcat (substr name 1 (- (strlen name) 4))
" Modications depuis "
(vla-get-name old)
)
)
(setq sp1 (vla-get-modelspace cdoc)
sp2 (vla-get-modelspace old)
)
(vlax-for lay (setq layers (vla-get-layers cdoc))
(vlax-put lay 'color 253)
(vla-put-lock lay :vlax-false)
)
(vlax-for lay (vla-get-layers old)
(vla-put-lock lay :vlax-false)
)
(vlax-for ent sp2
(setq lst2 (cons (cons (vla-get-handle ent) ent) lst2))
)
(defun equal-objects (obj1 obj2)
(vl-every
(function
(lambda (p)
(or (not (vlax-property-available-p obj1 p))
(equal (vlax-get obj1 p)
(vlax-get obj2 p)
1e-9
)
)
)
)
'(ObjectName Center Radius Coordinates
StartPoint EndPoint StartAngle EndAngle
MajorAxis RadiusRatio TextString InsertionPoint
Width Height
)
)
)
(vlax-put (vla-add layers "0.Ajouts") 'color 172)
(vlax-put (vla-add layers "0.Modications") 'color 10)
(vlax-put (vla-add layers "0.Suppressions") 'color 92)
(vlax-for ent sp1
(vla-put-color ent 256)
(if (setq e (assoc (vlax-get ent 'handle) lst2))
;;vérifie si le handle existe sur les 2 plans
(progn
(cond ((not (equal-objects ent (cdr e)))
(vla-put-layer ent "0.Modications")
)
)
(setq lst2 (vl-remove e lst2))
)
(vla-put-layer ent "0.Ajouts")
)
)
(if lst2
(foreach n lst2
(vla-put-layer
(car (vlax-invoke old 'CopyObjects (list (cdr n)) sp1))
"0.Suppressions"
)
)
)
(vla-close old)
(vla-purgeall cdoc)
(vla-save cdoc)
(setq s (getvar "date")
t2 (* 86400.0 (- s (fix s)))
tt (- t2 t1)
)
(if (> tt 60)
(progn
(setq sec (rem tt 60)
mn (strcat (rtos (/ (- tt sec) 60) 2 0) " mn ")
sec (strcat (rtos sec 2 0) " s")
)
)
(progn
(setq sec (strcat (rtos tt 2 0) " s")
mn "0 mn "
)
)
)
(alert
(strcat
"Plan de repérages des modifications\n\nLes ajouts sont en vert\nLes modifications en rouge\nLes suppressions en bleu\n\nTemps d'éxecution : "
mn
sec
)
)
(setvar "ACADLSPASDOC" ACADLSPASDOC)
) ;defun
mikl- Assistant
- Nombre de messages : 19
Age : 53
Localisation : un peu partout
Date d'inscription : 10/06/2010
Re: Lisp impressionant
Bonjour,
Ce post est très intéressant mais je débute en autocad. J'ai fais le .lsp et je lance la commande .cdwg mais autocad me marque commande inconnue.
Pourrais tu faire un petit tuto
MErci
Ce post est très intéressant mais je débute en autocad. J'ai fais le .lsp et je lance la commande .cdwg mais autocad me marque commande inconnue.
Pourrais tu faire un petit tuto
MErci
Re: Lisp impressionant
Tu dois tout d'abord charger ce lisp.
Dans autocad, tu cliques sur outils puis tu descend jusqu'à charger une application
Ensuite, quand tu taperas cdwg, il te demandera quel plan tu veux comparer
La difficulté c'est soit tu prend indice A et tu compare avec le B
Soit tu prend le B et tu le compare à l'indice A.
C'est une gymnastique intellectuelle à faire qui n'est pas si simple étant donné qu'il crée un 3eme plan avec des couleurs pour ce qui a été ajouté, supprimé ou modifié
Dans autocad, tu cliques sur outils puis tu descend jusqu'à charger une application
Ensuite, quand tu taperas cdwg, il te demandera quel plan tu veux comparer
La difficulté c'est soit tu prend indice A et tu compare avec le B
Soit tu prend le B et tu le compare à l'indice A.
C'est une gymnastique intellectuelle à faire qui n'est pas si simple étant donné qu'il crée un 3eme plan avec des couleurs pour ce qui a été ajouté, supprimé ou modifié
mikl- Assistant
- Nombre de messages : 19
Age : 53
Localisation : un peu partout
Date d'inscription : 10/06/2010
Re: Lisp impressionant
Merci pour ces précisions mais lorsque je lance la commande sous autocad CDWG une fenetre s'ouvre et la je choisi mon plan mais comment fais tu pour choisir l'autre plan
Re: Lisp impressionant
Tu dois ouvrir l'indice A puis lancer la commande pour comparer avec l'indice B (ou l'inverse, c'est toi qui vois)
mikl- Assistant
- Nombre de messages : 19
Age : 53
Localisation : un peu partout
Date d'inscription : 10/06/2010
Super
Merci pour ce partage.
Je viens de tester sur Autocad 2019 et Autocad MEP 2019, ça fonctionne très bien !
Un grand merci
Je viens de tester sur Autocad 2019 et Autocad MEP 2019, ça fonctionne très bien !
Un grand merci
asaussereau- Assistant
- Nombre de messages : 2
Age : 37
Localisation : LE MANS
Date d'inscription : 21/03/2019
Le génie climatique de A à Z :: Logiciels, DAO et développement informatique :: Programmation et applications
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum