CADsite forum

AutoCAD => AutoCAD probleem => Topic gestart door: Nico160775 op do 02 04 2009, 10:42:50

Titel: attributes aanpassen in een block via een marco.
Bericht door: Nico160775 op do 02 04 2009, 10:42:50
Hallo,

Kan er mij hier iemand helpen?
Heb een 500 tekeningen waarin een block met attributes een andere waarde moet krijgen.
Kan ik dit oplossen met een lisp / macro?
Zoadat ik niet elke keer dit opnieuw moet typen, want 2008 wordt 2009.

Merci in ieder geval...
Titel: Re: attributes aanpassen in een block via een marco.
Bericht door: Joop op do 02 04 2009, 10:59:55
Om een of andere reden werkt de upload directory niet.
Dus dan maar op deze manier.
Deze werkt met BaBe.
Save as bv BaBe_ChAtt.lsp
Alleen even de attributenlijst en de nieuwe waarden aanpassen.

;| Deze routine verandert de attributen
   in tekeningen naar nieuwe waarden|;


(vl-load-com)

(defun c:DoIt ()
  (princ "Running....")
  (setq temp nil)
  (setq AttributesToChange
'("TEKNR"
   "WIJZ"
   "FILE"
   "WERKOMSCHR1"
   "WERKOMSCHR2"
   "ONDERDEELOMSCHR1"
   "ONDERDEELOMSCHR2"
   "AANMAAKDATUM"
   "SOORT"
   "MODIFICATION1"
  )
  ) ;_ end of setq
;;; selecteer het kader
  (setq Selection (ssget "X" '((2 . "A3-2"))))
;;;  (if (= Selection nil)
;;;    (setq Selection (ssget "X" '((2 . "0ha3tb"))))
;;;  ) ;_ end of if
;;;  (if (= Selection nil)
;;;    (setq Selection (ssget "X" '((2 . "0BA3TBA"))))
;;;  ) ;_ end of if
  (foreach blok selection
    (setq Entity (ssname Selection 0))
    (setq EntityData (entget Entity))
    (setq VlaEntity (vlax-ename->vla-object Entity))
    (if (= (cdr (assoc 66 (entget Entity))) 1)
      (progn
(setq ListOfAttributes (vlax-safearray->list (variant-value (vla-GetAttributes VlaEntity))))
(foreach item3 ListOfAttributes
  (setq AttributeTag (vla-get-TagString item3))
  (if (member AttributeTag AttributesToChange)
    (progn
      (setq NewTextString nil)
      (setq ValueAttribute (vla-get-TextString item3))
      (setq RightAttribute (vlax-vla-object->ename item3))
      (setq RightAttribute (entget RightAttribute))
      (if (= AttributeTag "WERKOMSCHR1")
(setq NewTextString "Vereiste PBM's per ruimte")
      ) ;_ end of if
;;;     (if (= AttributeTag "WERKOMSCHR2")
;;;       (setq NewTextString "per ruimte")
;;;     ) ;_ end of if
      (if (= AttributeTag "TEKNR")
(setq NewTextString "681128")
      ) ;_ end of if
      (if (= AttributeTag "AANMAAKDATUM")
(setq NewTextString "14-07-2004")
      ) ;_ end of if
      (if (= AttributeTag "WIJZ")
(setq NewTextString "A")
      ) ;_ end of if
      (if (= AttributeTag "FILE")
(setq NewTextString "681128x.DWG")
      ) ;_ end of if
      (if (/= NewTextString nil)
(progn
  (setq RightAttribute
(subst (cons 1 NewTextString) (assoc 1 RightAttribute) RightAttribute)
  ) ;_ end of setq
  (entmod RightAttribute)
) ;_ end of progn
      ) ;_ end of if

    ) ;_ end of progn
  ) ;_ end of if
) ;_ end of foreach
      ) ;_ end of progn
    ) ;_ end of if
  ) ;_ end of foreach
  (command "regen")
  (princ)
) ;_ end of defun
;|«Visual LISP© Format Options»
(100 2 40 2 T "end of " 80 9 0 0 nil T T nil T)
;*** DO NOT add text below the comment! ***|;
Titel: Re: attributes aanpassen in een block via een marco.
Bericht door: julien op do 02 04 2009, 11:00:30
De verhuis is nog niet helemaal rond.
Ik kijk even na waarom de upload niet werkt.
Titel: Re: attributes aanpassen in een block via een marco.
Bericht door: Joop op do 02 04 2009, 11:01:56
Citaat van: julien op do 02 04 2009, 11:00:30
De verhuis is nog niet helemaal rond.
Ik kijk even na waarom de upload niet werkt.
Thanks :wink:
Titel: Re: attributes aanpassen in een block via een marco.
Bericht door: julien op do 02 04 2009, 11:02:52
Het zou weer moeten werken.
Titel: Re: attributes aanpassen in een block via een marco.
Bericht door: Nico160775 op do 02 04 2009, 11:24:35
Merci,

Maar heb al verschillende keren geprobeerd om babe te doen werken onder autocad 2009 maar dit lukt niet met volgende foutmelding.

Error: no function definition: DOS_SEARCH; error: An error has occurred inside
the *error* functionno function definition: DOS_OPENP

Dat ligt aan dat bestandje en ik weet op de pagina van BaBe kan je een ander downloaden maar 2009 staat er niet bij.
Titel: Re: attributes aanpassen in een block via een marco.
Bericht door: Joop op do 02 04 2009, 11:27:08
Te downloaden via:
http://download.rhino3d.com/download.asp?id=doslib (http://download.rhino3d.com/download.asp?id=doslib)

Vast laden via Load applications.

Succes,

Joop
Titel: Re: attributes aanpassen in een block via een marco.
Bericht door: Nico160775 op do 02 04 2009, 12:01:30
Heb alles gedaan ook de doslib bestanden gecopieerd naar een support dir.
Maar nu krijg ik de volgende melding....

Error: bad argument type: stringp nil
Error Resetting Enviroment
Titel: Re: attributes aanpassen in een block via een marco.
Bericht door: Reimer op do 02 04 2009, 13:15:31
Citaat van: Nico160775 op do 02 04 2009, 12:01:30
Heb alles gedaan ook de doslib bestanden gecopieerd naar een support dir.
...

Je moet de DOSlib17.arx in je tekening laden met AP (application load). Je kunt het bestand hier eventueel toevoegen bij Contents zodat deze in iedere tekening standaard geladen wordt.

Reimer
Titel: Re: attributes aanpassen in een block via een marco.
Bericht door: Nico160775 op do 02 04 2009, 13:49:41
Is reeds toegevoegd.
Maar krijg nog steeds dezelfde fout.
Bij het commando Babe ....

Error: bad argument type: stringp nil
Error Resetting Enviroment
Titel: Re: attributes aanpassen in een block via een marco.
Bericht door: Reimer op do 02 04 2009, 14:05:04
Ik heb bij mezelf even getest. Ik krijg dezelfde melding wanneer ik de map waar babe in staat NIET heb toegevoegd aan mijn Support File Search Path. Staat deze bij jou echt goed?

Reimer.
Titel: Re: attributes aanpassen in een block via een marco.
Bericht door: Nico160775 op do 02 04 2009, 15:47:51
ok da was dus het antwoord.....  :wink:

merci

nu nen keer Babe testen...