Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Nummern hochzählen

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Nummern hochzählen (1568 mal gelesen)
Dober Heinz
Mitglied
Technischer Zeichner


Sehen Sie sich das Profil von Dober Heinz an!   Senden Sie eine Private Message an Dober Heinz  Schreiben Sie einen Gästebucheintrag für Dober Heinz

Beiträge: 1143
Registriert: 20.12.2002

Autocad 2021/64B
Win10
WORKSTATION Intel(R) CPU E5-1620 3.60GHz
32 GB Ram
64 Bit-Betriebssystem
HP Designjet T7200
Grafik NVIDIA Quadro P4000
ZWCAD2021

erstellt am: 19. Okt. 2005 15:17    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Lispler ich wieder
Habe mir ein Lisp gepastel einfach (bin noch Anfänger)
aber se funkt.
Hat nur einen Hacken ich kann geade bis Hochzählen.


(defun textzahler (aus)
(setq copytext (entget aus))
(setq txt (cdr (assoc 1 copytext)))
(setq txt1 (substr txt 1 1))
(setq txt2 (itoa(1+(1+(atoi(substr txt 2 1))))))
(setq txt3 (substr txt 3 1))
(setq txt4 (itoa(1+(1+(atoi(substr txt 4 1))))))
(setq txtzu (strcat txt1 txt2 txt3 txt4))
  (setq neuedxf (subst (cons 1 txtzu) (assoc 1 copytext) copytext))
  (entmod neuedxf)
  )


(defun c:text-nummer()
(setvar "cmdecho" 0)
    (setq aus (car (entsel)))
    (setq elll (entget aus))
    (setq txtpt (getpoint "\n neuer Textpunkt: "))
    (command "_copy" (ssadd aus) "" (cdr (assoc 10 elll)) txtpt)
    (textzahler(entlast))
    (prin1)
)


mach das mit Zeichenkette und substr
bitte um Hilfe wie ich das anders machen kann, das ich weiter als bis 9 Zählen kann.
danke

------------------
Heinz 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



Sehen Sie sich das Profil von marc.scherer an!   Senden Sie eine Private Message an marc.scherer  Schreiben Sie einen Gästebucheintrag für marc.scherer

Beiträge: 2490
Registriert: 02.11.2001

Windows 10 64bit
AutoCAD Architecture 2018/2019 (deu/eng)
AEC-Collection 2019 (Revit und Zeugs)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung (mies implementierter Schrott)

erstellt am: 19. Okt. 2005 15:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Dober Heinz 10 Unities + Antwort hilfreich

