Aller au contenu

[Résolu] pline_block help


Messages recommandés

Posté(e)

bonjour

 

je revient a la charge avec plin_block

 

je rappelle que ce lisp fonctionne très bien sur v2012 et pas sur mon poste en v2009 .

 

certes j'ai changer des choses ,mais c'est les mes changement sur 2012.

je ne comprend pas

 

voici le code et je remercie encor une fois gille chanteau l'auteur .*

ce lisp et devenue indispensable pour mon collège et pour mois qui l'est découvert nada .

 

;;;  sf -Gilles Chanteau- 13/04/07
;;; Insère le bloc "sf" 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 c:sf (/ 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 "sf"))
(findfile (setq bloc "sf.dwg"))
     )
   (progn

     ;; attribut "nom de la pièce"
     (if (not (setq nom (getname "Nom de la pièce")))
(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 "sf" "ech"))
   	(vlax-ldata-put "sf" "ech" 1)
 	)
 	(if (not (setq
         ech
      	(getreal
		(strcat	"\nEntrez le facteur d'échelle <"
			(rtos (vlax-ldata-get "sf" "ech"))
			">: "
		)
      	)
       )
     	)
   	(setq ech (vlax-ldata-get "sf" "ech"))
   	(vlax-ldata-put "sf" "ech" ech)
 	)
 	(setq	id   (vla-get-ObjectID obj)

	;; Attribut périmètre (mm -> m)
	long (strcat "%<\\AcObjProp Object(%<\\_ObjId "
	         (itoa id)
	         ">%).Length \\f \"%lu2%pr2%ct8[1.00]\">%"
         )

	;; Attribut surface (mm² -> m²)
	aire (strcat "%<\\AcObjProp Object(%<\\_ObjId "
	         (itoa id)
	         ">%).Area \\f \"%lu2%pr2%ct8[1e-0]\">%" 
         )
 	)

 	(setq	ref
     (vla-InsertBlock
       Space
       (vlax-3d-point (trans ins 1 0))
       bloc
       ech
       ech
       1
              	(angle '(0 0 0) (trans (getvar 'ucsxdir) 0 (trans '(0 0 1) 1 0 T)))
     )
 	)

 	;; 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 \"sf\" est introuvable.")
 )
 (princ)
)

 

 

Nous vivons tous dans le ventre d'un chien géant

Tout le monde le sait mais personne ne dit rien du tout

 

ultra Vomit

Posté(e)

Salut,

 

Ce n'est pas la peine de multiplier les sujets, ça ne t'amèneras pas plus de réponses. Tu en avais commencé un, tu aurais dû continuer dans celui-là.

 

Ceci dit, je répète ce que j'ai dit, il n'y a rien dans le code que tu as posté qui puisse provoquer une erreur.

Le fichier "GetName.dcl" est-il bien dans un répertoire des chemins de recherche ?

Un bloc "sf" avec 3 attributs (nom, aire, long) est-il bien présent dans le dessin ou sous forme de fichier dwg ("sf.dwg") dans un répertoire des chemins de recherche ?

 

Par ailleurs, le message d'erreur que tu as posté dans l'autre sujet montre qu'un LISP chargé autre que pline_block a une mauvaise gestion d'erreur.

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

Posté(e)

mea culpa

 

Je ne comprend pas pour quoi cela ne marche pas ,lisp pline_block ;getname ;getname dcl ,sont au même endroit que tous les autres lisp qui eu fonctionne .

 

merci de toute aide .

 

 

Nous vivons tous dans le ventre d'un chien géant

Tout le monde le sait mais personne ne dit rien du tout

 

ultra Vomit

Posté(e)
Le fichier "GetName.dcl" est-il bien dans un répertoire des chemins de recherche ?
Je pense que le soucis est ici, il faut ajouter le répertoire ou est situer le DCL à la liste des chemin de recherche dans les option d'AutoCad.

Sous 2011 que j'ai sous la main il faut se rendre dans "Option", dans l'onglet "Fichier" puis sur "Chemin de recherche des fichiers de support"

Et la ajouter une entrée correspondante à l'emplacement de ton fichier DCL.

C'est en forgeant que l'on devient forgerons.

Et c'est en sciant que Léonard DeVinci!

Posté(e)

merci et bravo

 

je n'y aurais jamais pense car pour la version 2012 il n'y a qu'un chemin.

bon ça marche

 

 

Nous vivons tous dans le ventre d'un chien géant

Tout le monde le sait mais personne ne dit rien du tout

 

ultra Vomit

Posté(e)

je te remercie encore

tu n'a pas idée du service que tu ma rendu .

 

 

Nous vivons tous dans le ventre d'un chien géant

Tout le monde le sait mais personne ne dit rien du tout

 

ultra Vomit

Posté(e)

Pas de soucis, si ça peu dépanner, c'est le genre de truc qui arrive au taf et auquel on ne pense pas!

C'est en forgeant que l'on devient forgerons.

Et c'est en sciant que Léonard DeVinci!

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é