Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  Nummerierung mit drei Stellen

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:  Nummerierung mit drei Stellen (953 mal gelesen)
xem
Mitglied
Zeichner


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

Beiträge: 847
Registriert: 07.08.2008

Software:
AutoCAD 2022 - 64bit
Windows 10 Pro - 64bit
PDFCreator 1.0.2 - 32bit
Ghostscript 9.0 - 64bit
PDF-XChange Viewer - 64bit
GIMP 2.6.8 - 64bit
MS Office 2013 - 32bit
Opera 12 - 32bit
MacroX - 32bit
7-zip - 64bit
-----------------------
Hardware:
Intel i5 680 3,6GHz @ 4GHz
8GB RAM 1333MHz
nVidia GTX 460 1024MB
Intel SSD 2.5 80GB X25-M
Samsung SyncMaster 245B+
Iiyama ProLite E1900s
Logitech mx518
Logitech G11
Roccat Sense Glacier Blue

erstellt am: 28. Nov. 2019 09:04    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,

ich lasse mir mit dem folgenden LISP eine Polylinie nummerieren.

Code:
(defun c:test ( / e i j m n p s )
(if (setq s (ssget '((0 . "LWPOLYLINE"))))
  (repeat (setq i (sslength s))
    (setq e (ssname s (setq i (1- i)))
          n (cdr (assoc 210 (entget e)))
          m (vlax-curve-getendparam e)
          j -1
    )
    (while (<= (setq j (1+ j)) m)
      (setq p  (trans (vlax-curve-getpointatparam e j) 0 e))
      (entmakex
        (list
          (cons  0 "TEXT")
          (cons  7 (getvar 'TEXTSTYLE))
          (cons 40 (getvar 'TEXTSIZE))
          (cons 10 p)
          (cons 11 p)
          (cons 72 1)
          (cons 73 2)
          (cons  1 (itoa (1+ j)))
          (cons 210 n)
        )
      )
    )
  )
)
(princ)
)

Jetzt möchte ich den Text aber immer dreistellig, also nicht nur die Nummer 1 sondern die Nummer 001 haben.
Hat da einer eine Idee?

Danke

------------------
Error in Layer 8

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.

erstellt am: 28. Nov. 2019 09:15    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 xem 10 Unities + Antwort hilfreich

(defun FILLSTR(STR ANZ)
  (while (<(strlen STR)ANZ)(setq STR(strcat "0" STR)))
  STR
)

und dann
statt
(cons  1 (itoa (1+ j)))

(cons  1 (FILLSTR(itoa (1+ j))3))

------------------
Also ich finde Unities gut ... und andere sicher auch
---------------------------------------
  - Thomas -          
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

System: F1
und Google

erstellt am: 28. Nov. 2019 09:16    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 xem 10 Unities + Antwort hilfreich

STRLEN
IF vielelicht auch COND
STRCAT

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

xem
Mitglied
Zeichner


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

Beiträge: 847
Registriert: 07.08.2008

Software:
AutoCAD 2022 - 64bit
Windows 10 Pro - 64bit
PDFCreator 1.0.2 - 32bit
Ghostscript 9.0 - 64bit
PDF-XChange Viewer - 64bit
GIMP 2.6.8 - 64bit
MS Office 2013 - 32bit
Opera 12 - 32bit
MacroX - 32bit
7-zip - 64bit
-----------------------
Hardware:
Intel i5 680 3,6GHz @ 4GHz
8GB RAM 1333MHz
nVidia GTX 460 1024MB
Intel SSD 2.5 80GB X25-M
Samsung SyncMaster 245B+
Iiyama ProLite E1900s
Logitech mx518
Logitech G11
Roccat Sense Glacier Blue

erstellt am: 28. Nov. 2019 09:49    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

Danke, das funktioniert schon.
Jetzt möchte ich noch ein Prefix davor eingeben.

Ist getsting richtig und wie bekomme ich das Prefix vor die Zahl?

Code:
(defun c:test ( / e i j m n p s PFX )
(setq PFX (getstring "\nPrefix"))
(if (setq s (ssget '((0 . "LWPOLYLINE"))))
  (repeat (setq i (sslength s))
    (setq e (ssname s (setq i (1- i)))
          n (cdr (assoc 210 (entget e)))
          m (vlax-curve-getendparam e)
          j -1
    )
    (while (<= (setq j (1+ j)) m)
      (setq p  (trans (vlax-curve-getpointatparam e j) 0 e))
      (entmakex
        (list
          (cons  0 "TEXT")
          (cons  7 (getvar 'TEXTSTYLE))
          (cons 40 (getvar 'TEXTSIZE))
          (cons 10 p)
          (cons 11 p)
          (cons 72 1)
          (cons 73 2)
          (cons  1 (FILLSTR(itoa (1+ j))3))
          (cons 210 n)
        )
      )
    )
  )
)
(princ)
)
(defun FILLSTR(STR ANZ)
  (while (<(strlen STR)ANZ)(setq STR(strcat "0" STR)))
  STR
)

------------------
Error in Layer 8

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.

erstellt am: 28. Nov. 2019 10: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 Nur für xem 10 Unities + Antwort hilfreich

(defun c:test ( / e i j m n p s PFX FILLSTR)
  (defun FILLSTR(STR ANZ)
    (while (<(strlen STR)ANZ)(setq STR(strcat "0" STR)))
    STR
  )
 
(setq PFX (getstring "\nPrefix"))
(if (setq s (ssget '((0 . "LWPOLYLINE"))))
  (repeat (setq i (sslength s))
    (setq e (ssname s (setq i (1- i)))
          n (cdr (assoc 210 (entget e)))
          m (vlax-curve-getendparam e)
          j -1
    )
    (while (<= (setq j (1+ j)) m)
      (setq p  (trans (vlax-curve-getpointatparam e j) 0 e))
      (entmakex
        (list
          (cons  0 "TEXT")
          (cons  7 (getvar 'TEXTSTYLE))
          (cons 40 (getvar 'TEXTSIZE))
          (cons 10 p)
          (cons 11 p)
          (cons 72 1)
          (cons 73 2)
          (cons  1 (strcat PFX(FILLSTR(itoa (1+ j))3)))
          (cons 210 n)
        )
      )
    )
  )
)
(princ)
)

------------------
Also ich finde Unities gut ... und andere sicher auch
---------------------------------------
  - Thomas -          
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

xem
Mitglied
Zeichner


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

Beiträge: 847
Registriert: 07.08.2008

Software:
AutoCAD 2022 - 64bit
Windows 10 Pro - 64bit
PDFCreator 1.0.2 - 32bit
Ghostscript 9.0 - 64bit
PDF-XChange Viewer - 64bit
GIMP 2.6.8 - 64bit
MS Office 2013 - 32bit
Opera 12 - 32bit
MacroX - 32bit
7-zip - 64bit
-----------------------
Hardware:
Intel i5 680 3,6GHz @ 4GHz
8GB RAM 1333MHz
nVidia GTX 460 1024MB
Intel SSD 2.5 80GB X25-M
Samsung SyncMaster 245B+
Iiyama ProLite E1900s
Logitech mx518
Logitech G11
Roccat Sense Glacier Blue

erstellt am: 28. Nov. 2019 10: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

Danke, strcat hatte mir noch gefehlt.

Einen Reactor einfügen, der den ggf. vorhandenen Text ändern, wäre sicher aufwändiger, oder?

------------------
Error in Layer 8

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