Hi Dober Heinz,
würdest Du Dir bitte, bitte bei der Erstellung Deiner Posts ein wenig mehr Mühe geben?
Und Code Schnipsel kann man wunderbar in UBB markieren (UBB? siehe http://ww3.cad.de/foren/ubb/ubbcode.html )
Bei mir haben Deine Fragen sonst zukünftig nur noch den Haken dass ich sie ignoriere...

------------------
Ciao,
Marc

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


Sehen Sie sich das Profil von fuchsi an!   Senden Sie eine Private Message an fuchsi  Schreiben Sie einen Gästebucheintrag für fuchsi

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 19. Okt. 2005 15:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Dober Heinz 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Dober Heinz:
Hallo Lispler ich wieder
Habe mir ein Lisp gepastel einfach (bin noch Anfänger)
aber se funkt.
Hat nur einen Hacken ich kann geade bis Hochzählen.


(defun textzahler (aus)
(setq copytext (entget aus))
(setq txt (cdr (assoc 1 copytext)))
(setq txt1 (substr txt 1 1))
(setq txt2 (itoa(1+(1+(atoi(substr txt 2 1))))))
(setq txt3 (substr txt 3 1))
(setq txt4 (itoa(1+(1+(atoi(substr txt 4 1))))))
(setq txtzu (strcat txt1 txt2 txt3 txt4))
  (setq neuedxf (subst (cons 1 txtzu) (assoc 1 copytext) copytext))
  (entmod neuedxf)
  )


(defun c:text-nummer()
(setvar "cmdecho" 0)
    (setq aus (car (entsel)))
    (setq elll (entget aus))
    (setq txtpt (getpoint "\n neuer Textpunkt: "))
    (command "_copy" (ssadd aus) "" (cdr (assoc 10 elll)) txtpt)
    (textzahler(entlast))
    (prin1)
)


mach das mit Zeichenkette und substr
bitte um Hilfe wie ich das anders machen kann, das ich weiter als bis 9 Zählen kann.
danke


irgendwie verstehe ich dein Lisp nicht ganz
du holst dir aus dem gc1 eines elementes (attribut nehme ich an) den text, der scheint 4 stellig zu sein.

dann splittest du ihn auf die 4 stellen auf txt1 txt2 txt3 txt4

wobei du die 1. stelle belässt, die 2. stelle um 2 erhöst, die 3. belääst du wieder und die 4. wird wieder um 2 erhöht.

???????????????????????????????

erklär uns doch bitte, was steht in dem Attribut drin, und was soll bei jedem Lisp-Aufruf passieren ?????

------------------

Ing. Anton Fuchs
WWW.FFZELL.AT.TC

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Dober Heinz
Mitglied
Technischer Zeichner


Sehen Sie sich das Profil von Dober Heinz an!   Senden Sie eine Private Message an Dober Heinz  Schreiben Sie einen Gästebucheintrag für Dober Heinz

Beiträge: 1143
Registriert: 20.12.2002

erstellt am: 19. Okt. 2005 16:06    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

@ Fuchsi
Habe einen Text "M1/2" und der soll erhöht werden auf "M3/4" .... "M5/6" und so weiter, funktioniert auch so nur kann ich gerade bis Nummer 9 Hochzählen ich will aber weiter Hochzählen.
Kann auch sein das ich von "M12/13" auf "M14/15" hochzählen muss.
also ich nehme einen Vorhanden Text und Zähle von der vorgegebenen Zahl weiter.
danke   

------------------
Heinz 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


Sehen Sie sich das Profil von fuchsi an!   Senden Sie eine Private Message an fuchsi  Schreiben Sie einen Gästebucheintrag für fuchsi

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 19. Okt. 2005 16:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Dober Heinz 10 Unities + Antwort hilfreich

z.B.: so

setzt voraus, dass der string immer Mx/y lautet, wobei x und y beliebige intergerwerte sein können

Code:

(setq text "M1/2")
(repeat 50
  (print text)
  (setq text (erhoehe text))
)


(defun erhoehe (text / pos zahl1 zahl2 )
  (setq pos (vl-string-position (ascii "/") text)) ; wo kommt denn der / vor ??

  (setq zahl1 (atoi (substr text 2 (1- pos)))) ; alles nach M und vor /
  (setq zahl2 (atoi (substr text (+ 2 pos)))) ; alles nach /

  (setq zahl1 (+ 2 zahl1)) ; erhöhen
  (setq zahl2 (+ 2 zahl2))

  (strcat "M" (itoa zahl1) "/" (itoa zahl2)) ; und wieder zusammenbauen

)


lässt man das laufen kommt folgendes raus

"M1/2"
"M3/4"
"M5/6"
"M7/8"
"M9/10"
"M11/12"
"M13/14"
"M15/16"
"M17/18"
"M19/20"
"M21/22"
"M23/24"
"M25/26"
"M27/28"
"M29/30"
"M31/32"
"M33/34"
"M35/36"
"M37/38"
"M39/40"
"M41/42"
"M43/44"
"M45/46"
"M47/48"
"M49/50"
"M51/52"
"M53/54"
"M55/56"
"M57/58"
"M59/60"
"M61/62"
"M63/64"
"M65/66"
"M67/68"
"M69/70"
"M71/72"
"M73/74"
"M75/76"
"M77/78"
"M79/80"
"M81/82"
"M83/84"
"M85/86"
"M87/88"
"M89/90"
"M91/92"
"M93/94"
"M95/96"
"M97/98"
"M99/100"
"M101/102

[EDIT]
PS.: wennst in Zukunft gleich so erklärst, tun wir uns um eineiges leichter als einen undurchschaubaren Code-Schnippsel.


------------------
   
Ing. Anton Fuchs
WWW.FFZELL.AT.TC

[Diese Nachricht wurde von fuchsi am 19. Okt. 2005 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Dober Heinz
Mitglied
Technischer Zeichner


Sehen Sie sich das Profil von Dober Heinz an!   Senden Sie eine Private Message an Dober Heinz  Schreiben Sie einen Gästebucheintrag für Dober Heinz

Beiträge: 1143
Registriert: 20.12.2002

erstellt am: 19. Okt. 2005 16:23    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

@ Fuchsi
Danke die 1000 mal genau das brauchte ich
danke us underwegs

------------------
Heinz 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

archtools
Mitglied



Sehen Sie sich das Profil von archtools an!   Senden Sie eine Private Message an archtools  Schreiben Sie einen Gästebucheintrag für archtools

Beiträge: 823
Registriert: 09.10.2004

Entwickler für AutoCAD, BricsCAD u.a., alle Systeme

erstellt am: 19. Okt. 2005 16:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Dober Heinz 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Dober Heinz:
@ Fuchsi
Habe einen Text "M1/2" und der soll erhöht werden auf "M3/4" .... "M5/6" und so weiter, funktioniert auch so nur kann ich gerade bis Nummer 9 Hochzählen ich will aber weiter Hochzählen.
Kann auch sein das ich von "M12/13" auf "M14/15" hochzählen muss.
also ich nehme einen Vorhanden Text und Zähle von der vorgegebenen Zahl weiter.

Hallo Heinz,

Dein Problem ist schwerer zu lösen, als Du es auf den ersten Blick für wahrscheinlich hältst - außer, wenn Deine Texte immer eine sehr festgelegte Struktur haben. Das Problem ist, dass Dein LISP-Programm erkennen muss, welche Zahlen wo innerhalb Deines Textes stehen.

Wenn es immer so ist, dass der Aufbau so ist:

"beliebiger Text ohne Ziffern" + Ganzzahl + "/" + Ganzzahl

dann ist es einfach zu lösen. Dann zerlegst Du den String in eine Liste von einzelnen Zeichen (dazu gibt's irgend eine fertige vl-??? -  Funktion, vermutlich heisst sie vl-string-to-list oder so ähnlich), und die bastelst Du in Deine Komponenten zusammen, also z.B. wird aus "ABCM13/14" erst ("A" "B" "C" "M" "1" "3" "/" "1" 4") und daraus dann ("ABCM" "13" "/" "14"). Diese Teile kannst Du nun manipulieren, wobei dann via (itoa (1+ (read element))) z.B. auch aus "99" korrekt "100" wird, und dann kannst Du diese manipulierte Liste von Strings wieder mit einem simplen (apply 'STRCAT stringliste) wieder zu einem neuen String zusammen führen.

Ich hoffe, das hilft Dir ein wenig - trotzdem musst Du aber in diese für einen Anfänger schon ziemlich schwere Problematik sicher noch eine Menge Hirnschmalz investieren.

Gruß
Tom Berger

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Dober Heinz
Mitglied
Technischer Zeichner


Sehen Sie sich das Profil von Dober Heinz an!   Senden Sie eine Private Message an Dober Heinz  Schreiben Sie einen Gästebucheintrag für Dober Heinz

Beiträge: 1143
Registriert: 20.12.2002

erstellt am: 19. Okt. 2005 18:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Herr Berger
Ja das habe ich schon gemerkt das das nicht so einfach ist, wie es aussieht
danke für Info

------------------
Heinz 

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz