Aller au contenu

Messages recommandés

Posté(e)

Bonjour,

 

J'utilise le lisp de giles, et j'en suis super content!! :D

Serait il possible de sélectionner plusieurs polylignes, plutôt que une par une?

"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."

J-C Van Damme

Posté(e)

Salut,

 

Peux tu développer un peu plus précisément ce que tu voudrais parce que pline_block demande à l'utilisateur de spécifier le nom de la pièce pour chaque polyligne ainsi que le point d'insertion du champ.

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

Posté(e)

Salut

Ok pour les pièces, cela fonctionne très bien.

 

En fait plutôt que de sélectionner une par une il faudrait pouvoir sélectionner plusieurs polylignes avant d'avoir la boite de dialogue du nom de pièces.

 

 

"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."

J-C Van Damme

Posté(e)

Si j'ai bien compris la demande, l'utilisateur sélectionne plusieurs polylignes, puis, pour chacune insère le bloc pline_block.

 

Comme je ne sais pas quelle version tu utilises, j'ai modifié celle en téléchargement (ici).

Je te laisse le soin de modifier le code des champs pour les formater à ta guise (voir le PDF)

 

;;; Pline_block+ -Gilles Chanteau-
;;; Insertions multiple du bloc "pline_block" après sélection de polylignes

(defun c:pline_block (/	AcDoc Space *error* bloc nom ss	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)
      )
 )

 (defun *error* (msg)
   (or	(= msg "Fonction annulée")
(princ (strcat "\nErreur: " msg))
   )
   (and pl (vla-Highlight pl :vlax-false))
   (and ss (vla-delete ss))
   (vla-EndUndoMark AcDoc)
   (princ)
 )
 
 (if (or
(tblsearch "BLOCK" (setq bloc "Pline_block"))
(findfile (setq bloc "Pline_block.dwg"))
     )
   (if	(ssget '((0 . "LWPOLYLINE")))
     (progn
(vla-StartUndoMark AcDoc)
(vlax-for pl (setq ss (vla-get-ActiveSelectionSet AcDoc))
  (vla-Highlight pl :vlax-true)
  (redraw)

  ;; attribut "nom de la pièce"
  (if (not (setq nom (getname "Nom de la pièce")))
    (setq nom "")
  )

  (if (not
	(setq
	  ins
	   (getpoint
	     "\nSpécifiez le point d'insertion ou : "
	   )
	)
      )
    (progn
      (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))
    )
  )
  (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   (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
	 )
  )

  ;; 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)
)
(vla-delete ss)
(vla-EndUndoMark AcDoc)
     )
   )
   (alert "Le bloc \"Pline_block\" est introuvable.")
 )
 (princ)
) 

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

Posté(e)

Salut

 

Merci de penser à moi :)

 

J'ai une erreur de type: Erreur: nombre d'arguments trop important

:casstet:

"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."

J-C Van Damme

Posté(e)

Salut,

 

Comme je disais, je suis parti de la version mise en téléchargement.

Il y avait eu plusieurs versions du LISP pline_block pour essayer de répondre à des besoins différents.

De plus, chacun a pu modifier le code en fonction de la constitution du bloc pline_block (nombre et nature des attributs).

Ceci étant, il me semble que le plus simple serait que tu postes les codes LISP des versions de pline_block et GetName que tu utilises et aussi que tu me décrives le bloc que tu utilises pour que je puisse faire les modifications.

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

Posté(e)

En fait je souhaite garder le pline_block actuel, mais j'aimerais un autre dans le meme style mais par sélection de polyligne.

 

En ce qui concerne le bloc, je vais en créer un autre ou je vais avoir un seul attribut(total des polylignes)

 

Donc je pense à un nouveau pline_block+ par exemple, en gardante le pline_block d'origine, car il me sert aussi.

 

Je sais pas si je suis clair!!

Voici mes codes actuel pour pline_block

 

