FastFiber

Tekst aanpassen naar letter + oplopend getal.

Gestart door julien, ma 24 05 2004, 13:52:58

Vorige topic - Volgende topic

julien

Ik heb een reeks getallen die moeten veranderd worden naar :
letter-getal.
Tot nu toe had ik al een lisp waarmee ik getallen met een zelf gekozen waarde kon optellen, maar nu moet daar dus een letter en een liggend streepje voor komen.
Dit is wat ik heb:
(defun C:nummerrij (/ beginwaarde verschil getal)
(setq beginwaarde (getint "\nBeginwaarde: "))
(setq verschil (getint "\nStap: "))
(setq rangletter (getstring "\nRanletter: "))
  (setq getal (entsel "\nKlik op het eerste nummer:"))
       (while (/= getal nill)
               (command "change" getal "" "" "" "" "" "" beginwaarde)
               (setq beginwaarde (rangletter(+ beginwaarde verschil)))
               (setq getal (entsel "\nVolgende nummer:"))
  (if (= getal nill)(setq getal(entsel "\nVolgende poging of enter om af te sluiten:")))
       )
       (princ)
)

Iemand een idee?

Joop

Misschien heb je hier wat aan.
Ik gebruik het om in P&ID's de tagcodes in te vullen.
Het is redelijk eenvoudig om deze code om te turnen voor alleen text.

Joop


;==============================================================================
; NAME
;
; attnum.lsp - numbers attributes in ascending order  
;
; USAGE
; (load "attnum.lsp")
; attnum
;
; SYNOPSIS
;
; Numbers automatically from a number of choosen elements the first
; attribute in ascending order. The startvalue can be given. When an
; object is selected which has no attributes, the attribute will not
; be numbered but the counter will be incremented with 1. Thereby is
; it possible to count the appendages without an attribute.
;
; BUGS
;
; No errorchecking is done.
;
; HISTORY
;     version   date by  
; 1.0 19-02-2001 JFM initial version
;
;
;===============================================================================
(defun c:attnum ()
  (if (not tpp)
     (setq tpp "...")
  )
  (princ "Geef PP-code<")
  (princ tpp)
  (princ ">:")
  (setq pp (getstring T))
  (if (= pp "")
     (setq pp tpp)
  )
  (if (not tappnr)
     (setq tappnr 1)
  )
  (princ "Startvalue: <")
  (princ tappnr)
  (princ ">:")
  (setq appnr (getint))
  (if (not appnr)
     (setq appnr tappnr)
  )
  (princ "Select objects in order:")
  (setq objects (ssget))
  (setq teller 0
aantal (sslength objects)
  )
  (while (< teller aantal)
     (setq element (ssname objects teller))
     (setq nextent (entnext element))
     (setq attrib (entget nextent))
     (setq oud (assoc 1 attrib))
     (setq vlgnr (itoa appnr))
     (if (< appnr 10)
(setq vlgnr (strcat "0" vlgnr))
     )
     (setq tagcode (strcat pp vlgnr))
     (setq nieuw (cons 1 tagcode))
     (setq attrib (subst nieuw oud attrib))
     (entmod attrib)
     (entupd nextent)
     (setq appnr (+ appnr 1))
     (setq teller (+ teller 1))
  )
  (setq tappnr appnr)
  (setq tpp pp)
)
;|«Visual LISP© Format Options»
(80 3 1 2 nil "end of " 60 9 0 0 0 T T nil T)
;*** DO NOT add text below the comment! ***|;
Een gelovig volger van
"de Sacrale Kunst van Luiheid",
zijn leider "Lisp" en acoliet "Script".

julien

Niet slecht maar niet helemaal wat ik nodig heb...

Anonymous

Julien,

:?: Zijn het bestaande getallen in de tekening of nieuwe?
:?: Moet dezelfde tekst voor het getal komen of wijzigt dit ook?

Joop

julien

De tekst wordt volledig vervangen.
Met enkel getallen werkte alles perfect maar voor deze klant moet er per rij een letter voor.
Ik moet de bestaande tekst dus vervangen door vervolgens:
A-1
A-3
A-5
....
Volgende rij:
B-1
B-3
B-5

Joop

Nu is het duidelijk.
Mijn werkdag zit erop.
Morgenochtend heb ik meer voor je.

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

julien

Citaat van: JoopNu is het duidelijk.
Mijn werkdag zit erop.
Morgenochtend heb ik meer voor je.

Joop
Je bent te goed!  :ole:

Anonymous

Goeden morgen Julien,

Na enige slapelose uren en enkele liters onvervalst Brand pilsener is dit uit mijn twee wijsvingers gerold.
Het is een eerste versie. Alleen voor het toevoegen van tekst aan bestaande tekst.
Er wordt eerst gevraagd om de rangletter daarna moet je tekstselecteren.
Je kunt alleen tekst selecteren, de rest wordt genegeerd.
Ik heb bewust alle variabelen in world gelaten. Dit maakt debuggen gemakkelijker.
Als alles goed werkt kun je de variabelen in local zetten.
Als je ook niewe kolommen wilt plaatsen met voorafbepaalde rangletters kan dit programmatje aangepast worden.
Ik hoor het wel.

Veel plezier,

Joop

;;; Programma om text aan een of meerdere text-eenheden toe te voegen ;
;;; ;
;;; Created on: 25-05-2004 ;
;;; Created by: Joop F. Moelee ;
;;; Release   : 1.0 ;

(defun c:Addtxt ()
 (setq Rank (getstring "\Rangletter: ")
 ) ;_ end of setq
 (setq SelectionSet (ssget '((0 . "TEXT"))))
 (setq LengthSelectionList (sslength SelectionSet))
 (setq Counter1 0)
 (while (< Counter1 LengthSelectionList)
   (setq Entity (ssname SelectionSet Counter1)
 ElementString (entget Entity)
 OldTextString (cdr (assoc 1 ElementString))
   ) ;_ end of setq
   (setq NewTextString (strcat Rank "-" OldTextString)
 ElementString (subst (cons 1 NewTextString) (assoc 1 ElementString) ElementString)
   ) ;_ end of setq
   (entmod ElementString)
   (setq Counter1 (1+ Counter1))
 ) ;_ end of while
) ;_ 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! ***|;

julien

PRACHTIG!!
Met mijn lispje 'optellen' kan ik snel de getallen juist zetten en dan in 1 keer een letter voorplaatsen met uw lisp. Hiermee bespaar je mij veel werk hoor!  :vreegoe:

julien