Aller au contenu

nom objet LISP


Demixav

Messages recommandés

Bonjour à tous...

 

J'essaie de modifier un LISP et je pense que ca bloque au sujet du "nom de l'objet" que je souhaite sélectionner...

Désolé si je me trompe sur l'exactitude des termes déjà!

 

Voilà, par exemple, dans les lisp, quand on nomme un cercle, il est écrit "CIRCLE" ou pour une polyligne c'est "LWPOLYLINE"... si je ne m'abuse!

Qu'en est il pour les fenetres de présentation? pour les fmult?

Comment faire pour connaitre le "nom en LISP" d'un objet? j'ai bien tenté de passer par le "nom de l'objet" avec un champ mais ca me retourne "AcDbViewport"... mais c'est pas ca... :(

Dans le désespoir, j'ai noté "FENETRE" et "FMULT" mais pas ca non plus je suppose... :(

 

Le LISP en question ci dessous... je souhaite sélectionner une fenetre pour avoir une insertion de texte avec son echelle perso! je sais que l'échelle perso ne correspond pas à l'échelle vraie de la fenetre mais c'est pour me lancer des pistes et pourquoi pas apres remanier ca avec une formule avec un rapport à 1000 pour avoir la vraie échelle...

Quand je lance ce LISP j'ai ce message "Spécifiez le point d'insertion: ; erreur: type d'argument incorrect: stringp nil"

 

Merci pour votre aide!

Bon week!

Xav

 

(defun c:chp_ech (/ AcDoc Space obj ins)

 

(vl-load-com)

 

(setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))

 

Space (if (= 1 (getvar "CVPORT"))

 

(vla-get-PaperSpace AcDoc)

 

(vla-get-ModelSpace AcDoc)

 

)

 

)

 

(if (and (setq obj (car (entsel)))

 

(member (cdr (assoc 0 (entget obj)))

 

'("FENETRE" "FMULT" "VIEWPORT")

 

)

 

(setq ins (getpoint "\nSpécifiez le point d'insertion: "))

 

)

 

(vla-addMtext Space

 

(vlax-3d-point ins)

 

0.0

 

(strcat

 

"%<\\AcObjProp Object(%<\\_ObjId "

 

(itoa (vla-get-ObjectID (vlax-ename->vla-object obj)))

 

">%).ViewportOn \f "%bl0\">%"

 

)

 

)

 

)

 

(princ)

 

)

AutoCad Map 3D 2011 - Covadis v16.0d

Windows 7 - 64b

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Les noms dont tu parles sont les noms DXF (AcDbViewport est le nom de classe ObjectARX).

 

Les noms DXF sont assez faciles à obtenir en LISP pour les entités graphiques (qu'on peut sélectionner) :

(setq ent (car (entsel)))

retourne le nom d'entité sélectionnée (ENAME ou identifiant de l'entité).

 

(setq elst (entget ent))

retourne la liste de données DXF de l'entité.

 

(cdr (assoc 0 elst))

retourne le nom DXF de l'entité (code de groupe 0).

 

donc :

(cdr (assoc 0 (entget (car (entsel)))))

retourne directement le nom DXF de l'entité sélectionnée.

Fais une recherche avec DXF dans l'aide ou mieux, suis les instructions décrites ici pour avoir l'aide AutoLISP / Visual LISP "à l'ancienne" dans laquelle tu trouveras une rubrique entière en français dédiée aux 'Références DXF'.

 

 

Pour avoir le nom de classe ObjectARX, on peut le faire en Visual LISP :

(vla-get-ObjectName (vlax-ename->vla-object (car (entsel))))

ou en AutoLISP :

(cdr (assoc 100 (reverse (entget (car (entsel))))))

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

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é