Aller au contenu

Pline_Block (giles)


ludo07

Messages recommandés

Bonjour à tous et plus particulièrement à (giles)

 

J'ai essayé ton lisp Pline_Block trés impréssionnant JE SUIS.

 

Sauf qu'il me semble qu'il y a quelque temps je t'ai posé une question (plus particulièremnt un souhait) et il ne me semble pas que tu m'ais répondu (SAUF ERREUR DE MA PART dans le cas contraire je m'en excuserais de bien BAS).

 

Donc je te la repose:

 

Peux tu faire en sorte qu'on choisisse l'ensemble des polylignes et que le programme les traite en une seule fois, bien entendu en ce qui concerne le nom de la pièce une incrémentation comme PIECE1, PIECE2, PIECE3... conviendrait.

 

 

Merci.

 

A+

Lien vers le commentaire
Partager sur d’autres sites

Voilà

 

(defun c:pline_block_m (/ AcDoc Space bloc ech ind reg ins op id long aire ref)
 (vl-load-com)
 (setq	AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))
Space (if (= (getvar "CVPORT") 1)
	(vla-get-PaperSpace AcDoc)
	(vla-get-ModelSpace AcDoc)
      )
 )
 (if (or
(tblsearch "BLOCK" (setq bloc "Pline_block"))
(findfile (setq bloc "Pline_block.dwg"))
     )
   (if	(ssget '((0 . "LWPOLYLINE")))
     (progn
(or (vlax-ldata-get "Pline_block" "ech")
    (vlax-ldata-put "Pline_block" "ech" 1)
)
(if (not (setq
	   ech
	    (getreal
	      (strcat "\nEntrez le facteur d'échelle 			      (rtos (vlax-ldata-get "Pline_block" "ech"))
		      ">: "
	      )
	    )
	 )
    )
  (setq ech (vlax-ldata-get "Pline_block" "ech"))
  (vlax-ldata-put "Pline_block" "ech" ech)
)
(setq ind 1)
(vlax-for pl (setq ss (vla-get-ActiveSelectionSet AcDoc))
  (if (= (vla-get-closed pl) :vlax-false)
    (progn
      (vla-put-closed pl :vlax-true)
      (setq op T)
    )
  )
  (setq	reg (vlax-invoke space 'addRegion (list pl))
	ins (vlax-get (car reg) 'Centroid)
  )
  (if op
    (vla-put-closed pl :vlax-false)
  )
  (vla-delete (car reg))
  (setq	id   (vla-get-ObjectID pl)

	;; Attribut périmètre (mm -> m)
	long (strcat "%			     (itoa id)
		     ">%).Length \\f \"%lu2%pr2%ct8[0.001]\">%"
	     )

	;; Attribut surface (mm² -> m²)
	aire (strcat "%			     (itoa id)
		     ">%).Area \\f \"%lu2%pr2%ct8[1e-006]\">%"
	     )
  )

  (setq	ref
	 (vla-InsertBlock
	   Space
	   (vlax-3d-point (trans ins 1 0))
	   bloc
	   ech
	   ech
	   1.0
	   0.0
	 )
  )

  ;; attribution de leur valeur aux attributs
  (mapcar '(lambda (x y) (vla-put-TextString x y))
	  (vlax-invoke ref 'GetAttributes)
	  (list (strcat "PIECE_" (itoa ind)) long aire)
  )
         (setq ind (1+ ind))
  (vla-regen AcDoc acActiveViewport)
)
     )
   )
   (alert "Le bloc \"Pline_block\" est introuvable.")
 )
 (princ)
) 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

(giles) je reviens vers toi car j'ai un petit problème.

 

Ton programme marche trés bien, seulement mon idée était de pouvoir aprés coût de créer une table d'extraction d'attributs afin de pouvoir obtenir un tableau récapitulatif de toutes les surfaces.

 

Mais quand je fais une extraction d'attribut autocad ne retrouve pas le bloc Pline_Block.

 

Tu as une idée.

 

A+

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é