Aller au contenu

LISP


phil2

Messages recommandés

Bonjour a tous

 

j'ai trouvé sur ce site un lisp tres pratique qui met a jour un attribut de bloc par rapport a son altitude (MAJZ)

mais existe-il le contraire ???

l'altitude du bloc qui se modifie en fontion du texte de l'attribut

se qui donnerait

AVANT bloc a Z=0 pour attribut 29.30

APRES bloc à Z=29.30 pour attribut 29.30

 

merci d'avance

Phil

Lien vers le commentaire
Partager sur d’autres sites

Bonjour,

 

l'altitude du bloc qui se modifie en fontion du texte de l'attribut

se qui donnerait

AVANT bloc a Z=0 pour attribut 29.30

APRES bloc à Z=29.30 pour attribut 29.30

Voici un lien sur un sujet similaire.. (il y en a beaucoup d’autres)

http://cadxp.com/index.php?/topic/33778-resolu-point-topographique-covadis-2d-3d/page__p__182436__fromsearch__1#entry182436

 

En réponse n°6 tu trouveras un code et une explication sur les constantes à modifier pour l’adapter à ton cas.

 

j'ai trouvé sur ce site un lisp tres pratique qui met a jour un attribut de bloc par rapport a son altitude (MAJZ)

As-tu le lien du lisp que tu cites ? Personnellement je pense que pour ce type de situation quant c’est possible les champs me semblent plus adapté qu’un lisp.

 

A+

Apprendre => Prendre => Rendre

Lien vers le commentaire
Partager sur d’autres sites

Bonjour

merci a toi pour ce lisp qui fonctionne partaitement

non je n'ai pas le lien,je sais que c'est un lisp crée par brice studer en mars 2011

le probleme avec le champs c'est que je travaliie sur des blocs que je recupere et pas que je crée

 

A+

Phil

Lien vers le commentaire
Partager sur d’autres sites

Bonjour bryce,

 

Rapidement une suggestion vis-à-vis de ma remarque formulé plus haut :

As-tu le lien du lisp que tu cites ? Personnellement je pense que pour ce type de situation quant c’est possible les champs me semblent plus adapté qu’un lisp.

 

Je verrai bien alors une micro modif dans ton code, pour faire une majZ+ il suffirait de varianter la séquence suivante :

(if (= blk (vla-get-effectivename B))
 (if (and (setq ins (vlax-get b 'InsertionPoint)) (setq ins (caddr ins)))
   (putattvalue b att (rtos ins 2 precision))
 )
) ;if b = blk

 

Par

(if (= blk (vla-get-effectivename B))
 ;; (if (and (setq ins (vlax-get b 'InsertionPoint)) (setq ins (caddr ins)))
 ;; (putattvalue b att (rtos ins 2 precision))
 (putattvalue
   b
   att
   (strcat "%<\\AcObjProp Object(%<\\_ObjId "
           (gc:GetObjectIdString B)
           ">%).InsertionPoint \\f \"%lu2%pt4%pr"
           (itoa precision)
           "\">%"
   )
 )
 ;;)
) ;if b = blk

 

Puis de terminer avec un (vla-regen acdoc acActiveViewport) en sortie de code.

 

Voilà histoire mettre tout le monde d’accord sur le sujet ;)

A+

 

 

 

(Ps : le code de la routine associée écrite par (gile))

;; gc:GetObjectIdString
;; Retourne l'ObjectId de 'obj' sous forme de chaîne représentant un entier 32 ou 64 bits
;;
;; Argument
;; obj : l'objet dont on cherche l'ObjectId (vla-object)

(defun gc:GetObjectIdString (obj)
 (or *util* (setq *util* (vla-get-Utility (vla-get-ActiveDocument (vlax-get-acad-object)))))
 (if (vlax-method-applicable-p *util* 'GetObjectIdString)
   (vla-GetObjectIdString *util* obj :vlax-false)
   (itoa (vla-get-ObjectId obj))
 )
)

Apprendre => Prendre => Rendre

Lien vers le commentaire
Partager sur d’autres sites

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é