Aller au contenu

creation d\'attribut


Messages recommandés

Posté(e)

bonjour,

 

J'ai un client qui me demande des attributs sur chaque point d'un relevé topo

 

le bloc devrai etre constituer d'un point et d'un texte donnant l'altitude

 

les points et les textes sont deja en place dans le dessin

 

les points se trouvent a une distance comprise entre 0.11 et 0.12

 

evidement j'en ais des centaines par plan et beaucoup de plans

 

y a t'il une solution simple?

:exclam:

 

 

Posté(e)

merci

 

j'ai bien chargé Attributs_ini.lsp

 

mais aprés j'ai pas trop compris comment sa marche :P

 

il semblerai qu'il faut deja des blocs inserer a chaque pts ??

 

en plus j'ai pas le temps d'essayer de comprendre

 

je suis partit en manuel

 

a plus

 

 

Posté(e)

C'est que le bloc n'est pas pris en compte

J'ai refait un test en attendant et ça fonctionne correctement

J'ai juste changé (setq Nom_bloc "ETICDC" Eti_X "CDC" Eti_Y "SOL" Eti_Z "NGF"), c'est un bloc que j'ai pris au hazard daons mon dessin

 

Il faut d'abord charger le lisp (avec _appload par exemple) puis lancer la commande pour activer les réacteurs --> mpt

Si tu souhaites pour une raison ou une autre désactiver les réacteurs, tu fais la commande spt

 

@+

 

Les Lisps de Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

en attendant de mieux compremdre

 

j'ai un bout de code qui me sert a inerer des blocs a chaque point

 

 

(defun C:TOBLOC()

(setq nom (getstring "\nNom du bloc à inserer : "))

(setq sel (ssget "x" ' ((0 . "POINT"))))

(setq n 0)

(repeat (sslength sel)

(setq ent (ssname sel n))

(progn

(setq calque-ent (cdr(assoc 8 (entget ent))))

(setvar "CLAYER" calque-ent)

(command "_insert" nom (cdr(assoc 10 (entget ent))) "1" "1" "0")

(setq n (+ 1 n))

)

)

)

 

 

mais malheureusement sa marche pas avec des blocs contenant des attributs

 

j'aurai peut etre du poster cela chez les lispeurs ....

Posté(e)

Fraid, ceci ferait-il l'affaire

((lambda ( / sel n ent)
    (if (not (tblsearch "LAYER" "Altitudes"))
      (entmake	'((0 . "LAYER")
	  (100 . "AcDbSymbolTableRecord")
	  (100 . "AcDbLayerTableRecord")
	  (2 . "Altitudes")
	  (70 . 0)
	  (62 . 7)
	  (370 . -3)
	  (6 . "Continuous")
	 )
      )
    )
    (if (not (tblsearch "STYLE" "TCPOINT"))
      (entmake	'((0 . "STYLE")
	  (5 . "40")
	  (100 . "AcDbSymbolTableRecord")
	  (100 . "AcDbTextStyleTableRecord")
	  (2 . "TCPOINT")
	  (70 . 0)
	  (40 . 0.0)
	  (41 . 1.0)
	  (50 . 0.0)
	  (71 . 0)
	  (42 . 0.75)
	  (3 . "simplex.shx")
	  (4 . "")
	 )
      )
    )
    (if (not (tblsearch "BLOCK" "TCPOINT"))
      (progn
 (entmake
   '((0 . "BLOCK") (8 . "0") (2 . "TCPOINT") (70 . 2) (4 . "") (8 . "0") (62 . 0) (6 . "ByBlock") (370 . -2) (10 0.0 0.0 0.0))
 )
 (entmake '(
(0 . "POINT")
(100 . "AcDbEntity")
(67 . 0)
(410 . "Model")
(8 . "0")
(62 . 0)
(6 . "ByBlock")
(370 . -2)
(100 . "AcDbPoint")
(10 0.0 0.0 0.0)
(210 0.0 0.0 1.0)
	)
 )
 (entmake '(
(0 . "ATTDEF")
(100 . "AcDbEntity")
(67 . 0)
(410 . "Model")
(8 . "Altitudes")
(62 . 0)
(6 . "ByBlock")
(370 . -2)
(100 . "AcDbText")
(10 0.25 0.0 0.0)
(40 . 0.75)
(1 . "0.00")
(50 . 0.0)
(41 . 1.0)
(51 . 0.0)
(7 . "TCPOINT")
(71 . 0)
(72 . 0)
(11 0.25 0.75 0.0)
(210 0.0 0.0 1.0)
(100 . "AcDbAttributeDefinition")
(3 . "Altitude ?:")
(2 . "Z_POINT")
(70 . 0)
(73 . 0)
(74 . 3)
	   )
 )
 (entmake '((0 . "ENDBLK") (8 . "0") (8 . "0") (62 . 0) (6 . "ByBlock") (370 . -2)))
      )
    )
(setq sel (ssget "_X" (list
(cons 0 "POINT")
(cons 67 (if (eq (getvar "CVPORT") 2) 0 1))
(cons 410 (if (eq (getvar "CVPORT") 2) "Model" (getvar "CTAB")))
)))
(cond
	(sel
		(setvar "attdia" 0)
		(setvar "cmdecho" 0)
		(setq n 0)
		(repeat (sslength sel)
			(setq ent (ssname sel n))
			(progn
				(setvar "CLAYER" (cdr (assoc 8 (entget ent))))
				(command "_.-insert" "TCPOINT" "_none" (cdr (assoc 10 (entget ent))) "1" "1" "0" (rtos (cadddr (assoc 10 (entget ent))) 2 3))
				(setq n (+ 1 n))
			)
		)
		(command "_.erase" sel "")
		(setvar "attdia" 1)
		(setvar "cmdecho" 1)
	)
)
(prin1)
))

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

((lambda (... / ... )

...

))

 

est à remplacer par

(defun c:trucmuch (... / .. )

...

)

 

Un couple de paranthèse en moins ;)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

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é