Aller au contenu

Pline_Block (mode d\'emploi)


(gile)

Messages recommandés

merci pour la réponse, ce lisp est vraiment tres utile, par contre je n'arrive pas encore vraiment à saisir comment je peut mettre mon tableau à jour après que ma polyligne ait été modifiée.

Comment met-on à jour les champs? Lorsque je fais regen les surfaces des polylignes modifiés se corrige, mais le tableau d'export ne se modifie pas.

 

 

[Edité le 21/2/2008 par blizard]

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Quand tu modifies une polyligne liée à un bloc "pline_block", tu peux mette à jour les attributs/champs avec les commandes METTREAJOURCHAMP ou REGEN.

Quand les attributs/champs ont été mis à jour, le tableau d'extraction est devenu obsolète et il devrait apparaître dans la zone de notification l'information suivante :

 

http://img442.imageshack.us/img442/8900/extattbexu9.png

 

Si elle n'apparaît pas, vérifie que l'option "Activer les notifications..." est bien cochée quand tu fais clic droit sur l'icône "Extraction d'attributs" de la barre d'état.

 

http://img20.imageshack.us/img20/1908/extattbe2dx9.png

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

Lien vers le commentaire
Partager sur d’autres sites

  • 3 ans après...
Invité davidly

Salut,

J'ai un souci quand j'installe pline_block sur les autres PC de mon travail, ça ne fonctionne pas correctement, sur le mien pas de problème par contre les autres pas terrible:

- le getname fonctionne y a pas de souci dessus

- par contre au niveau de la surface et du périmètre j'ai ça d'afficher ####.

Si quelqu' pouvais me conseiller ce serais pas mal. Merci d'avance.

Lien vers le commentaire
Partager sur d’autres sites

Invité davidly

Salut Gile,

J'avais mis celui que j'avais modifié et j'avais ce problème donc après j'ai retéléchargé le tien sur ton site perso et là pareil. Est ce que c'est pas lié directement par rapport au paramètre d'autocad? Le fichier DCL est bien dans le fichier de support d'autocad aussi non il ne trouverait pas le nom et les deux fichiers lisp sont eux aussi bien ranger, je ne comprend pas.

Lien vers le commentaire
Partager sur d’autres sites

Si tu as #### qui s'affiche, c'est que la formule de champ n'est pas valide.

Vérifie dans le code (en utilisant le mode d'emploi : Pline_block.pdf et la boite de dialogue de la commande CHAMP) que la formule correspond bien au champ que tu veux obtenir.

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

Lien vers le commentaire
Partager sur d’autres sites

Invité davidly

J'ai vérifié en double cliquant sur le champ, il indique dans la colone "nom du champ": *inconnu* que ce soit avec le pline_block que j'ai modifié par rapport à des expliquation que tu as donnée ou avec le lisp d'origine. J'ai le même problème avec le lisp surf sur les autres poste ça ne fonctionne pas correctement. Par contre ton lisp totalarea fonctionne et met d'une grande utilité.

Encore merci pour tes réponses.

Lien vers le commentaire
Partager sur d’autres sites

Invité davidly

J'ai vérifié sur les autres postes de l'agence, il travaille sur un autocad V2008 32bit et moi un 64bit peut-être que ça vient de là. Je sais que j'ai déjà vu ça sur un forum mais peut-on avec pline_block faire pour qu'il s'arrête au deuxième chiffre après la virgule sans qu'il arrondissent.

Merci pour vos réponse.

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

Sans vouloir marcher sur les plate-bandes de (gile), et en attendant qu'il te réponde, j'ai modifié pline_block.lsp pour le rendre compatible 32 et 64 bits.

Je n'ai pas testé (pas de 64 bits pour le moment), mais ça devrait fonctionner :

 

;;; Pline_block -Gilles Chanteau- 13/04/07
;;; Insère le bloc "pline_block" après sélection d'une polyligne
;;; Attribut 1 : Nom de la pièce
;;; Attribut 2 : Longueur de la polyligne
;;; Attribut 3 : Aire de la polyligne

(defun GetObjectID ( obj doc )
;; Lee Mac
(if
  (eq "X64"
	(strcase
	  (getenv "PROCESSOR_ARCHITECTURE")
	)
  )
  (vlax-invoke-method
	(vla-get-Utility doc) 'GetObjectIdString obj :vlax-false
  )
  (itoa (vla-get-Objectid obj))
)
)

(defun c:pline_block (/ AcDoc Space bloc nom ent obj ins op reg ech 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"))
     )
   (progn
     ;; attribut "nom de la pièce"
     ;; possibilité de changer le titre de la boite de dialogue "Choisir un nom"
     (if (not (setq nom (getname "Choisir un nom"))) 
(setq nom "")
     )
     (while (not (setq ent (car (entsel)))))
     (setq	obj  (vlax-ename->vla-object ent))
     (if (= "AcDbPolyline" (vla-get-ObjectName obj))
(progn
  (if (not
	(setq
	  ins
	   (getpoint
	     "\nSpécifiez le point d'insertion ou < Centre >: "
	   )
	)
      )
    (progn
      (if (= (vla-get-closed obj) :vlax-false)
	(progn
	  (vla-put-closed obj :vlax-true)
	  (setq op T)
	)
      )
      (setq reg	(vlax-invoke space 'addRegion (list obj))
	    ins	(vlax-get (car reg) 'Centroid)
      )
      (if op
	(vla-put-closed obj :vlax-false)
      )
      (vla-delete (car reg))
    )
  )
  (if (not (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	id   (GetObjectID obj AcDoc)
	;; Attribut périmètre (mm -> m)
	long (strcat "%<\\AcObjProp Object(%<\\_ObjId "
		     (id)
		     ">%).Length \\f \"%lu2%pr2%ct8[0.001]\">%"
	     )
	;; Attribut surface (mm² -> m²)
	aire (strcat "%<\\AcObjProp Object(%<\\_ObjId "
		     (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
	 )
  )
  ;; attribution de leur valeur aux attributs
  (mapcar '(lambda (x y) (vla-put-TextString x y))
	  (vlax-invoke ref 'GetAttributes)
	  (list nom long aire)
  )
  (vla-regen AcDoc acActiveViewport)
)
(alert "L'objet sélectionné n'est pas une polyligne.")
     )
   )
   (alert "Le bloc \"Pline_block\" est introuvable.")
 )
 (princ)
)

 

Edit: corrigé un oubli...

 

 

[Edité le 30/3/2011 par bryce]

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Tu peux essayer la version proposée par bryce, mais personnellement je n'ai aucun problème avec la version originale sur AutoCAD 2011 64 bits.

 

qu'il s'arrête au deuxième chiffre après la virgule sans qu'il arrondissent.
????

Je ne comprends pas la demande, mais de toute façon c'est le formatage du code champ (CF le mode d'emploi) qui détermine le nombre de décimales.

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

Lien vers le commentaire
Partager sur d’autres sites

Invité davidly

Merci pour vos réponse rapide et pour le lisp modifié.

Ce que je disais c'est que je travaille avec un 64 bits et que je n'est aucun problème.

Pour ma question sur ne pas arrondir la valeur de ma surface, quelqu'un pourrait me répondre, je m'explique. Quand j'utilise pline_block pour les surfaces de chacune de mes pièces et ensuite que j'utilise totalarea pour ma surface de logement la surface total ne correspond pas à l'addition de toutes les surfaces indiquée par pline_block.

Merci d'avance.

Lien vers le commentaire
Partager sur d’autres sites

Salut

 

Tout ça est, à mes yeux, très normal.

Si on considère un exemple très simple où les nombres sont arrondis au nombre entier :

 

3.6 est arrondi à 4

4.7 est arrondi à 5

 

la somme : 3.6 + 4.7 = 8,3 est arrondie à 8

la somme des arrondis = 4 + 5 = 9

 

On retrouve la même chose avec des cotes suivant qu'on utilise des cotes continues ou cumulées :

 

http://img171.imageshack.us/img171/2442/arrondi.png

 

Donc, si je comprends bien, tu préfères avoir la somme des arrondis qui, bien qu'elle soit moins précise que l'arrondi de la somme, correspond à ce qui est affiché (autrement dit, "forcer" la cote pour qu'elle marque 9).

 

Ce n'est donc pas pline_block qu'il faut modifier mais TotalArea.

J'avais répondu à une demande similaire ici.

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

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é