Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  Nachkommastellen runden

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:  Nachkommastellen runden (3780 mal gelesen)
sabjon
Mitglied
Bauzeichner


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

Beiträge: 120
Registriert: 12.02.2009

Windows 10 64 Bit, Autocad 2021

erstellt am: 02. Nov. 2009 16:21    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 zusammen,
gibt es eine Möglichkeit ein Attribut (beispielsweise 12,5486) auf zwei Nachkommastellen zu runden (12,55)?
Danke.

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: 02. Nov. 2009 16: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 Nur für sabjon 10 Unities + Antwort hilfreich

ja .. z.B. mit dem Codeschnipsel

(if(and(setq ATT(car(nentsel"\nAttribut wählen:")))
      (setq ATT(entget ATT))
      (=(cdr(assoc 0 ATT))"ATTRIB")
      (setq TEXT(cdr(assoc 1 ATT)))
      (setq TEXT(distof TEXT))
      (setq TEXT(rtos TEXT 2 2))
  )
  (entmod(subst (cons 1 TEXT)(assoc 1 ATT)ATT))
)

------------------
  - 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


Ex-Mitglied

erstellt am: 02. Nov. 2009 16:27    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hi,

>> gibt es eine Möglichkeit ein Attribut (beispielsweise 12,5486) auf zwei Nachkommastellen zu runden

Grundsätzlich mal nein, denn Attribute sind Platzhalter für allgemeine Texte/Zeichen. Ob diese Zeichnen jetzt eine Zahl darstellen oder nicht, obliegt ausschliesslich dem Betrachter, für das AutoCAD selbst ist es unerheblich.

Natürlich gibt es jetzt in AutoCAD mit Programmierung die Möglichkeit, so etwas umzusetzen, auch unter dem Begriff Schriftfelder könnte es zu einem solchen gewünschten Effekt kommen (Schriftfeld stellt einen anderen Attributswert formatiert als Zahl mit angebbaren Nachkommastellen dar).

Damit hast Du mal Suchbegriffe zur Suche in Deiner Hilfe und in diesem Forum; bitte bei der nächsten Rückfrage die Systeminformation eintragen, denn wir wissen nichtmal Deine AutoCAD-Version (z.B. ob Du schon auf Scriftfelder hingreifen kannst, können wir erst dann sehen).

- alfred -

------------------
www.hollaus.at

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: 02. Nov. 2009 16:37    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 sabjon 10 Unities + Antwort hilfreich

Wo kommt der Wert denn her ?
Falls es ein dummer Attributwert ist  -siehe andere Antworten
Falls es ein Feld ist welches irgendwelche Zahlenwerte "holt" => dort kann man auch die Genauigkeit hinterlegen

------------------
die alte SUCHfunktion.. - System-Angaben - User:FAQ(Adesk)

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

sabjon
Mitglied
Bauzeichner


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

Beiträge: 120
Registriert: 12.02.2009

Windows 10 64 Bit, Autocad 2021

erstellt am: 04. Nov. 2009 08:25    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

Zitat:
Original erstellt von CADmium:
ja .. z.B. mit dem Codeschnipsel

(if(and(setq ATT(car(nentsel"\nAttribut wählen:")))
       (setq ATT(entget ATT))
       (=(cdr(assoc 0 ATT))"ATTRIB")
       (setq TEXT(cdr(assoc 1 ATT)))
       (setq TEXT(distof TEXT))
       (setq TEXT(rtos TEXT 2 2))
   )
  (entmod(subst (cons 1 TEXT)(assoc 1 ATT)ATT))
)


Das funktioniert ja prima. Habe nur leider bis zu 1000 Attribute und mehr in einer Zeichnung und möchte diese auf einmal runden. Wir setzen übrigends Autocad 2004 bis 2006 ein, sorry hatte ich letztes mal vergessen. Vielen dank für eure Hilfe.

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: 04. Nov. 2009 09: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 Nur für sabjon 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von sabjon:
Das funktioniert ja prima. Habe nur leider bis zu 1000 Attribute und mehr in einer Zeichnung und möchte diese auf einmal runden. Wir setzen übrigends Autocad 2004 bis 2006 ein, sorry hatte ich letztes mal vergessen. Vielen dank für eure Hilfe.

