Aller au contenu

zoom surbrillance ou selection block


Messages recommandés

Invité ingoenius
Posté(e)

Salut a vous, je crois qu'il existe une routine qui permettez de zoomer sur un bock en donnant son nom, ou de le mettre en surbrillance ??

Avez vous le nom de la routine?

Merci

 

[Edité le 31/5/2010 par ingoenius]

Posté(e)

Bonjour à toutes et tous,

 

Selection rapide (_qselect) => Référence de bloc => Nom ?

 

ou de le mettre en surbrillance ??

 

Pas tout à fait, cette commande sélectionne le (ou les)bloc(s) en question,...

 

EDIT: Oups, je viens de voir le forum pointé par ta question,... Réponse à coté de la plaque, Désolé,... ;)

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Invité ingoenius
Posté(e)

Cà y est ici la routine, couplé de la superbe

l'inputbox de Gile ;-) (merci Gile)

 

;-----------------------------------------


;; InputBox (gile)
;; Ouvre une boite de dialogue pour récupérer une valeur
;; sous forme de chaine de caractère
;;
;; Arguments
;; tous les arguments sont de chaines de caractère (ou "")
;; box : titre de la boite de dialogue
;; msg : message d'invite
;; val : valeur par défaut
;;
;; Retour
;; une chaine ("" si annulation)

(defun InputBox (box msg val / subr temp file dcl_id ret)

;; Retour chariot automatique à 50 caractères
(defun subr (str / pos)
(if (and
(< 50 (strlen str))
(setq pos (vl-string-position 32 (substr str 1 50) nil T))
)
(strcat ":text_part{label=\""
(substr str 1 pos)
"\";}"
(subr (substr str (+ 2 pos)))
)
(strcat ":text_part{label=\"" str "\";}")
)
)

;; Créer un fichier DCL temporaire
(setq temp (vl-filename-mktemp "Tmp.dcl")
file (open temp "w")
ret ""
)

;; Ecrire le fichier
(write-line
(strcat
"InputBox:dialog{key=\"box\";initial_focus=\"val\";spacer;:paragraph{"
(subr msg)
"}spacer;:edit_box{key=\"val\";edit_width=54;allow_accept=true;}
spacer;ok_cancel;}"
)
file
)
(close file)

;; Ouvrir la boite de dialogue
(setq dcl_id (load_dialog temp))
(if (not (new_dialog "InputBox" dcl_id))
(exit)
)
(set_tile "box" box)
(set_tile "val" val)
(action_tile
"accept"
"(setq ret (get_tile \"val\")) (done_dialog)"
)
(start_dialog)
(unload_dialog dcl_id)

;;Supprimer le fichier
(vl-file-delete temp)
ret
)

 

(defun c:SZB ();selection et zoom sur bloc ou texte
(vl-load-com)
(setq Test "ID Search?")				 	 
(setq Cerca   (inputbox "Find ID" Test "new name"))

(setq ENT1 (ssget "x" (list (cons 0 "INSERT") (cons 2 Cerca )))) 	;Creation set selection Bloc
;(setq ENT1 (ssget "x" (list (cons 0 "TEXT") (cons 1 Cerca )))) 		;Creation set selection TEXT

(command "_zoom"  "O" ENT1 "" ""   )
;(command "_zoom"  300 ""  );activer  selon la dimension du dessin
)

 

 

Posté(e)

Bonjour à toutes et tous,

 

Ça fonctionne certes, mais je ne vois pas bien l'intérêt car il fait un zoom sur l'ensemble de l'emprise des blocs recherchés,... Si tu en as à 0,0 et l'autre à 100000,100000 ?

 

De plus, la routine à un petit pb sur la fin semble t-il =>

 

Commande: SZB

_zoom

Spécifiez le coin d'une fenêtre, entrez un facteur d'échelle (nX ou nXP) ou

[Tout/Centre/DYnamique/ETendu/Précédent/Echelle/Fenêtre/Objet] : O

Choix des objets: 2 trouvé(s)

Choix des objets:

Commande: SZB Commande inconnue "SZB". Appuyez sur F1 pour obtenir de l'aide.

Commande: nil

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Invité ingoenius
Posté(e)

@lili2006

Ça fonctionne certes, mais je ne vois pas bien l'intérêt car il fait un zoom sur l'ensemble de l'emprise des blocs recherchés

 

Pour l'utilisation que j'en fait c'est parfait,

 

EXPLICATION

imagine un plan d'un grand bureau avec une centaine de bureuax d'ordinateur tel etc

a coté de chaque bureau il y a des petites lignes de texte avec

 

nom et prenom

N de PC

N de telephone etc

N de prise telephone

 

Avec le script (avec la recherche sur ligne de texte il faut commenter une ligne et decommenter l'autre

, ensuite je vais faire un chois dans le script)

je peux chercher ou se trouve une personne ou un pc etc, et cela sont des textes uniques dans le dessin

 

De plus, la routine à un petit pb sur la fin semble t-il =>

On corrige comment le probleme?

Posté(e)

Re,

 

et cela sont des textes uniques dans le dessin

 

C'est surement que j'ai mal utilisé le lisp

 

Chez moi ne fonctionne qu'avec le nom du bloc et nom la valeur de l'attribut,..Encore moins un texte, a moins que tu ai autant de bloc avec des noms différents ???

 

a coté de chaque bureau il y a des petites lignes de texte avec

 

