Aller au contenu

Tableau des surfaces


Neo83

Messages recommandés

Bonjour à tous.

J'ai migré de AutoCAD 2008 Architecture à AutoCAD 2012 Architecture. Mon problème est le suivant:

Le lisp que j'avais trouvé sur ce site et qui me permettait de faire un tableau de surface des salles de mon dessin fonctionne toujours mais pas de manière parfaite. En effet lorsque je sélectionne les polylignes de surface des mes salles, celles-ci ne sont plus affichées dans l'ordre de ma sélection. Par exemple je sélectionne Bureau 1 puis Bureau 2 puis Bureau 3... et bien dans le tableau des surfaces,les "Bureau 1,2,3" ne sont pplus dans l'ordre 1 puis 2 puis 3...

J'ai commencé par revoir la variable SORTENTS mais cela ne change rien. Je ne vois pas quelle autre variable prends cela en charge.

 

Je n'ai pas la compétence pour savoir si cela vient du lisp ou pas.

 

Je sèche, je vous appelle à l'aide. Ci-dessous le Lisp en question.

 

 

 

(defun c:surf2 ( / obj AcDoc Space nw_style vla_obj pt)

(command "_.pline"

(while (not (zerop (getvar "cmdactive")))

(command pause)

)

)

(setq

obj (entlast)

AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))

Space

(if (= 1 (getvar "CVPORT"))

(vla-get-PaperSpace AcDoc)

(vla-get-ModelSpace AcDoc)

)

)