Naja ... das ist ja auch nur ein Codeschnipsel .... den man dann auf einen Auswahlsatz von Blockreferenzen mit Attributen oder alle Attribute der ganzen Zeichnung loslassen kann. Das werden dann noch ein paar Codezeilen mehr.

------------------
  - 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

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: 04. Nov. 2009 10: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 sabjon 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von sabjon:
Das funktioniert ja prima. Habe nur leider bis zu 1000 Attribute und mehr in einer Zeichnung und möchte diese auf einmal runden. Wir setzen übrigends Autocad 2004 bis 2006 ein, sorry hatte ich letztes mal vergessen. Vielen dank für eure Hilfe.

Na ja,

das könnte man mit folgendem Codeschnipsel lösen:

Code:

;|
Funktion rundet numerische Werte eines oder mehrerer Attribute eines oder mehrerer
Blockeinfügungen auf eine bestimmte Stelle hinter dem Komma.
Argumente:
LST-BLOCKNAMES = Liste der Blocknamen die bearbeitet werden sollen (als Strings)
LST-ATTNAMES = Liste der Attributnamen deren Werte bearbeitet werden sollen (als Strings)
INT-DIGIT = Integer zur Festlegung der Stellen auf die gerundet werden soll

Rückgabe:
Liste der bearbeiteten Blockeinfügungen als vla-Objekte

Beispiel:
(setq data (CAD:DE:ATTVALUEROUND '("Test" "Test2" "Test3")'("Wert1" "Wert2" "Wert3") 12))
|;
(defun CAD:DE:ATTVALUEROUND (LST-BLOCKNAMES LST-ATTNAMES INT-DIGIT / ATTS BLOCKREFS INDEX LST-BLOCKREFS NEW-VAL RETVAL SAVEDIMZIN X)
  (setq LST-BLOCKNAMES (mapcar '(lambda (X) (strcat (strcase X) ","))
      LST-BLOCKNAMES
      )
LST-BLOCKNAMES (apply 'strcat LST-BLOCKNAMES) ;_ Liste der Blocknamen in ein wcmatch Format bringen
LST-ATTNAMES  (mapcar 'strcase LST-ATTNAMES) ;_ Elemente der Attnamens-Liste in Großschreibung konvertieren
  )
  (setq SAVEDIMZIN (getvar "DIMZIN")) ;_ für rtos sicherheitshalber einstellen
  (setvar "DIMZIN" 0)
  (if (setq BLOCKREFS (ssget "X"
    (list (cons 2 LST-BLOCKNAMES)
  (cons 410 (getvar "ctab"))
    )
      )
      ) ;_ Auswahlsatz erzeugen
    (progn
      (setq INDEX 0)
      (repeat (sslength BLOCKREFS) ;_ Aus Auswahlsatz Liste von vla-Objekten erzeugen
(setq LST-BLOCKREFS
      (cons (vlax-ename->vla-object
      (ssname BLOCKREFS INDEX)
    )
    LST-BLOCKREFS
      )
      INDEX (1+ INDEX)
)
      )
      (foreach ENAME LST-BLOCKREFS ;_ Für jede gefundene Blockeinfügung...
(if (= (vla-get-hasattributes ENAME) :vlax-true) ;_ Hat er Attribute?
  (if (setq ATTS (vlax-safearray->list
  (vlax-variant-value
    (vlax-invoke-method ENAME 'GETATTRIBUTES)
  )
) ;_ Mach Attributliste
      )
    (foreach ATT ATTS ;_ Für jedes Attribut der Liste
      (if (member (vla-get-tagstring ATT) LST-ATTNAMES) ;_ Ist das Attribut in der Liste der zu bearbeitenden Attribute?
(if (setq NEW-VAL (distof (vla-get-textstring ATT))) ;_ Hole Attributwert und konvertiere in real
  (if (not (vl-catch-all-error-p
    (vl-catch-all-apply ;_ setze neuen String
      'vla-put-textstring
      (list ATT (rtos NEW-VAL 2 INT-DIGIT)) ;_ konvertiere real in string
    )
  )
      )
    (if (not (member ENAME RETVAL)) ;_ Wenn bearbeitet, packe Blockreferenz in Rückgabeliste
      (setq RETVAL (cons ENAME RETVAL))
    )
  )
)
      )
    )
  )
)
      )
    )
  )
  (setvar "DIMZIN" SAVEDIMZIN)
  RETVAL
)


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

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