Aller au contenu

stormidable

Membres
  • Compteur de contenus

    5
  • Inscription

  • Dernière visite

Contact Methods

  • Website URL
    http://

stormidable's Achievements

Newbie

Newbie (1/14)

0

Réputation sur la communauté

  1. merci pour la réponse je vais tester tout ça
  2. Bonjours,je débute avec les réacteurs et je me demande si il est possible de définir un réacteur pour faire en sorte que lorsque l'on double clic sur un type précis de blocs (par exemple un bloc sur lequel est attaché un réacteur de type "vlr-mouse-reactor" avec comme événement ":vlr-beginDoubleClick") à la place de la fenetre "editeur d'attibut" autoCAD lance un programme special en lisp.
  3. J'ai cherché sans suces une variable système qui permettrait d'éviter que les hachures soient tronqué lorsque du texte se trouve sur son emplacement. Est ce que quelqu'un pourrait me dire si il en existe une ou si il y à une méthode pour éviter cela ? Merci
  4. Je te remercie pour ta réponse, mais en regardant bien il me semble vraiment que les objets ObjSource et Objcible ne sont pas les mêmes : OblSource est un "IAcadBlockReference2" Objcible est un "IAcadMLeader2" De même AttSource est un "IAcadAttributeReference" et Attcible un "IAcadAttribute2". De plus je n'utilise pas la méthode "SetAttributeValue" mais "SetBlockAttributeValue" qui s'applique à un MLeader et qui modifie la valeur d'un attribut d'un bloc contenus dans ce MLeader. SetAttributeValue Methode Sets the attribute value in block content with attribute definition id. Signature object.SetBlockAttributeValue attdefId, value Object MLeader The object this method applies to. attdefID Long; Input-only The attribute definition ID. value String; Input-only The new attribute value. [Edité le 26/6/2010 par stormidable]
  5. Bonjours à tous, j'ai un petit problème avec un script que j'essaye de bricoler. Je cherche à insérer un champ dans un bloc contenue dans une ligne de repère multiple, Je pense avoir compris le principe (notamment grâce au lisp de Gile « pline_block » merci ;-) Mais le programme ne fonctionne pas : le champ est bien inséré mais sa valeur est « #### » et le type de champ, lorsque je l'édite est « inconnu ». Pourtant lorsque je corrige le champ manuellement et que je compare la définition du champ corrigé et la définition du champ crée par le programme ce sont exactement les mêmes (à la différence près du doublement des caractères spéciaux « \ ») et le numéro ID de l'attribut source est bien le même. Peut être est-ce la fonction « vla-setBlockAttributeValue » qui ne gère pas l'édition des champs ? PS: dans le programme j'utilise un script que j'ai trouvé sur AUGI qui retourne la liste des attributs du bloc contenu dans la ligne de repère multiple. Voici le script en question, en espérant que quelqu'un aura la gentillesse d'y jeter un coup d'œil . Sachant qu'il y a des personnes très motivés sur ce forum je vous en remercie d'avance ;) (defun c:ic () (c:InsertChamp) ) (defun c:InsertChamp (/ AT:GetAttributes js n ObjSource ObjCible Attsource AttCible champ) ;;; Extract all Attributes from Block or Multileader w/Block ;;; #Object - Block/Multileader to extract attributes ;;; Alan J. Thompson, 08.17.09 (defun AT:GetAttributes (#Object / #Object #Entget) (if #Object (progn ;; if list, strip out ename (and (vl-consp #Object) (setq #Object (car #Object))) (cond ;; if vla-object & multileader with block, convert to ename ((and (eq (type #Object) 'VLA-OBJECT) (vlax-property-available-p #Object 'ContentBlockName) ) ;_ and (setq #Object (vlax-vla-object->ename #Object)) ) ;; if ename & block, convert to vla-object ((and (eq (type #Object) 'ENAME) (eq "INSERT" (cdr (assoc 0 (entget #Object)))) ) ;_ and (setq #Object (vlax-ename->vla-object #Object)) ) ) ;_ cond ;; run through options (cond ;; vla-object & attributed block ((and (eq (type #Object) 'VLA-OBJECT) (eq "AcDbBlockReference" (vla-get-objectname #Object) ) ;_ eq (eq (vla-get-hasattributes #Object) :vlax-true) ) ;_ and (vlax-safearray->list (vlax-variant-value (vla-getattributes #Object) ) ;_ vlax-variant-value ) ;_ vlax-safearray->list ) ;; ename or entsel-style list ((or (eq (type #Object) 'ENAME) (vl-consp #Object) ) ;_ or (setq #Entget (entget #Object)) (vl-remove-if '(lambda (x) (or (not x) (not (eq "AcDbAttributeDefinition" (vla-get-objectname x) ) ;_ eq ) ;_ not ) ;_ or ) ;_ lambda (mapcar '(lambda (x) (if (eq 330 (car x)) (vlax-ename->vla-object (cdr x)) ) ;_ if ) ;_ lambda #Entget ) ;_ mapcar ) ;_ vl-remove-if ) ) ;_ cond ) ;_ progn ) ;_ if ) ;;;============================================= ;;; LANCEMENT DU PROGRAMME ;;;============================================= (vl-load-com) (if (not *acdoc*) (setq *acdoc* (vla-get-ActiveDocument (vlax-get-acad-object))) ) ;;;Selection du bloc source (prompt "\nSélectionner le bloc source et la ligne de repère cible : " ) (setq js (ssget (list (cons -4 " (cons 0 "INSERT") (cons 0 "MULTILEADER") (cons -4 "OR>") ) ) ) (setq n 0) (repeat (sslength js) (setq o (ssname js n)) (if (= "INSERT" (cdr (assoc 0 (entget o)))) (setq ObjSource (vlax-ename->vla-object o)) (setq ObjCible (vlax-ename->vla-object o)) ) (setq n (1+ n)) ) (setq Attsource (nth 0 (vlax-invoke ObjSource 'GetAttributes))) (setq AttCible (nth 0 (AT:GetAttributes ObjCible))) (setq champ (strcat "%<\\AcObjProp Object(%<\\_ObjId " (itoa (vla-get-ObjectID attsource)) ">%).TextString>%" ) ) (vla-setBlockAttributeValue ObjCible (vla-get-ObjectID AttCible) champ ) )
×
×
  • 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é