Aller au contenu

Modification commande COVCOTSURF


Messages recommandés

Posté(e)

@Maxime10 bonjour
Je n'ai pas regardé le Lisp. Je ne l'ai pas non plus.
Ce que tu as dis ( " Mais cela n'est pas systématique" ) me fait penser que le Lisp n'y est pour rien...
J'ai juste ouvert ton dessin. Le contour de la cuisine que tu sites à un point double. Supprime le et retente.

  • Upvote 1
Posté(e)

Bonjour @arnaudalp,

Merci pour ton retour. Le lisp est donné plus tôt dans le fil de la discussion. Mais je te le remet ci-dessous avec les variables correspondant au dwg "Modele.dwg".

J'ai supprimé le point double et retenté mais rien n'y fait je ne récupères pas cette pièce. J'ai également créé un point transitoire (j'ai scindé mon arc en deux arc), je récupère alors le numéro de la pièce ainsi que la surface mais pas le texte "Cuisine" qui renvoit alors 0. J'ai ensuite enlevé mon arc pour le remplacer par plusieurs sommets, et cela fonctionne je récupère bien tout).

Le lisp:

;;
;; Routine par doaiena pour Patrice B.
;;
;; Routine: NUMBER_TYPE_AREA_2_Table by doaiena
;;
;; ---- Re: Lisp to Get Table with Room : Number + Type + Area ----
;;
;; Here is a quick draft. I didn't have time to test it a lot,
;; so try it and tell me if it's working as expected.
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ATTENTION : DIMZIN = 0 sinon on ne controle pas les Decimales !!
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;

(vl-load-com)

(defun c:NUMBER_TYPE_AREA_2_Table ( / _dec dec _numLay numLay _typeLay typeLay _areaLay areaLay _polyLay polyLay
           ss ctr obj coords pts ss2 lay num typ area data tablePt table row col dimzinsauve oldecho )

    (setq oldecho (getvar "cmdecho"))
    (setvar "cmdecho" 0)

;;;;;;;; Sauvegarde de DIMZIN ;;;;;;;;
(setq dimzinsauve (getvar "dimzin") )
(setvar "dimzin" 0)

(setq _dec "2")

(setq _numLay "COPRO_Numero-Lot")

(setq _typeLay "COPRO_Texte")

(setq _areaLay "COPRO_Surface-Valeur")

(setq _polyLay "COPRO_Surface-Contour")


(initget "0 1 2 3")
(setq dec (cond ((getkword (strcat "How many decimals for the AREA [0/1/2/3] <" _dec ">: "))) (_dec)))

(setq numLay (getstring (strcat "Enter layer for text number <" _numLay ">: ")))
(if (= numLay "") (setq numLay _numLay))

(setq typeLay (getstring (strcat "Enter layer for text number <" _typeLay ">: ")))
(if (= typeLay "") (setq typeLay _typeLay))

(setq areaLay (getstring (strcat "Enter layer for text number <" _areaLay ">: ")))
(if (= areaLay "") (setq areaLay _areaLay))

(setq polyLay (getstring (strcat "Enter layer for 2D polygons <" _polyLay ">: ")))
(if (= polyLay "") (setq polyLay _polyLay))

(princ "\n \nSVP verifiez AVANT que les Polylignes 2D sont parfaites : \nPas de doublon/triplon , Closes , CONTINUOUS , PLINEGEN=0 , etc ! \n \n")

(if (setq ss (ssget (list (cons 0 "LWPOLYLINE") (cons 8 polyLay) (cons 70 1))))
(progn

(while (not tablePt) (setq tablePt (getpoint "\nPick top left corner for the table: ")))

(command "_view" "_sa" "tmp")
(setq ctr 0)
(repeat (sslength ss)
(setq obj (vlax-ename->vla-object (ssname ss ctr)))
(setq coords (vlax-safearray->list (vlax-variant-value (vla-get-coordinates obj))))
(setq pts nil)
(while (> (length coords) 0)
(setq pts (cons (list (car coords) (cadr coords)) pts))
(setq coords (cdr (cdr coords)))
)

(command "_zoom" "_o" (ssname ss ctr) "")
(if (setq ss2 (ssget "_WP" pts (list (cons 0 "Text") (cons 8 (strcat numLay "," typeLay "," areaLay)))))
(progn

(setq ctr2 0 num "0" typ "0" area (rtos 0 2 (atoi dec)))
(repeat (sslength ss2)
(setq lay (cdr (assoc 8 (entget (ssname ss2 ctr2)))))
(cond
((= lay numLay) (setq num (cdr (assoc 1 (entget (ssname ss2 ctr2))))))
((= lay typeLay) (setq typ (cdr (assoc 1 (entget (ssname ss2 ctr2))))))
((= lay areaLay) (setq area (rtos (atof (cdr (assoc 1 (entget (ssname ss2 ctr2))))) 2 (atoi dec))))
)
(setq ctr2 (1+ ctr2))
);repeat

(setq data (cons (list num typ area) data))

));if ss2

(setq ctr (1+ ctr))
);repeat

(command "_view" "_r"  "tmp")
(command "_view" "_de" "tmp")

(if (> (length data) 0)
(progn
(setq data (vl-sort data '(lambda (x y) (< (atoi (car x)) (atoi (car y))))))
(setq table (vla-Addtable (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))) (vlax-3d-point tablePt) (+ (length data) 2) 3 10 30))

(setq row 0)
(repeat (length data)
(setq col 0)
(repeat 3
(vla-settext table (+ row 1) col (nth col (nth row data)))
(setq col (1+ col))
)
(setq row (1+ row))
);rows

(vla-settext table (+ row 1) 2 (rtos (apply '+ (mapcar 'atof (mapcar 'caddr data))) 2 (atoi dec)))
))

));if ss

;;;;;;;; Restauration de DIMZIN ;;;;;;;;
(setvar "dimzin" dimzinsauve)

    (setvar "cmdecho" oldecho)

(princ)
);defun

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é