;;; Pline_bloc -Gilles Chanteau- 13/09/06
;;; Insère le bloc "pline_block" après sélection d'une polyligne
;;; Attribut 1 : Nom de la pièce
;;; Attribut 2 : Aire de la polyligne

(vl-load-com)
(defun c:pline_block (/ AcDoc Space bloc nom ent aire long ins)
(setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))
Space (if (= (getvar "CVPORT") 1)

(vla-get-PaperSpace AcDoc)
(vla-get-ModelSpace AcDoc)
)
)
(cond
((tblsearch "BLOCK" (setq bloc "Pline_block")))
((findfile (setq bloc "Pline_block.dwg")))
(T (setq bloc nil))
)
(if bloc
(progn
(while (not (setq ent (car (entsel)))))
(if (= (cdr (assoc 0 (entget ent))) "LWPOLYLINE")
(progn
(setq obj (vlax-ename->vla-object ent)
id (vla-get-ObjectID obj)
aire (strcat "%<\\AcObjProp Object(%<\\_ObjId "
(itoa id)
">%).Area \\f \"%lu2%pr2%ps%ct8[0.0001]\">%"
)
)
(if (not (setq nom (getname)))
(setq nom "")
)
(initget 1)
(setq ins (trans (getpoint "\nPoint d'insertion: ") 1 0))
(setq ref
(vla-InsertBlock
Space
(vlax-3d-point ins)
bloc
1.0
1.0
1.0
0.0
)
)
(mapcar '(lambda (x y) (vla-put-TextString x y))
(vlax-invoke ref 'GetAttributes)
(list nom aire)
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(and
(vl-catch-all-error-p
(vl-catch-all-apply
'vla-item
(list (vla-get-Layers AcDoc)
"TEXTE-SURFACES"
)
)
)
(vla-add (vla-get-Layers AcDoc)
"TEXTE-SURFACES"
)
)
(vla-put-Layer ref "TEXTE-SURFACES")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(vla-regen AcDoc acActiveViewport)
)
(alert "L'objet sélectionné n'est pas une polyligne.")
)
)
(alert "Le bloc \"Pline_block\" est introuvable.")
)
(princ)
)

 

Pour le Getname

;;; GetName Retourne le nom spécifié ou choisi dans la liste.
;;; Les noms entrés sont ajoutés à la liste.
;;; La liste est conservée dans le dessin.

(defun getname (/ lst what_next dcl_id nom)
(if (not (vlax-ldata-get "Pline_block" "Name"))
(vlax-ldata-put "Pline_block" "Name" '("BAINS" "CUISINE" "ENTREE" "SEJOUR" "WC" "DEGAGEMENT" "DGT." "SALON" "CELLIER" "CAVE" "CHAMBRE" "CHAMBRE 1" "CHAMBRE 2"))
)
(setq lst (vlax-ldata-get "Pline_block" "Name"))
(setq dcl_id (load_dialog "GetName.dcl"))
(setq what_next 2)
(while (>= what_next 2)
(if (not (new_dialog "getname" dcl_id))
(exit)
)
(start_list "pop")
(mapcar 'add_list lst)
(end_list)
(action_tile
"pop"
(strcat
"(if (or (= $reason 1) (= $reason 4))"
"(set_tile \"tp\" (nth (atoi $value) lst)))"
"(mode_tile \"accept\" 2)"
)
)
(action_tile
"add"
(strcat
"(if (not (member (get_tile \"tp\") lst))"
"(setq lst (acad_strlsort (cons (get_tile \"tp\") lst))))"
"(done_dialog 2)"
)
)
(action_tile
"del"
(strcat
"(setq lst (vl-remove (get_tile \"tp\") lst))"
"(done_dialog 2)"
)
)
(action_tile
"accept"
(strcat
"(if (not (read (get_tile \"tp\")))"
"(progn (alert \"Spécifiez un nom, svp.\")"
"(done_dialog 2))"
"(progn (setq nom (get_tile \"tp\"))"
"(if (and (not (member nom lst)) (/= nom ""))"
"(setq lst (acad_strlsort (cons (get_tile \"tp\") lst))))"
"(vlax-ldata-put \"Pline_block\" \"Name\" lst)"
"(done_dialog 1)))"
)
)
(setq what_next (start_dialog))
(if (= what_next 0)
(setq nom nil)
)
)
(unload_dialog dcl_id)
nom
)

 

 

 

"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."

J-C Van Damme

Posté(e)

Si j'ai enfin bien compris, tu veux une routine qui insèrerait un seul champ dynamique pour la surface totale de toutes les polylignes sélectionnées.

 

Si c'est bien ça, ça va être plus difficile, un champ "Objet" ne peut être lié qu'à un objet unique, et les champs "Formule" ne fonctionnent qu'avec les cellules d'un tableau.

 

On peut assez facilement faire un texte ou un attribut donnant la surface totales d'une sélection de polylignes, mais créer un lien dynamique entre ce texte ou attribut et ces polylignes nécessiterait l'utilisation de réacteurs, ce qui représenterait (pour moi en tout cas) un travail beaucoup plus conséquent et je ne suis pas sûr d'avoir le temps de le faire.

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

Posté(e)

Tu as très bien compris!!

 

Pas de problèmes, c'était une demande, et je comprend que cela prenne du temps!!

 

"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."

J-C Van Damme

Posté(e)

Merci pour l'idée Patrick, mais je vois mal comment utiliser un champ diesel pour conserver un lien dynamique entre l'expression diesel et l'aire de plusieurs polylignes.

 

J'ai donc essayé quelque chose de non dynamique avec 3 commandes:

 

TOTALAREA qui insère un bloc nommé "TotalArea" dont le premier attribut sera automatiquement renseigné avec la somme des aires des polylignes sélectionnées.

Le bloc doit être présent dans le dessin ou sous forme de fichier "TotalArea.dwg" dans un dossier du chemin de recherche.

 

ADDAREA qui ajoute l'aire d'une nouvelle polyligne au bloc "TotalArea" sélectionné.

 

AREAUPD qui met à jour le bloc "TotalArea" sélectionné.

 

On peut changer la [surligneur]conversion d'unités[/surligneur] dans TOTALAREA et TotalAreaUpd.

 

 

EDIT : Ajout de AREADEL et AREASHOW (voir réponse suivante)

 

EDIT 2 : remplacement de AREADEL et AREAADD par AREAEDIT

 

EDIT 3 : modification de AreaGet.

 

EDIT 4 : [surligneur]force l'affichage des 0 de fin dans les décimales[/surligneur]

 

;;; TOTALAREA version 1.02 (gile)
;;; Insère le bloc "TotalArea" dont le premier attribut est égal à
;;; l'aire totale des polylignes sélectionnées

(defun c:TotalArea (/ *error* tot ss lst ins ech blk)
 (vl-load-com)
 (or *acdoc*
     (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object)))
 )

 (defun *error* (msg)
   (or	(= msg "Fonction annulée")
(princ (strcat "\Erreur: " msg))
   )
   (setvar "DIMZIN" dz)
   (vla-EndUndoMark *acdoc*)
   (princ)
 )

 (setq	Space (if (= (getvar "CVPORT") 1)
	(vla-get-PaperSpace *acdoc*)
	(vla-get-ModelSpace *acdoc*)
      )
dz    (getvar "DIMZIN")
 )
 (if (or
(tblsearch "BLOCK" (setq bloc "TotalArea"))
(findfile (setq bloc "TotalArea.dwg"))
     )
   (progn
     (setq tot 0.0)
     (if (ssget '((0 . "LWPOLYLINE")))
(progn
  (vla-StartUndoMark *acdoc*)
  (vlax-for p (setq ss (vla-get-ActiveSelectionset *acdoc*))
    (setq tot (+ tot (vla-get-Area p))
	  lst (cons (vla-get-Handle p) lst)
    )
  )
  (vla-delete ss)
  (initget 1)
  (setq ins (getpoint "\nSpécifiez le point d'insertion: "))
  (if (not (vlax-ldata-get "TotalArea" "ech"))
    (vlax-ldata-put "TotalArea" "ech" 1)
  )
  (if (not (setq
	     ech
	      (getreal
		(strcat	"\nEntrez le facteur d'échelle 				(rtos (vlax-ldata-get "TotalArea" "ech"))
			">: "
		)
	      )
	   )
      )
    (setq ech (vlax-ldata-get "TotalArea" "ech"))
    (vlax-ldata-put "TotalArea" "ech" ech)
  )
  (setq	blk (vla-insertBlock
	      Space
	      (vlax-3d-point (trans ins 1 0))
	      bloc
	      ech
	      ech
	      ech
	      0.0
	    )
  )
  [surligneur](setvar "DIMZIN" (Boole 2 (getvar "DIMZIN") 8)) ; forcer l'affichage des 0 de fin[/surligneur]
  (vla-put-TextString
    (car (vlax-invoke blk 'GetAttributes))
    (rtos (/ tot [surligneur]10000[/surligneur]) 2 [surligneur]2[/surligneur])	; [surligneur]10000 = conversion cm² en m², 2 = 2 décimales[/surligneur]
  )
  (vlax-ldata-put blk "TotalArea" lst)
  (setvar "DIMZIN" dz)
  (vla-EndUndoMark *acdoc*)
)
     )
   )
   (princ "\nLe bloc \"TotalArea\" est introuvable.")
 )
 (princ)
)


;;; AREAUPD (gile)
;;; Met à jour la valeur du premier attribut d'un bloc "TotalArea"

(defun c:AreaUpd (/ *error* lst)
 (vl-load-com)
 (or *acdoc*
     (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object)))
 )

 (defun *error* (msg)
   (or	(= msg "Fonction annulée")
(princ (strcat "\Erreur: " msg))
   )
   (mapcar (function (lambda (x) (redraw x 4))) (cadr lst))
   (vla-EndUndoMark *acdoc*)
   (princ)
 )

 (if (setq lst (AreaGet "\nSélectionnez le bloc à mettre à jour: "))
   (progn
     (vla-StartUndoMark *acdoc*)
     (apply 'TotalAreaupd lst)
     (mapcar (function (lambda (x) (redraw x 4))) (cadr lst))
     (vla-EndUndoMark *acdoc*)
   )
   (princ "\nSélection non valide.")
 )
 (princ)
)

;;; AREAEDIT (gile)
;;; Ajoute ou supprime les polylignes sélectionnées au bloc "TotalArea"

(defun c:AreaEdit (/ *error* lst blk pl elst)

 (vl-load-com)
 (or *acdoc*
     (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object)))
 )

 (defun *error* (msg)
   (or	(= msg "Fonction annulée")
(princ (strcat "\Erreur: " msg))
   )
   (mapcar (function (lambda (x) (redraw x 4))) lst)
   (vla-EndUndoMark *acdoc*)
   (princ)
 )

 (if (setq lst (AreaGet "\nSélectionnez le bloc à modifier: "))
   (progn
     (setq blk	(car lst)
    lst	(cadr lst)
     )
     (vla-StartUndoMark *acdoc*)
     (while (setq pl
	    (car
	      (entsel
		"\nSélectionnez un polyligne à ajouter ou supprimer: "
	      )
	    )
     )
(setq elst (entget pl))
(if (= (cdr (assoc 0 elst)) "LWPOLYLINE")
  (if (member pl lst)
    (progn
      (setq lst (vl-remove pl lst))
      (redraw pl 4)
    )
    (progn
      (setq lst (cons pl lst))
      (redraw pl 3)
    )
  )
)
(vlax-ldata-put
  blk
  "TotalArea"
  (mapcar
    (function
      (lambda (x) (cdr (assoc 5 (entget x))))
    )
    lst
  )
)
(TotalAreaupd blk lst)
     )
     (mapcar (function (lambda (x) (redraw x 4))) lst)
     (vla-EndUndoMark *acdoc*)
   )
 )
 (princ)
)

;;; AREASHOW (gile)
;;; Met en surbrillance les polylignes liées au bloc sélectionné

(defun c:AreaShow (/ blk ss)
 (and (setq lst (AreaGet ""))
      (mapcar (function (lambda (x) (redraw x 4))) (cadr lst))
 )
 (princ)
)

;;; TotalAreaUpd (gile)
;;; Mise à jour du premier attribut d'un bloc "TotalArea"

(defun TotalAreaUpd (blk lst / *error* dz hand tot pl new)
 (vl-load-com)

 (defun *error* (msg)
   (or	(= msg "Fonction annulée")
(princ (strcat "\Erreur: " msg))
   )
   (setvar "DIMZIN" dz)
   (princ)
 )

 (setq dz (getvar "DIMZIN"))
 [surligneur](setvar "DIMZIN" (Boole 2 (getvar "DIMZIN") 8)) ; forcer l'affichage des 0 de fin [/surligneur]
 (if lst
   (progn
     (setq tot 0.0)
     (foreach p lst
(setq pl  (vlax-ename->vla-object p)
      tot (+ tot (vla-get-Area pl))
      new (cons (vla-get-Handle pl) new)
)
     )
     (setq blk (vlax-ename->vla-object blk))
     (vla-put-TextString
(car (vlax-invoke blk 'GetAttributes))
(rtos (/ tot [surligneur]10000[/surligneur]) 2 [surligneur]2[/surligneur])	; [surligneur]10000 = conversion cm² en m², 2 = 2 décimales[/surligneur]
     )
     (vlax-ldata-put blk "TotalArea" new)
   )
   (vla-put-TextString
     (car (vlax-invoke blk 'GetAttributes))
     (rtos 0.0)
   )
 )
 (setvar "DIMZIN" dz)
)

;;; AreaGet (gile)
;;; Retourne un liste contenant un bloc "TotalArea" et la liste de polylignes
;;; Les polylignes liées à un bloc sont mises en surbrillance quand le curseur est sur ce bloc

(defun AreaGet (msg / ss l1 gr ent l2 l3)
 (princ msg)
 (if
   (and
     (setq ss (ssget "_X" '((0 . "LWPOLYLINE"))))
     (setq l1 (mapcar 'cadr (ssnamex ss)))
   )
    (progn
      (while (and (setq gr (grread T 4 2)) (= (car gr) 5))
 (if (and (setq ent (nentselp (cadr gr)))
	  (or
	    (and
	      (caddr ent)
	      (setq ent (last (last ent)))
	    )
	    (setq ent (cdr (assoc 330 (entget (car ent)))))
	  )
	  (setq l2 (vlax-ldata-get ent "TotalArea"))
     )
   (foreach pl l1
     (if (member (cdr (assoc 5 (entget pl))) l2)
       (progn
	 (redraw pl 3)
	 (or (member pl l3) (setq l3 (cons pl l3)))
       )
     )
   )
   (progn
     (mapcar (function (lambda (x) (redraw x 4))) l3)
     (setq l3 nil)
   )
 )
      )
    )
 )
 (if l3
   (list ent l3)
 )
) 

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

Posté(e)

J'ai modifié/amélioré le code ci dessus.

 

Ajout de 2 commandes:

 

- AREADEL qui supprime le lien entre la polyligne sélectionné et le bloc "TotalArea" auquel elle était liée

- AREASHOW qui met les polylignes liées à un bloc en surbrillance quand le curseur passe sur celui-ci (même chose pour le choix du bloc dans AREAUPDATE, AREAADD et AREADEL)

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

Posté(e)

J'ai finalement remplacé AREAADD et AREAEDIT par une commande unique AREAEDIT.

 

L'utilisateur sélectionne le bloc à modifier,

les polylignes qui lui sont liées se mettent en surbrillance,

tant que l'utilisateur sélectionne des polylignes elles sont ajoutées ou supprimées de la liste des polylignes liées au bloc,

l'attribut est mis à jour à chaque changement.

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

Posté(e)

Salut (gile) et dans un premier temps merci beaucoup pour le temps consacré!! :D

 

Je viens juste d'essayer et j'ai suivi tes instructions

 

TOTALAREA : fonctionne (j'ai crée un bloc "TotalArea.dwg") et il me donne le total des polylignes.

 

AREAEDIT : Il me demande de sélectionner le bloc, mais quand je clique sur le bloc, rien ne se passe, et j'ai commande:, il semblerait qu'il ne reconnait pas le bloc "TotalArea.dwg"

 

AREASHOW : J'ai le curseur mais quand je me déplace sur le bloc je ne vois pas les polylignes en surbrillance

 

Je suis sous 2008

Il y a peut être un lien avec l'étiquette du bloc?

 

Ais-je loupé quelque chose......

"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."

J-C Van Damme

Posté(e)

Salut,

 

Je n'ai testé que sur des petits dessins contenant peu de polylignes, peut être faut il attendre un peu avec les curseur sur le bloc pour que le traitement se fasse et que les polylignes liées au bloc se mettent en surbrillance ?

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

Posté(e)

Je pense avoir trouvé, c'est du à une subtilité de la fonction nentselp qui traite différemment les attributs et les autres composants des blocs.

La sélection du bloc ne fonctionnait donc que quand le curseur était sur un composant du bloc autre qu'un attribut, et ne fonctionnait donc pas si le bloc était composé uniquement d'attributs.

 

Je modifie le code (version 1.02).

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

Posté(e)

Superbe!!!!!!!!!!!!!!!!!:D

Vraiment excellent!!!!!!!!!!!!!!:D

 

Je n'en attendait pas mieux!!!!!!!!!!!!! :exclam:

 

Merci beaucoup Monsieur!

"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."

J-C Van Damme

Posté(e)

Encore un petit truc

Si j'ai une polyligne de 400/405(cm), comment faire pour avoir le zéro de fin, afin d'avoir un résultat de 16.20m², au lieu de 16.2m².

Merci par avance

"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."

J-C Van Damme

Posté(e)

L'affichage de 0 de fin dans les décimales est gérée par la variable DIMZIN.

On donne la valeur à cette variable dans le gestionnaire des styles de cote, onglet unités : "Supprimer les zéros" "De fin".

 

J'ai modifier le LISP pour qu'il règle temporairement cette variable, la valeur initiale est restaurée ensuite.

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

Posté(e)

Parfait!! :D

Je pense que tu vas l'ajouter dans ta liste de lisp, car je suis sur de n'être pas le seul à qui cela fait plaisir!

 

Merci beaucoup d'avoir pris du temps, et si je peu rendre service (heu plutot dans le graphisme) n'hésite pas ;)

"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."

J-C Van Damme

Posté(e)

Désolé de t'embeter gile, mais j'ai encore une petite question :

 

Au niveau du AREAUPD

 

Serait il possible de sélectionner plusieurs blocs d'un coup plutôt que 1 par 1.

Car sur un essai d'un grand plan, je n'arrive pas forcément à voir quelle polyligne à bougée, surtout si j'en ai plusieurs............

 

Ou alors est il possible d'adapter la fonction AREAUPD au regen?

 

 

Mais c'est un détail!! :P

"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."

J-C Van Damme

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é