Aller au contenu

MàJ alti pts topo dans bloc


Messages recommandés

Posté(e)

Bonjour,

 

J'ai un bloc comprenant des points topo covadis ayant un attribut altitude.

 

J'ai déplacé mon bloc en altitude et je souhaiterai que l'altitude des points topo se mettent à jour sans décomposer le bloc... c'est possible déjà? si oui, comment faire?

 

Je précise que "cov.edition→pts topo→ z→alt" ne fonctionne pas avec les blocs!

 

Merci et bonne journée!

Xav

AutoCad Map 3D 2011 - Covadis v16.0d

Windows 7 - 64b

Posté(e)

Salut Didier,

 

Merci pour ta réponse... je m'en doutais un peu mais bon, sait on jamais!

 

Le LISP... Ô grand mystère !!! :(

 

Bonne fin de journée!

Xav

AutoCad Map 3D 2011 - Covadis v16.0d

Windows 7 - 64b

Posté(e)

Bonjour,

 

Le lisp suivant devrait t'aider: majZ

Le nombre de décimales souhaité est modifiable directement dans le fichier (3 par défaut).

 

Le code:

 

(defun c:MAJZ (/ obj acdoc precision *error* oldcmdecho blk b att ss ins)
; Met à jour pour toutes les références du bloc choisi un attribut sélectionné,
; pour y afficher la coordonnée Z du bloc.
; Brice Studer, mars 2011
;
;~~~~~~~ CONFIG ~~~~~~~~~~~

(setq precision 3) ; nombre de décimales de l'altitude

;~~~~~~~ FIN CONFIG ~~~~~~~

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

;~~~~~~~ GESTION ERREURS ~~~~~~~~~~~
(defun *error* (msg)
(vla-endundomark acdoc)
(and msg
	(or
		(member (strcase msg) '("FUNCTION CANCELLED" "QUIT / EXIT ABORT" "FONCTION ANNULEE" "QUITTER / SORTIR ABANDON"))
		(princ (strcat "\nErreur : " msg))
	)
)
(if ss (vla-delete ss))
(princ)
)
;~~~~~~~ FIN GESTION ERREURS ~~~~~~~

;~~~~~~~ SOUS-FONCTIONS ~~~~~~~~~~~
(defun PutAttValue ( object tag value )
(mapcar
  (function
     (lambda ( attrib )
       (and
         (= tag (vla-get-TagString attrib))
         (vla-put-TextString attrib value)
       )
     )
  )
  (vlax-invoke object 'GetAttributes)
)
value
)
;~~~~~~~ FIN SOUS-FONCTIONS ~~~~~~~

(vla-StartUndoMark acdoc)

(while
(not
	(and
		(setq blk (car (entsel "\nSélectionnez un des blocs à mettre à jour: ")))
		(setq blk (vlax-ename->vla-object blk))
		(= (vla-get-ObjectName blk) "AcDbBlockReference")
		(setq blk (vla-get-effectivename blk))
	);and
);not
(princ "\nL'objet sélectionné n'est pas un bloc ! ")
);while no bloc

(while
(not
	(and
		(setq att (car (nentsel "\nCliquez sur une valeur d'altitude: ")))
		(setq att (vlax-ename->vla-object att))
		(= (vla-get-ObjectName att) "AcDbAttribute")
		(setq att (vla-get-tagstring att))
	);and
);not
(princ "\nL'objet sélectionné n'est pas un attribut ! ")
);while no attribute

(if (ssget "_X" '( (0 . "INSERT") ) )
(vlax-for b (setq ss (vla-get-ActiveSelectionSet acdoc))
	(if (= blk (vla-get-effectivename B))
		(progn
			(setq ins (caddr (vlax-get b 'InsertionPoint)))
			(putattvalue b att (rtos ins 2 precision))
		)
	);if b = blk
);vlax-for
);if ssget

(*error* nil)
(princ)
);MAJZ

(princ "\nCommande à utiliser: MAJZ")
(princ)

Posté(e)

Bonjour,

 

il suffit de créer un nouveau DWG par WBLOC à partir de la définition du bloc, puis ouvrir le DWG obtenu et faire une mise à jour des points topo avec les commandes habituelles de Covadis, puis de retour dans le dessin d'origine, lancer la commande Insérer / Bloc, bouton Parcourir et choisir le DWG modifié, AutoCAD va demander la REdéfinition du bloc, accepter, puis Echap pour ne pas l'insérer. Le bloc d'origine sera ainsi redéfini à l'identique du DWG modifié en altitude.

 

Olivier

Posté(e)

Coucou

 

Là encore je réponds tel que j'ai compris l'énoncé, Demixav viendra abonder ou contredire.

Olivier : je ne pense pas que ta solution soit possible dans le cas présenté

J'imagine bien un bloc (genre une boîte en 3D) avec des points topo sur les angles

Il écrit l’altitude des sommets de la boîte mais quand il déplace la boîte en altitude les Z ne peuvent se mettre à jour par Covadis

Je ne pense pas que ce soit un bloc d'un ensemble de points topos ce qui correspondrait à la solution que tu proposes.

Amicalement

 

Posté(e)

Didier,

 

J'ai cru comprendre qu'il avait inséré un morceau de plan topo sous forme de bloc (complément ou autre portion extraite...). il souhaitait donc appliquer un DZ à tous les attributs ALT de son morceau de plan topo présent sous forme de bloc sans devoir le décomposer.

Peut-être ai-je mal compris le problème?

 

Olivier

Posté(e)

Re,

 

@Bryce, merci pour ta réponse et le LISP mais en effet, ça ne fonctionne pas pour ce que je veux faire. Les points topo (500 environs) sont imbriqués dans un bloc avec des poly, cercle, etc...

 

@Olivier, merci également pour ta réponse mais ma question était surtout pour me faciliter le travail, et avoir un retour d'affichage rapide des altitudes de mon bloc après un déplacement par exemple tout en gardant mon bloc non-explosé.

 

Le plus simple que j'ai trouvé, c'est la calculatrice... et jouer entre l'altitude du bloc et l'altitude des points. Source d'erreur mais bon...

 

Encore merci à tous pour vos réponses et suggestions.

Bonne journée!

Xav

AutoCad Map 3D 2011 - Covadis v16.0d

Windows 7 - 64b

Posté(e)

Bonjour,

 

Pour ton problème, peut-être que tu devrais utiliser la commande Cov2D / Point topo / Immatriculation d'entité.

 

Cela te redéfinis des points topos.

 

Bonne journée.

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é