(cond

((null (tblsearch "LAYER" "_Surfaces"))

(vlax-put (vla-add (vla-get-layers AcDoc) "_Surfaces") 'color 2)

)

)

(cond

((null (tblsearch "STYLE" "Romand20"))

(setq nw_style (vla-add (vla-get-textstyles AcDoc) "Romand20"))

(vlax-put nw_style 'fontfile "romand.shx")

(vlax-put nw_style 'height 0.0)

(vlax-put nw_style 'obliqueangle (/ (* 15.0 pi) 180))

(vlax-put nw_style 'width 1.0)

(vlax-put nw_style 'textgenerationflag 0.0)

)

)

(vlax-ldata-put (setq vla_obj (vlax-ename->vla-object obj)) "SURF2" (getstring T "\nNom du Local : "))

(initget 9)

(setq pt (getpoint "\nPoint d'insertion du champ: "))

(initget 1)

(setq nw_obj

(vla-addMtext Space

(vlax-3d-point (trans pt 1 0))

0.0

(strcat

(vlax-ldata-get vla_obj "SURF2")

"\\P%<\\AcObjProp.16.2 Object(%<\\_ObjId "

(itoa (vla-get-ObjectID vla_obj))

">%).Area \\f \"%lu2%pr2%ps\">%m²"

)

)

)

(vlax-put nw_obj 'AttachmentPoint 5)

(vlax-put nw_obj 'Height 0.15)

(vlax-put nw_obj 'DrawingDirection 5)

(vlax-put nw_obj 'InsertionPoint (trans pt 1 0))

(vlax-put nw_obj 'StyleName "TEXTE")

(vlax-put nw_obj 'Layer "Id-Surfaces")

(prin1)

)

 

 

*********************

 

(defun c:tabsurf2 ( / js js_sel n obj vla_obj oldim oldlay AcDoc Space nw_style ins_pt_cell h_t w_c ename_cell n_row n_column)

(setq js (ssget '((0 . "LWPOLYLINE"))))

(setq js_sel (ssadd))

(repeat (setq n (sslength js))

(setq obj (ssname js (setq n (1- n))))

(if (vlax-ldata-get (setq vla_obj (vlax-ename->vla-object obj)) "SURF2")

(ssadd obj js_sel)

)

)

(cond

(js_sel

(setq

oldim (getvar "dimzin")

oldlay (getvar "clayer")

)

(setq

AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))

Space

(if (= 1 (getvar "CVPORT"))

(vla-get-PaperSpace AcDoc)

(vla-get-ModelSpace AcDoc)

)

)

(cond

((null (tblsearch "LAYER" "Tableaux-Métrés"))

(vla-add (vla-get-layers AcDoc) "Tableaux-Métrés")

)

)

(cond

((null (tblsearch "STYLE" "TEXTE"))

(setq nw_style (vla-add (vla-get-textstyles AcDoc) "TEXTE"))

(vlax-put nw_style 'fontfile "romand.shx")

(vlax-put nw_style 'height 0.0)

(vlax-put nw_style 'obliqueangle (/ (* 15.0 pi) 180))

(vlax-put nw_style 'width 1.0)

(vlax-put nw_style 'textgenerationflag 0.0)

)

)

(setvar "dimzin" 0) (setvar "clayer" "Tableaux-Métrés")

(initget 9)

(setq ins_pt_cell (getpoint "\nPoint d'insertion haut gauche du tableau: "))

(initget 6)

(setq h_t (getdist ins_pt_cell (strcat "\nHauteur du texte <" (rtos (getvar "textsize")) ">: ")))

(if (null h_t) (setq h_t (getvar "textsize")) (setvar "textsize" h_t))

(initget 7)

(setq w_c (getdist ins_pt_cell "\nLargeur des cellules: "))

(setq ename_cell (vla-addTable Space (vlax-3d-point (trans ins_pt_cell 1 0)) (+ 3 (sslength js_sel)) 2 (+ h_t (* h_t 0.25)) w_c))

(setq n_row 2 n_column -1)

(vla-SetText ename_cell 0 0 "SURFACES")

(vla-SetCellTextStyle ename_cell 0 0 "TEXTE")

(vla-SetCellTextHeight ename_cell 0 0 (vlax-make-variant h_t 5))

(vla-SetCellAlignment ename_cell 0 0 5)

(foreach string '("LOCAUX" "SUPERFICIES (m²)")

(vla-SetText ename_cell 1 (setq n_column (1+ n_column)) string)

(vla-SetCellTextStyle ename_cell 1 n_column "TEXTE")

(vla-SetCellTextHeight ename_cell 1 n_column (vlax-make-variant h_t 5))

(vla-SetCellAlignment ename_cell 1 n_column 5)

)

(setq n_column -1)

(repeat (setq n (sslength js_sel))

(setq ename (vlax-ename->vla-object (ssname js_sel (setq n (1- n)))))

(if (vlax-property-available-p ename 'Area)

(progn

(vla-SetText ename_cell n_row (setq n_column (1+ n_column))

(vlax-ldata-get ename "SURF2")

)

(vla-SetCellTextStyle ename_cell n_row n_column "TEXTE")

(vla-SetCellTextHeight ename_cell n_row n_column (vlax-make-variant h_t 5))

(vla-SetCellAlignment ename_cell n_row n_column 6)

(vla-SetText ename_cell n_row (setq n_column (1+ n_column))

(strcat "%<\\AcObjProp Object(%<\\_ObjId " (itoa (vla-get-ObjectID ename)) ">%).Area \\f \"%lu2%pr2%ps>%")

)

(vla-SetCellTextStyle ename_cell n_row n_column "TEXTE")

(vla-SetCellTextHeight ename_cell n_row n_column (vlax-make-variant h_t 5))

(vla-SetCellAlignment ename_cell n_row n_column 6)

(setq n_row (1+ n_row) n_column -1)

)

)

)

(setq n_column 1)

(vla-SetText ename_cell n_row n_column

(strcat "Total= " "%<\\AcExpr (Sum(B3:B" (itoa n_row) ")) \\f \"%lu2%pr1\">%")

)

(vla-SetCellTextStyle ename_cell n_row (1- (length lst_idcolumn)) "TEXTE")

(vla-SetCellTextHeight ename_cell n_row (1- (length lst_idcolumn)) (vlax-make-variant h_t 5))

(vla-SetCellAlignment ename_cell n_row (1- (length lst_idcolumn)) 6)

(vlax-release-object ename_cell)

(vlax-release-object Space)

(setvar "dimzin" oldim) (setvar "clayer" oldlay)

)

(T

(princ "\nSélection vide!")

)

)

)

 

 

*****************

 

(defun c:resurf2 ( / js obj vla_obj obj_id AcDoc Space js_mt n en pt_ins nw_obj)

(princ "\nSélectionner une polyligne pour une nouvelle affectation.")

(while (null (setq js (ssget "_+.:E:S" '((0 . "LWPOLYLINE")))))

(princ "\nCe n'est pas un objet valable!")

)

(setq

obj (ssname js 0)

vla_obj (vlax-ename->vla-object obj)

obj_id (vlax-get-property vla_obj 'ObjectID)

AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))

Space

(if (= 1 (getvar "CVPORT"))

(vla-get-PaperSpace AcDoc)

(vla-get-ModelSpace AcDoc)

)

)

(cond

((null (tblsearch "LAYER" "Id-Surfaces"))

(vlax-put (vla-add (vla-get-layers AcDoc) "Id-Surfaces") 'color 96)

)

)

(cond

((null (tblsearch "STYLE" "Romand20"))

(setq nw_style (vla-add (vla-get-textstyles AcDoc) "TEXTE"))

(vlax-put nw_style 'fontfile "romand.shx")

(vlax-put nw_style 'height 0.0)

(vlax-put nw_style 'obliqueangle (/ (* 15.0 pi) 180))

(vlax-put nw_style 'width 1.0)

(vlax-put nw_style 'textgenerationflag 0.0)

)

)

(if (vlax-ldata-get vla_obj "SURF2")

(setq js_mt (ssget "_X" (list '(0 . "MTEXT") (cons 1 (strcat (vlax-ldata-get vla_obj "SURF2") "*")))))

)

(vlax-ldata-put vla_obj "SURF2" (getstring T "\nNom du Local : "))

(if js_mt (setq n (sslength js_mt)) (setq n 1))

(repeat n

(if js_mt

(progn

(setq pt_ins (trans (cdr (assoc 10 (entget (setq en (ssname js_mt (setq n (1- n))))))) 0 1))

(entdel en)

)

(progn

(initget 9)

(setq pt_ins (getpoint "\nPoint d'insertion du champ: "))

)

)

(setq nw_obj

(vla-addMtext Space

(vlax-3d-point (trans pt_ins 1 0))

0.0

(strcat

(vlax-ldata-get vla_obj "SURF2")

"\\P%<\\AcObjProp.16.2 Object(%<\\_ObjId "

(itoa obj_id)

">%).Area \\f \"%lu2%pr2%ps\">%m²"

)

)

)

(vlax-put nw_obj 'AttachmentPoint 5)

(vlax-put nw_obj 'Height 0.15)

(vlax-put nw_obj 'DrawingDirection 5)

(vlax-put nw_obj 'InsertionPoint (trans pt_ins 1 0))

(vlax-put nw_obj 'StyleName "TEXTE")

(vlax-put nw_obj 'Layer "Id-Surfaces")

)

)

 

(princ "\n\tsurf2 ---> pour définir aire des locaux.\n\ttabsurf2 ---> pour faire un tableau de surface.\n\tresurf2 ---> pour redéfinir une aire de local")

(princ)

 

Merci pour votre aide.

SURFACE.lsp

Sans nous, les machines ne sont rien

Lien vers le commentaire
Partager sur d’autres sites

Re-bonjour,

Je dois ajouter quelque chose...

 

C'est mon utilisation du LISP qui pose problème...

 

J'ai fait un bouton dans lequel je crée un jeu de sélection:^c^c(set aa(ssget))

 

et un autre bouton dans lequel il y a :^c^cdeplacer;!aa;;0,0;0,0;TABSURF2;p;;\0.15;2;

 

 

Avec 2008 archi cela fonctionait...

La commande faite seule fonctionne normalement.

 

Le lisp est donc toujours correct.

 

Qu'est-ce qui fait que la sélection reprise avec P (précédent) génère ce désordre?

 

 

Là je suis juste et complet.

 

Merci à vous.

Sans nous, les machines ne sont rien

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é