Hoofdmenu

Rename

Gestart door Nico160775, ma 04 09 2006, 13:55:14

Vorige topic - Volgende topic

Nico160775

Hi,
Zit al een tijdje met een probleem dat ik van een hele boel tekeningen de layers moet hernoemen.
vb.
123_file moet worden 456_file
123_pic moet worden 456_pic
123_test moet worden 456_test

Zoals je ziet moet ik enkel het voorvoegsel renamen.
Als je dat handmatig doet dan kan je gewoon 123* 456*
nu wil ik die automatiseren maar hij heeft blijkbaar een probleem met het sterretje.
Kan iemand me hierbij helpen?

Thanks.

Joop

Dit is relatief gemakkelijk :lol: te doen met een lisp.
Daarna gebruik je BaBe om alle tekeningen te bewerken met deze lisp.
BaBe is te downloaden van deze site.
Een gelovig volger van
"de Sacrale Kunst van Luiheid",
zijn leider "Lisp" en acoliet "Script".

Nico160775

Geen ervaring met lisp, is er iemand die me daar meer info kan over geven?
En Babe is me ook niet bekend.

Thanks,
                    Voor het snelle antwoord.

Joop

BaBe kun je hier downloaden.

http://www.cadsite.be/tips/BaBe.zip

"Info over Lisp" is (te!) uitgebreid.
Op deze site vind je diverse door ondergetekende  :oops: en anderen gemaakte lessen over Lisp.
Om snel aan de slag te gaan ( de baas wacht niet, die heeft nooit tijd) wil ik wel voor deze keer een routine voor je schrijven dat te gebruiken is met BaBe.
Echter: ook dit kost tijd! :mrgreen:
Een gelovig volger van
"de Sacrale Kunst van Luiheid",
zijn leider "Lisp" en acoliet "Script".

Nico160775

Dat zou super zijn moest je dat zien zitten!!!

Joop

Nou, hier is hij dan eindelijk.
Tenslotte ben ik lui en duren de dingen dus wat langer. (moet je af en toe mijn vrouw horen  :(.)

Het programma gebruikt de layer table om de namen van de lagen te controleren en de e-name op te halen.
Daarna is het de normale manier van element aanpassen.

Veel plezier, en heb je nog vragen: gewoon posten.


;| Deze routine is geschreven voor het gebruik met BaBe
en wijzigd de namen van layers.
De te wijzigen tekst en de vervangende tekst moeten in het programma ingevuld worden
in de vorm van "dotted-pair lists". b.v. ("OudeTekst" . "NieuweTekst").
Dit gebeurd in de eerste regel na (defun c:DoIt ()
=======================================================================
Geschreven : 06-09-2006 door : Joop F. Moelee ED
|;
(vl-load-com)
(defun c:DoIt ()
  (setq SubstituteList '(("3" . "8") ("5" . "9")))
  (setq StringsToSearchFor '())
  (foreach Item SubstituteList
    (setq StringsToSearchFor (cons (car Item) StringsToSearchFor))
  )
  (setq LayerTableItem (tblnext "LAYER" T))
  (while LayerTableItem
    (setq LayerTableName (cdr (assoc 2 LayerTableItem)))
    (foreach OldString StringsToSearchFor
      (setq StringPosition (vl-string-search OldString LayerTableName))
      (if StringPosition
(progn
  (setq LayerEntityName (tblobjname "LAYER" LayerTableName))
  (setq LayerData (entget LayerEntityName))
  (setq OldLayerName (cdr (assoc 2 LayerData)))
  (setq SubstituteText (cdr (assoc OldString SubstituteList)))
  (setq NewLayerName (vl-string-subst SubstituteText OldString OldLayerName))
  (setq NewLayerName (cons 2 NewLayerName))
  (setq LayerData (subst NewLayerName (cons 2 OldLayerName) LayerData))
  (entmod LayerData)
  (entupd LayerEntityName)
)
      )
    )
    (setq LayerTableItem (tblnext "LAYER"))
  )
)

Een gelovig volger van
"de Sacrale Kunst van Luiheid",
zijn leider "Lisp" en acoliet "Script".

HofCAD

#6
Beste Joop,

Goed, heel goed.

Met vriendelijke groet,
HofCAD CSI
ACADcadabra

Nico160775

Beste Joop,

Blijkbaar wil het bij mij niet lukken.
Dit krijg ik de command line:

Regenerating model.
AutoCAD menu utilities loaded.
Command: appload
BaBe.lsp successfully loaded.
Command:
Command:
Command: babe
*Cancel*
Command:
Command:
Command:
Error: no function definition: DOS_SEARCH; error: An error has occurred inside
the *error* functionno function definition: DOS_OPENP

Waarschijnlijk type ik iets verkeerd maar vind het niet.

Joop

Heb je ook de DosLib geladen?
Deze is meegeleverd met BaBe en is anders te downloaden op www.McNeel.com

Voor AutoCAD 2007 is een nieuwe versie uit nl. 7.2.2
Vervang de sectie (defun LoadDosLIb door onderstaande code en ook voor AutoCAD 2007 wordt doslib automatisch geladen.

(defun LoadDoslib (/ libfile found arxfile)

;;; Check for AutoCAD 2000, 2000i, or 2002
  (if (= "15" (substr (getvar "acadver") 1 2))
    (if (not (member "doslib15.arx" (arx)))
      (if (findfile "doslib15.arx")
(arxload "doslib15")
      ) ;_ end of if
    ) ;_ end of if
  ) ;_ end of if
;;; Check for AutoCAD 2004, or 2005
  (if (= "16" (substr (getvar "acadver") 1 2))
    (if (not (member "doslib16.arx" (arx)))
      (if (findfile "doslib16.arx")
(arxload "doslib16")
      ) ;_ end of if
    ) ;_ end of if
  ) ;_ end of if
;;; Check for AutoCAD 2007
  (if (= "17" (substr (getvar "acadver") 1 2))
    (if (not (member "doslib17.arx" (arx)))
      (if (findfile "doslib17.arx")
        (arxload "doslib17")
      )
    )
  );_ end of if
) ;_ end of defun


Een gelovig volger van
"de Sacrale Kunst van Luiheid",
zijn leider "Lisp" en acoliet "Script".

NL-chiel

Citaat van: Joop op wo 06 09 2006, 12:49:24

(moet je af en toe mijn vrouw horen  :(.)



En waarom zou je het beter hebben als een ander  :wink:
Autocad 2008
StabiCad IV