-
Compteur de contenus
340 -
Inscription
-
Dernière visite
-
Jours gagnés
1
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par vinz34
-
Salut, Rgarde si tu as des applications chargées au démarrage (tapes APPLOAD). Si c'est le cas, enlève les et réessaies. Bon courage
-
Salut, sous autocad 2009 tu as cette possibilité aussi, je ne sais pas comment ds'appelle la commande mais je sais qu'elle existe.
-
Re, Il te faut mettre la valeur qui te correspond à Fieldeval (pense à cumuler les valeurs). Regarde dans l'aide pour en voir les possibilités.
-
Salut, C'est la variable fielddisplay
-
Salut, Il y aussi ATTDIA pour les boîtes des attributs .......
-
Salut, Merci (gile), dès que je trouve un moment je l'achève (j'ai commencé à comparer les blocs concernés dans les table des fichiers).
-
Salut, J'en ai encore fait une ce matin et je n'ai pas de problème les Xrefs sont bien liées.
-
OK, je l'intègre avec des tests supplémentaires pour les blocs (recherche dans la table. Je sais le faire avec le code dxf, mais je vais le faire en vl (j'apprends). Merci.
-
Salut, Autospeed, le coup des couleurs est un classique, ça me rappelle celui des fenêtres. J en'y attache que peu d'importance, le fait de n'avoir que 3 calques permet de le gérer simplement. Lili, je n'ai pas approfondi sur les blocs, je vais l'intégrer (vérifier dans la table). Quand aux erreurs, je ne vois pas je test encore... (gile), merci pour ton aide. Je rajouterai les props pour les blocs. Je tiens à vérifier le 'ObjectName, j'ai rencontré un cas ou le handle était identique mais pas le type d'entité. J'avais commencé par des tests par type d'entité et la différence niveau temps n'est pas perceptible.
-
Salut, Dans l'espace objet je ne vois comment ce serait possible. En revanche dans l'espace papier c'est possible.
-
Re, Quand tu dis : Tu ne veux pas visualiser les objets supprimés si je comprends bien. Je pense qu'il est quand même parfois utile de les voir (éventuellement ça peut être une option au lancement de la routine).
-
Salut, Maintenant j'espère que tout le monde ne va se contenter de simplement prendre le code. J'attends des retours et des remarques pour l'améliorer.
-
Merci beaucoup encore une fois pour ta rapidité et surtout ton efficacité. J'ai placé ici la routine pour laquelle j'avais besoin de ces précision.
-
Bonjour, A force de recevoir des mises à jour plans avec une seule modification annoncée alors que d'autres ne le sont pas (oubli volontaire ou non), je me suis penché sur la réalisation d'une routine qui permet de comparer 2 plans. Son fonctionnement est simple, le nouveau plan doit être ouvert, le lisp chargé lancer la commande cdwg. D'abord vous êtes invité à sélectionner l'ancien plan de réference puis il crée un plan sur lequel ressortent les modifications, ajouts ou suppressions. Le code est encore brut de décoffrage et le temps d'exécution parfois long sur un gros plan (env. 7mn pour 50000 entités). ;;;***************************************************************************** ;;;***************************************************************************** ;;;************ ** 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 [Edité le 17/4/2008 par vinz34] [Edité le 29/4/2008 par vinz34]
-
Salut, Merci, ça va franchement me raccourcir le code j'étais en train de lister les propriétés pour chaque type d'entité. Je test ça.
-
Bonjour, Existe-t-il une méthode pour comparer les propriétés de 2 entités sans faires des tests par type d'entité avec des vla-get* pour chaque propriété sur les deux : (defun va (prop /) (vlax-safearray->list (vlax-variant-value prop)) ) (setq lst (list (cons "AcDbCircle" (list '(va (vla-get-center n)) '(vla-get-radius n))) (cons "AcDbPolyline" (list '(va (vla-get-coordinates n)))) (cons "AcDbLine" (list '(va (vla-get-startpoint n)) '(va (vla-get-endpoint n)))) (cons "AcDbArc" (list '(va (vla-get-center n)) '(vla-get-radius n) '(vla-get-startangle n) '(vla-get-endangle n))) (cons "AcDbEllipse" (list '(va(vla-get-center n)) '(va(vla-get-majoraxis n)) '(vla-get-radiusratio n))) (cons "AcDbSolid" (list '(va (vla-get-coordinates n)))) (cons "AcDbText" (list '(vla-get-textstring n) '(va(vla-get-insertionpoint n)) '(vla-get-height n))) (cons "AcDbMText" (list '(va(vla-get-insertionpoint n)) '(vla-get-width n) '(vla-get-textstring n))) ))
-
Salut, Merci (gile), j'ai adopté le vlax-invoke !
-
Bonjour, Je cherche à copier une entité depuis un autre dessin ouvert. J'ai essayé avec vla-copy, mais je pense que ce n'est pas la bonne méthode Si quelqu'un sait faire, je suis preneur.
-
Salut, Si tu as des objets en couleurs vraies, ils ressortent en couleur même avec le style de tracé monochrome. Tu dois les passer en couleur de l'index.
-
Merci (gile)pour ces premiers retours, j'ai corrigé les (entlast) dans les commandes vla*. J'ai travaillé sur ce code avec la version 2008, puis la 2009 depuis une semaine.
-
Un petit essai pour m'initier au vlisp : (defun c:niv (/ sslist c e) (setvar "pickstyle" 1) ;;;Test de l'unité de dessin dans la configuration du dessin (while (not c) (if (and (< (setq c (getvar "insunits")) 7) (> c 3)) (cond ((= c 4) (setq c 1)) ((= c 5) (setq c 10)) ((= c 6) (setq c 1000))) (progn (setq c nil) (initget 2 "me cm mm") (setq unite (getkword "\nUnité du dessin : [ME/CM/MM]")) (cond ((= unite "me") (setvar "insunits" 6)) ((= unite "cm") (setvar "insunits" 5)) ((= unite "mm") (setvar "insunits" 4)) )))) ;;;choix de l'échelle ou doit être insérée la coupe (if (> (atof (substr (getvar "acadver") 1 4)) 17) (if (= (getvar "cannoscale") "1:1") (setq ech (/ (float(getint "échelle de la coupe : 1/")) c)) ; cannoscale = "1:1" (setq ech (/ 1 (getvar "cannoscalevalue"))) ; cannoscale /= "1:1" ) ; acadver > 16 (_if cannoscale) (setq ech (/ (float(getint "échelle de la coupe : 1/")) c)); acadver < 16 ) ;_test acadver (progn (setq pt (getpoint "Spécifiez le point d'insertion : ") nivref (atof (getstring "Précisez son niveau : ")) doc (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object))) ) (vla-addpoint doc (vlax-3d-point (list 0 nivref))) (vla-put-visible (vlax-ename->vla-object (entlast)) 0) (setq sslist (cons (entlast) sslist)) (vla-addtext doc (strcat "%<\\AcObjProp Object(%<\\_ObjId " (itoa (vla-get-objectid (vlax-ename->vla-object (entlast)))) ">%).Coordinates \\f \"%lu2%pt2%pr2\">%" ) (vlax-3d-point (list 0 0 0)) (* ech 2)) (vla-put-alignment (vlax-ename->vla-object (entlast)) 13) (vla-put-TextAlignmentPoint (vlax-ename->vla-object (entlast)) (vlax-3D-Point (list (car pt) (+ (* ech 3) (cadr pt))))) (setq sslist (cons (entlast) sslist)) (vla-addsolid doc (vlax-3d-point pt) (vlax-3d-point (polar pt (/ pi 3) (* ech 3))) (vlax-3d-point (polar pt (/ (* 2 pi) 3) (* ech 3))) (vlax-3d-point (polar pt (/ (* 2 pi) 3) (* ech 3))) ) (setq sslist (cons (entlast) sslist)) );progn (defun makegroup (lst / dict ind) (setq dict (dictsearch (namedobjdict) "ACAD_GROUP") ind "GRP1" ) (while (member (cons 3 ind) dict) (setq ind (strcat "GRP" (itoa (1+ (atoi (substr ind 4))))))) (dictadd (cdr (assoc -1 dict)) ind (entmakex (append (list '(0 . "GROUP") '(100 . "AcDbGroup") '(300 . "") '(70 . 1) '(71 . 1)) (mapcar (function (lambda (x) (cons 340 x))) lst) )))) (makegroup sslist) ) Le makegroup sort d'une routine de Gile. J'ai essayé en vl mais ce n'est pas évident. [Edité le 7/4/2008 par vinz34]
-
Un petit essai pour m'initier au vlisp : (defun c:niv (/ sslist c e) ;;;Test de l'unité de dessin dans la configuration du dessin (while (not c) (if (and (< (setq c (getvar "insunits")) 7) (> c 3)) (cond ((= c 4) (setq c 1)) ((= c 5) (setq c 10)) ((= c 6) (setq c 1000)) ) (progn (setq c nil) (initget 2 "me cm mm") (setq unite (getkword "\nUnité du dessin : [ME/CM/MM]")) (cond ((= unite "me") (setvar "insunits" 6)) ((= unite "cm") (setvar "insunits" 5)) ((= unite "mm") (setvar "insunits" 4)) ) ) ) ) ;;;choix de l'échelle ou doit être insérée la coupe (if (> (atoi (substr (getvar "acadver") 1 2)) 16) (if (= (getvar "cannoscale") "1:1") (setq ech (/ (float(getint "échelle de la coupe : 1/")) c)) ; cannoscale = "1:1" (setq ech (/ 1 (getvar "cannoscalevalue"))) ; cannoscale /= "1:1" ) ; acadver > 16 (_if cannoscale) ((setq ech (/ (float(getint "échelle de la coupe : 1/")) c))); acadver < 16 ) ;_test acadver (progn (setq pt (getpoint "Spécifiez le point d'insertion : ") nivref (atof (getstring "Précisez son niveau : ")) doc (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object))) ) (vla-addpoint doc (vlax-3d-point (list 0 nivref))) (vla-put-layer (entlast) "0") (vla-put-visible (vlax-ename->vla-object (entlast)) 0) (setq sslist (cons (entlast) sslist)) (vla-addtext doc (strcat "%<\\AcObjProp Object(%<\\_ObjId " (itoa (vla-get-objectid (vlax-ename->vla-object (entlast)))) ">%).Coordinates \\f \"%lu2%pt2%pr2\">%" ) (vlax-3d-point (list 0 0 0)) (* ech 2) ) (vla-put-alignment (entlast) 13) (vla-put-TextAlignmentPoint (entlast) (vlax-3D-Point (list (car pt) (+ (* ech 3) (cadr pt)))) ) (vla-put-layer (entlast) "0") (setq sslist (cons (entlast) sslist)) (vla-addsolid doc (vlax-3d-point pt) (vlax-3d-point (polar pt (/ pi 3) (* ech 3))) (vlax-3d-point (polar pt (/ (* 2 pi) 3) (* ech 3))) (vlax-3d-point (polar pt (/ (* 2 pi) 3) (* ech 3))) ) (vla-put-layer (entlast) "0") (setq sslist (cons (entlast) sslist)) );progn (defun makegroup (lst / dict ind) (setq dict (dictsearch (namedobjdict) "ACAD_GROUP") ind "GRP1" ) (while (member (cons 3 ind) dict) (setq ind (strcat "GRP" (itoa (1+ (atoi (substr ind 4)))))) ) (dictadd (cdr (assoc -1 dict)) ind (entmakex (append (list '(0 . "GROUP") '(100 . "AcDbGroup") '(300 . "") '(70 . 1) '(71 . 1)) (mapcar (function (lambda (x) (cons 340 x))) lst) ) ) ) ) (makegroup sslist) ) Le makegroup sort d'une routine de Gile. J'ai essayé en vl mais ce n'est pas évident. Edit : désolé je me suis trompé de forum... A suivre ici. [Edité le 2/4/2008 par vinz34]
-
Bonjour, Le temps d'une rubrique pour Autocad 2009 est arrivé. Plein de bonnes choses et déjà des bugs...
-
Salut, Tu as dans le coffret de la 2009 tout plein de petites fiches avec les nouveautés.
-
Salut, Idem sur 2008, c'est pas systématique sur tous les plans.