nom et prenom

N de PC

N de telephone etc

N de prise telephone

 

Au final, ce sont des textes ou des blocs "uniques" ?

 

Toujours pas compris l'intérêt,...

 

On corrige comment le probleme?

 

Désolé, j'en ai aucune idée,...

Civil 3D 2025 - COVADIS_18.3b

https://www.linkedin...3%ABt-95313341/

Invité ingoenius
Posté(e)

pour faire fonctionner le script en "recherche sur une ligne de texte" il faut modifier une ligne dans le script, ici le deux versions

biensur il faut laisser en debut la routine inputbox

 

 

 

Version TEXTE

 

(defun c:SZB ();seleziona e zooma su blocco o testo
(vl-load-com)
(setq Test "ID Search?")				 	;Scritta nella imput BOX  
(setq Cerca   (inputbox "Find ID" Test "new name"))         	;cambiare qui la dcl dialog
(setq ENT1 (ssget "x" (list (cons 0 "INSERT") (cons 2 Cerca )))) 	;Creo il Set selezione tipo BLOCCO
;(setq ENT1 (ssget "x" (list (cons 0 "TEXT") (cons 1 Cerca )))) 		;Creo il Set selezione Tipo TESTO

 
(command "_zoom"  "O" ENT1 "" ""   )
(command "_zoom"  300 ""  )
)

 

Version Blocks

 

 

 
(defun c:SZB ();seleziona e zooma su blocco o testo
(vl-load-com)
(setq Test "ID Search?")				 	;Scritta nella imput BOX  
(setq Cerca   (inputbox "Find ID" Test "new name"))         	;cambiare qui la dcl dialog
;(setq ENT1 (ssget "x" (list (cons 0 "INSERT") (cons 2 Cerca )))) 	;Creo il Set selezione tipo BLOCCO
(setq ENT1 (ssget "x" (list (cons 0 "TEXT") (cons 1 Cerca )))) 		;Creo il Set selezione Tipo TESTO

 
(command "_zoom"  "O" ENT1 "" ""   )
(command "_zoom"  300 ""  )
)

 

 

[Edité le 7/6/2010 par ingoenius]

Invité ingoenius
Posté(e)

ici la version complète modifiée avec choix en live

 

 

;; InputBox (gile)
;; Ouvre une boite de dialogue pour récupérer une valeur
;; sous forme de chaine de caractère
;;
;; Arguments
;; tous les arguments sont de chaines de caractère (ou "")
;; box : titre de la boite de dialogue
;; msg : message d'invite
;; val : valeur par défaut
;;
;; Retour
;; une chaine ("" si annulation)

(defun InputBox (box msg val / subr temp file dcl_id ret)

;; Retour chariot automatique à 50 caractères
(defun subr (str / pos)
(if (and
(< 50 (strlen str))
(setq pos (vl-string-position 32 (substr str 1 50) nil T))
)
(strcat ":text_part{label=\""
(substr str 1 pos)
"\";}"
(subr (substr str (+ 2 pos)))
)
(strcat ":text_part{label=\"" str "\";}")
)
)

;; Créer un fichier DCL temporaire
(setq temp (vl-filename-mktemp "Tmp.dcl")
file (open temp "w")
ret ""
)

;; Ecrire le fichier
(write-line
(strcat
"InputBox:dialog{key=\"box\";initial_focus=\"val\";spacer;:paragraph{"
(subr msg)
"}spacer;:edit_box{key=\"val\";edit_width=54;allow_accept=true;}
spacer;ok_cancel;}"
)
file
)
(close file)

;; Ouvrir la boite de dialogue
(setq dcl_id (load_dialog temp))
(if (not (new_dialog "InputBox" dcl_id))
(exit)
)
(set_tile "box" box)
(set_tile "val" val)
(action_tile
"accept"
"(setq ret (get_tile \"val\")) (done_dialog)"
)
(start_dialog)
(unload_dialog dcl_id)

;;Supprimer le fichier
(vl-file-delete temp)
ret
)


(defun c:SZB ();seleziona e zooma su blocco o testo
(vl-load-com)
 
(setq Test "ID Search?")				 	;Scritta nella imput BOX  
(setq Cerca   (inputbox "Find ID" Test "new name"))         	;cambiare qui la dcl dialog



(initget 1 "Blocks Text")
 	(setq Choix (getkword "\ntype Blocks Text ?\n"))	;determina il tipo di scelta   

(cond 
  		((= Choix "Blocks")
	(setq ENT1 (ssget "x" (list (cons 0 "INSERT") (cons 2 Cerca ))))		 
	)
 
  		((= Choix "Text")
	(setq ENT1 (ssget "x" (list (cons 0 "TEXT") (cons 1 Cerca ))))		 
	
))

 

 
;(setq ENT1 (ssget "x" (list (cons 0 "INSERT") (cons 2 Cerca )))) 	;Creo il Set selezione tipo BLOCCO
;(setq ENT1 (ssget "x" (list (cons 0 "TEXT") (cons 1 Cerca )))) 		;Creo il Set selezione Tipo TESTO

 
(command "_zoom"  "O" ENT1 "" ""   )
(command "_zoom"  300 ""  )
)

Invité ingoenius
Posté(e)

le facteur de zoom final dépend du mode de travailler que vous avez, moi je travaille en "mètres"

1 unité = 1 mètre

 

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é