Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  Höchsten Attributwert finden

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:  Höchsten Attributwert finden (641 mal gelesen)
Urs.Dardel
Mitglied
Zeichner


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

Beiträge: 14
Registriert: 25.04.2021

AutoCAD 2021

erstellt am: 07. Mai. 2021 19:03    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 möchte für die Nummerierung von Blöcken, die höchste vorhandene Zahl eines Attributs in einen Layer ausfindig machen um dem Nächsten den Wert +1 zu geben. Das Attribut sieht folgendermassen aus. z.B. 11_22_1. Die letzte Zahl ist die Nummerierung und wird dann auch zweistellig.
Ich habe folgende Lisp geschrieben:
(defun c ap ()
  (Setq fläche (getstring "Bitte Fläche eingeben:"))
  (setq dn (getstring "Bitte Dok.Niv. eingeben:"))
  (setq pplayer (strcat "Passpunkte_DN_"dn))
    (command "layer" "_make" pplayer "")
  (command "-einfüge" "fundnummer" "0,0,0" "1" "1" "0" "")
  (setq pnr (sslength (ssget "_X" (list(cons 8  pplayer)))))
  (command "löschen" "l" "")
      (repeat 100
        (setq passpunkt (strcat fläche"_"dn"_"(itoa pnr)))
    (command "-Einfüge" "fundnummer" pause "1" "1" "0" passpunkt)
  (setq pnr (+ pnr 1))
   
  )
  )
Ich weiss das ist sicher ein Gebastel. Ich definiere den Wert anhand der Anzahl vorhandenen Elemente im Layer. Falls einer dieser Passpunkte gelöscht wird und es nicht der letzte ist funktioniert das leider nicht mehr. Kann mir jemand helfen wie ich den höchsten Wert herausfinde. Ich habe schon überlegt den Wert in eine txt zu schreiben. Da wir aber zum Teil auf einem NAS arbeiten und zum Teil dirket auf dem PC ist das auch ein bisschen schwierig

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

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



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

Beiträge: 9732
Registriert: 01.12.2003

AutoCAD 2.5 - 2022, Civil 3D, MAP 3D, ACADM
Inventor AutoCAD 2022, AIP 4-2022
Win 10

erstellt am: 08. Mai. 2021 09:32    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 Urs.Dardel 10 Unities + Antwort hilfreich

Willkommen bei CAD.de.
Prima, dass du dich an das Programmieren mit Lisp wagen willst.

Das Ermitteln der höchsten Zahl ist hier die einfachste Aufgabe.
Die Lisp Funktion (max 1 10 2 20 3) liefert 20
Aber zunächst sollen ja alle Blockreferenzen "fundnummer" auf dem Layer PPlayer gewählt werden.
(setq selSet (ssget "_X" (list (cons 2 "fundnummer") (cons 8  pplayer))))))
Dann benötigst du eine Funktion die alle gewünschten Attribute zu den gewählten Blockreferenzen extrahiert.
(setq Attributwerte (GetMyAttributes SelSet "MyAttname"))
Anschließend muss aus dieser Liste mit Textwerten noch jeweils alles bis zum 2. Unterstrich entfernt werden, bzw. bei konstanter Länge des Prefix einfach nur der Text ab dem 7. Zeichen behalten werden.
(setq Liste (mapcar '(lambda (val) (substr val 7)) Attributwerte))
Die Ergebnisliste mit Strings dann in Ganzzahlen umwandeln und die höchste Nummer ermitteln.
(setq maxNr (apply 'max (mapcar 'atoi liste)))

Das Aufwändigste ist also eine Funktion (GetMyAttributes  ....) zu programmieren.
Da kann ich dann die Seiten von Lee Mac empfehlen.
http://www.lee-mac.com/attributefunctions.html

------------------
Mit freundlichem Gruß

Udo Hübner
www.CAD-Huebner.de

[Diese Nachricht wurde von CAD-Huebner am 08. Mai. 2021 editiert.]

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

Urs.Dardel
Mitglied
Zeichner


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

Beiträge: 14
Registriert: 25.04.2021

AutoCAD 2021

erstellt am: 08. Mai. 2021 12:53    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

Vielen Vielen Dank. Damit habe ich genug Ansätzte, dass ich es schaffen kann. Das Forum ist super und ich finde es schön, dass ihr auch so Anfängern wie mir auf die Sprünge helft. Schönes Wochenende.

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

cadwomen
Ehrenmitglied V.I.P. h.c.
Mädchen für fast alles


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

Beiträge: 2966
Registriert: 26.08.2002

ACAD R11 - 2022
(Plant3D)
AVIS
ACAD LT 2013- 2021
ZWCAD 2015 Versuch "nun ja"
[s]History P3D 2012/(13) SP und Hotfix([/s]<P>
Windows 10 / 64 Bit
Xeon CPU 3.5GHz
16GB Ram
NVIDIA Quadro P2000
3x Dell TV100 88P Monitore

erstellt am: 10. Mai. 2021 10:45    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 Urs.Dardel 10 Unities + Antwort hilfreich

Morgen,

ein andere nicht unbedigt passener Tip, weil ich davon ausgehe das du nicht nur die Nummer anschreibst sonder in dem Block noch andere Werte zu finden sind.

Wenn das nicht nur in ACAD abläuft dann schreib die Daten raus und fass sie mit Excel query zusammen dann hast du ne schöbe Liste zum Abgleich

cu cw

------------------
Also ich finde Unities gut ... und andere sicher auch
------------------------------------------------
cadwomen™
Plant ist nur die Spitze des Berges der da treibt ?

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