Aller au contenu

..suite d\'un précédent fil


Messages recommandés

Posté(e)

Bonjour,

 

Voilà la réponse que j'avais donné pour ton problème d'afficher IDxxx avec une incrémentation. A voir si ça conviens.

 

(vl-load-com)

 

(defun c:surf (/ js obj AcDoc Space nw_style

pt htx rtx unit_key unit_draw

dxf_cod n ename ll ur nw_obj

lremov

)

 

(princ "\nSélectionnez un objet curviligne.")

 

(while

 

(null

 

(setq js

 

(ssget "_+.:E:S"

 

(list

 

'(0 . "*POLYLINE,ARC,CIRCLE,ELLIPSE,HATCH")

 

(cons 67

(if (eq (getvar "CVPORT") 1)

1

0

)

)

 

(cons 410

(if (eq (getvar "CVPORT") 1)

(getvar "CTAB")

"Model"

)

)

 

'(-4 . "

 

'(-4 . "&")

 

'(70 . 120)

 

'(-4 . "NOT>")

 

)

 

)

 

)

 

)

 

(princ

"\nCe n'est pas un objet curviligne valable pour cette fonction!"

)

 

)

 

(initget 6)

 

(setq htx (getdist (getvar "VIEWCTR")

(strcat "\nSpécifiez la hauteur du champ <"

(rtos (getvar "TEXTSIZE"))

">: "

)

)

)

 

(if htx

(setvar "TEXTSIZE" htx)

)

 

(if (not

(setq

rtx (getorient (getvar "VIEWCTR")

"\nSpécifiez l'orientation du champ <0.0>: "

)

)

)

(setq rtx 0.0)

)

(if (= cod nil)

(setq codr 1)

(setq codr cod)

 

)

(if (not

(setq

cod (getreal (strcat

"\nSpécifiez le numéro de l'ID <"

(rtos codr 2 0)

">: "

)

)

)

)

(setq cod codr)

)

(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" "Id-Surfaces"))

 

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

'color

96

)

 

)

 

)

 

(cond

 

((null (tblsearch "STYLE" "Romand-Field"))

 

(setq nw_style (vla-add (vla-get-textstyles AcDoc) "Romand-Field"))

 

(mapcar

 

'(lambda (pr val)

 

(vlax-put nw_style pr val)

 

)

 

(list 'FontFile 'Height 'ObliqueAngle 'Width 'TextGenerationFlag)

 

(list "romand.shx" 0.0 (/ (* 15.0 pi) 180) 1.0 0.0)

 

)

 

)

 

)

 

(if (or (eq (getvar "USERS5") "")

(not (eq (substr (getvar "USERS5") 1 2) "qz"))

)

 

(progn

 

(initget "KM ME CM MM")

 

(if (not (setq unit_key

(getkword "\nDessin réalisé en [KM/ME/CM/MM] : "

)

)

)

 

(setq unit_key "ME")

 

)

 

(cond

 

((eq unit_key "KM")

 

(setq unit_draw 1000000)

 

)

 

((eq unit_key "ME")

 

(setq unit_draw 1000

unit_key "M"

)

 

)

 

((eq unit_key "CM")

 

(setq unit_draw 10)

 

)

 

((eq unit_key "MM")

 

(setq unit_draw 1)

 

)

 

)

 

(setvar "USERS5" (strcat "qz" (itoa unit_draw)))

 

)

 

(progn

 

(setq unit_draw (atoi (substr (getvar "USERS5") 3)))

 

(cond

 

((eq unit_draw 1000000)

 

(setq unit_key "KM")

 

)

 

((eq unit_draw 1000)

 

(setq unit_key "M")

 

)

 

((eq unit_draw 10)

 

(setq unit_key "CM")

 

)

 

((eq unit_draw 1)

 

(setq unit_key "MM")

 

)

 

)

 

)

 

)

 

(initget "Unique Multiple _Single Multiple")

 

(if (eq (getkword "\nSélection filtrée [unique/Multiple]: ")

"Single"

)

 

(setq n -1)

 

(setq

 

dxf_cod (entget (ssname js 0))

 

js

 

(ssget

"_X"

 

(foreach m

(foreach n dxf_cod

(if

(not (member (car n) '(0 67 410 8 6 62 48 420 70)))

(setq lremov (cons (car n) lremov))

)

)

 

(setq dxf_cod (vl-remove (assoc m dxf_cod) dxf_cod))

 

)

 

)

 

n -1

 

)

 

)

 

(repeat (sslength js)

 

(setq

 

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

 

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

 

)

 

(vla-GetBoundingBox ename 'll 'ur)

 

(if (< cod 10)

(setq compcod "00")

(if (and (< cod 100) (>= cod 10))

(setq compcod "0")

 

(setq compcod "")

)

)

 

(setq

 

ll (safearray-value ll)

 

ur (safearray-value ur)

 

pt (mapcar '* (mapcar '+ ll ur) '(0.5 0.5 0.5))

 

 

 

nw_obj

 

(vla-addMtext

Space

 

(vlax-3d-point pt)

 

0.0

 

(strcat

 

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

 

(itoa (vla-get-ObjectID ename))

 

">%).Area \\f \"%lu2%pr2%ps[iD"

(strcat compcod (rtos cod 2 0))

"=,"

(strcase unit_key T)

 

"²]\">%"

 

)

 

)

 

)

 

(mapcar

 

'(lambda (pr val)

 

(vlax-put nw_obj pr val)

 

)

 

(list 'AttachmentPoint 'Height 'DrawingDirection

'InsertionPoint 'StyleName 'Layer

'Rotation

)

 

(list 5

(getvar "TEXTSIZE")

5

pt

"Romand-Field"

"Id-Surfaces"

rtx

)

 

)

 

)

(setq cod (+ cod 1))

 

(prin1)

 

)

Invité tichou
Posté(e)

Bonjour et merci pour ta réponse.

Malheureusement l'identifiant n'est pas incrémenté.

Lorsque je choisis l'option "Multiple", toutes mes surfaces du calque sont traitées, mais l'identifiant ID001 et inscrit partout, au lieu d'avoir un identifiant unique par surface.

 

Par ailleurs, aurais tu une idée pour mon deuxième problème, à savoir l'export de tout ça sur excel ?

 

Merci par avance.

 

Invité tichou
Posté(e)

Bonjour,

 

Un énorme merci à BonusCAD qui a su répondre parfaitement à me demande.

Vraiment merci.

 

A bientôt.

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é