| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Mathematische Operationen mit Attributen (3872 mal gelesen)
|
Helmut Wieser Mitglied Mitarbeiter in Architekturbüro
Beiträge: 134 Registriert: 08.03.2004 AutoCAD 2006 ArchTools 2004
|
erstellt am: 06. Jul. 2004 14:07 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute! Folgendes: Ich projektiere mal wieder einen Hauskanal. Bei der Schachttiefe rechne ich zig mal dasselbe: Schachttiefe = Niveau Kanaldeckel - Niveau Kanalsohle - Rohrdurchmesser. Für den Schacht hab ich mir schon einen Attributblock gebastelt (sh. Anhang), die Schachttiefe rechne ich mit dem Taschenrechner aus und übertrage den Wert manuell - keine sehr befriedigende Methode. Deshalb meine Frage: Hat wer ein LISP o.Ä. mit dem man mathematische Operationen auf Attribute anwenden kann? Lässt sich so was programmieren?
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
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: 06. Jul. 2004 14:18 <-- editieren / zitieren --> Unities abgeben: Nur für Helmut Wieser
|
Helmut Wieser Mitglied Mitarbeiter in Architekturbüro
Beiträge: 134 Registriert: 08.03.2004 AutoCAD 2006 ArchTools 2004
|
erstellt am: 06. Jul. 2004 15:25 <-- editieren / zitieren --> Unities abgeben:
|
CADmium Moderator Maschinenbaukonstrukteur
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: 06. Jul. 2004 15:31 <-- editieren / zitieren --> Unities abgeben: Nur für Helmut Wieser
ich dachte eher an das Lisp... sollte dann(ungetestet) so ähnlich aussehen :
(defun Rechne-Schachttiefe ( INSERT / OBJEKTDATEN TIEFE) (if (and(=(type INSERT) 'ENAME) (=(cdr(assoc 0 (setq OBJEKTDATEN (entget INSERT)))) "INSERT") ) (progn (if (assoc 66 OBJEKTDATEN) (progn (while (/= (cdr (assoc 0 OBJEKTDATEN)) "SEQEND") (setq OBJEKTDATEN (entget (entnext (cdr (assoc -1 OBJEKTDATEN))))) (if (= (cdr (assoc 0 OBJEKTDATEN)) "ATTRIB") (progn (cond ((= (strcase (cdr(assoc 2 OBJEKTDATEN))) "NIVEAU-KANALDECKEL") (setq NKD (atof (cdr(assoc 1 OBJEKTDATEN)))) ) ((= (strcase (cdr(assoc 2 OBJEKTDATEN))) "NIVEAU-KANALSOHLE") (setq NKS (atof (cdr(assoc 1 OBJEKTDATEN)))) ) ((= (strcase (cdr(assoc 2 OBJEKTDATEN))) "ROHRDURCHMESSER") (setq RD (atof(cdr(assoc 1 OBJEKTDATEN)))) ) ((= (strcase (cdr(assoc 2 OBJEKTDATEN))) "SCHACHTTIEFE") (setq TIEFE OBJEKTDATEN) ) ) ) ) ) (if (and(numberp NKD)(numberp NKS)(numberp RD)) (progn (setq SCHACHTTIEFE (- NKD NKS RD)) (princ SCHACHTTIEFE) (setq TIEFE (subst(cons 1 (rtos SCHACHTTIEFE 2 3)) (assoc 1 TIEFE) TIEFE ) ) (prin1 TIEFE) (entmod TIEFE) ) ) ) ) ) ) ) ;; --------------------------------------------------------------------------------- ;; (defun C:Rechne-Schachttiefe ( / OBJEKT OBJEKTDATEN NAME AUSWAHL INDEX) (if (and(setq OBJEKT (ssget "_:S" '((0 . "INSERT")))) (setq OBJEKT (ssname OBJEKT 0))) (progn (setq OBJEKTDATEN (entget OBJEKT)) (setq NAME (cdr(assoc 2 OBJEKTDATEN))) (setq AUSWAHL (ssget "_X" '((0 . "INSERT")))) (setq INDEX 0) (if AUSWAHL (repeat (sslength AUSWAHL) (if (=(strcase(cdr(assoc 2 (entget(ssname AUSWAHL INDEX)))))(strcase NAME)) (Rechne-Schachttiefe(ssname AUSWAHL INDEX)) ) (setq INDEX(1+ INDEX)) ) ) (while (setq BLOCKDEF (tblnext "BLOCK" (null BLOCKDEF))) (if (and(/=(logand(cdr(assoc 70 BLOCKDEF))4)4) (or(/= (logand(cdr(assoc 70 BLOCKDEF))1)1) (=(substr NAME 1 2) "*U") ) ) (progn (setq OBJEKT (cdr (assoc -2 BLOCKDEF))) (while OBJEKT (if (and (=(cdr(assoc 0 (entget OBJEKT))) "INSERT") (=(cdr(assoc 2 (entget OBJEKT))) NAME)) (Rechne-Schachttiefe (ssname AUSWAHL INDEX)) ) (setq OBJEKT (entnext OBJEKT)) ) (entupd (cdr (assoc -2 BLOCKDEF))) ) ) ) (command "._regen") ) (princ "\nKeine Blockreferenz gewählt!\n") ) (princ) ) dazu Schachtblock mit folgenden Attributen definieren "NIVEAU-KANALDECKEL" enthält Niveau oben als Realzahl "NIVEAU-KANALSOHLE" enthält Niveau unten als Realzahl "ROHRDURCHMESSER" enthält Rohrd. unten als Realzahl (evtl. Einheiten sind bei der Umrechnung zu breücksichtigen) "SCHACHTTIEFE" enthält später dann den berechneten Wert oder im Lisp ändern ------------------ - Thomas - [Diese Nachricht wurde von CADmium am 06. Jul. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Nesquiker Mitglied CAD - Zeichner
Beiträge: 69 Registriert: 16.01.2003
|
erstellt am: 06. Jul. 2004 15:40 <-- editieren / zitieren --> Unities abgeben: Nur für Helmut Wieser
[QUOTE]Original erstellt von Helmut Wieser: [B]Schöner Weg nur leider mit Acad 2002 nicht machbar (unbekannter Befehl "attout" hi Ist mit Acad 2002 machbar nach installation der Expresstools! Dank nochmal an CADwiesel ------------------ gruss Nesquiker Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
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: 06. Jul. 2004 15:52 <-- editieren / zitieren --> Unities abgeben: Nur für Helmut Wieser
was hat attout mit Rechenoperationen mit Attributwerten zu tun ?? ATTOUT exportiert Block-Attributwerte in eine externe TXT-Datei (mit Tabulator getrennt und ASCII-Zeichen).
------------------ - Thomas - Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Helmut Wieser Mitglied Mitarbeiter in Architekturbüro
Beiträge: 134 Registriert: 08.03.2004 AutoCAD 2006 ArchTools 2004
|
erstellt am: 06. Jul. 2004 15:55 <-- editieren / zitieren --> Unities abgeben:
Hallo Thomas! Erstmal herzlichen Dank. Die Sache funktioniert nur (noch) nicht: Befehl: RECHNE-SCHACHTTIEFE Objekte wählen: ; Fehler: no function definition: INSERT_UPDATE Den Block hab ich mal wie von Dir angeregt umgebaut (sh. Anhang) Muß der Block einen bestimmten Namen haben ? (Nähere mich erst langsam der Lisp- Welt)
Vielleicht noch ein Hinweis ? Helmut @Nesquiker: Expresstools sind bei mir installiert ...
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
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: 06. Jul. 2004 16:01 <-- editieren / zitieren --> Unities abgeben: Nur für Helmut Wieser
|
Bernd P Ehrenmitglied V.I.P. h.c. cook-general
Beiträge: 3358 Registriert: 07.06.2001 W10-64bit, AMD Ryzen 7 3700X,32GB RAM, Sapphire Pulse Radeon RX 570 8G G5, Canon TX-3000 MFP, Maus Cherry MW4500, Sub:Infrastructure Design Suite, Office 365
|
erstellt am: 06. Jul. 2004 16:08 <-- editieren / zitieren --> Unities abgeben: Nur für Helmut Wieser
Servus Wiso Lisp? Verwende für solche Gelegenheiten "attout" (gut ok sind auch lisp), dann das ganze in Excel bearbeiten und mit "attin" wieder einlesen und fertig. PS.: ATTOUT und ATTIN sind von den E-Tools wer sie nicht hat ist selber schuld oder geht auf cadwiesel ------------------ schöne Grüsse aus der Steiermark Bernd P. Bitte Supportangaben eintragen, warum siehst du hier hier [Diese Nachricht wurde von Bernd P am 06. Jul. 2004 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Helmut Wieser Mitglied Mitarbeiter in Architekturbüro
Beiträge: 134 Registriert: 08.03.2004 AutoCAD 2006 ArchTools 2004
|
erstellt am: 06. Jul. 2004 16:29 <-- editieren / zitieren --> Unities abgeben:
|
CADmium Moderator Maschinenbaukonstrukteur
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: 06. Jul. 2004 16:51 <-- editieren / zitieren --> Unities abgeben: Nur für Helmut Wieser
so, noch ein paar Schreibfehler (Variablennamen) beseitigt und ein paar Klammern verschoben ( man sollte doch testen !) ... lads dir aus obigen Beitrag nochmal .. sollte jetzt funzen .. bei mir tut es das jedenfalls mit deinem Block. Schönen Feierabend ------------------ - Thomas - Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Helmut Wieser Mitglied Mitarbeiter in Architekturbüro
Beiträge: 134 Registriert: 08.03.2004 AutoCAD 2006 ArchTools 2004
|
erstellt am: 06. Jul. 2004 17:24 <-- editieren / zitieren --> Unities abgeben:
Auch wenn Dich das heute nicht mehr erreicht: Befehl: _appload SCHT02.lsp erfolgreich geladen. SCHT02.lsp erfolgreich geladen. Befehl: ; Fehler: Falsch formatierte Liste in Eingabe
Befehl: ; Fehler: Falsch formatierte Liste in Eingabe Befehl: Befehl: rechne-schachttiefe Unbekannter Befehl "RECHNE-SCHACHTTIEFE". Drücken Sie F1-Taste für Hilfe. Irgendwas hats da noch immer.... Helmut
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Helmut Wieser Mitglied Mitarbeiter in Architekturbüro
Beiträge: 134 Registriert: 08.03.2004 AutoCAD 2006 ArchTools 2004
|
erstellt am: 07. Jul. 2004 08:18 <-- editieren / zitieren --> Unities abgeben:
Hallo Leute! Die erste Doppelklammer wars - nicht ((defun sondern (defun .... Ist jetzt oben schon richtiggestellt. Also: Alle die Schachttiefen nicht mehr händisch rechnen wollen - es funktioniert. Auch hier nochmal herzlichen Dank an Thomas und Grüße aus Wien Helmut Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |