Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  Prozent anschreiben

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:  Prozent anschreiben (3468 mal gelesen)
Seven
Mitglied



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

Beiträge: 420
Registriert: 20.06.2002

Autocad 2020
Inventor 2022

erstellt am: 11. Jan. 2008 15:42    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

Ich bin am Geländeschnitte zeichnen. Die Resthöhen verschwinden dabei in einer Böschung mit unterschiedlichem Gefälle. Um nun zu wissen wieviel % Gefälle die böschung hat muss ich das jeweils umständlich rechnen. Gibt es da auch ein taugliches Lisptool, welches mir die Gefälleprozent angibt?
Ich habe zwar eines, doch das geht nur für Linien nicht für Polylinienabschnitte und funktioniert nur zuverlässig wenn das BKS auf Welt steht.
Hat mir da jemand einen Tipp für ein besseres Lisp?

seven

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

Kramer24
Ehrenmitglied V.I.P. h.c.
Architekt


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

Beiträge: 5881
Registriert: 09.11.2001

Acad Architecture 2023
WIN 10

erstellt am: 11. Jan. 2008 15:51    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 Seven 10 Unities + Antwort hilfreich

Welches Lisp hast du?
Ungetestet: http://ww3.cad.de/foren/ubb/Forum54/HTML/009380.shtml#00000

------------------
From Autodusk Till Dawn

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

Seven
Mitglied



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

Beiträge: 420
Registriert: 20.06.2002

Autocad 2020
Inventor 2022

erstellt am: 11. Jan. 2008 15:59    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

Ich verwende das Prozent.lsp

; Lisp-Programm zum Absetzen eines Textes für %-Angabe
; 17.08.2000 Lieske
(defun c rozent
  ( / ech sli li x1 x2 y1 y2 proz sel el)
  (setq ech (getvar "CMDECHO"))
  (setvar "CMDECHO" 0)
  (princ "\n ")
  (princ "\n Angabe über %-Neigung einer Linie")
  (princ "\n Wert durch Ersetzen eines vorhandenen Textes absetzen")
  (princ "\n von tgl am 17.08.2000")
    (princ "\n ")
    (setq
      ;Linie wählen:
      sli  (entsel "\n  Linie picken... ")              ; Element und Pickpunkt
      li  (entget (car sli))                            ; Element (Linie)
      ;Koordinaten der Punkte filtern (da Winkelauswahl 50 nicht möglich)
      x1 (car (cdr (assoc 10 li)))
      y1 (cadr (cdr (assoc 10 li)))
      x2 (car (cdr (assoc 11 li)))
      y2 (cadr (cdr (assoc 11 li)))
      ;Berechnung %-Wert und Umwandlung in Format XX.X und Anhang "%"
      proz (abs (* (/ (- y1 y2) (- x1 x2)) 100))
      proz (rtos proz 2 2)
      proz (strcat proz "%")
      ;Dummy-Text wählen:
      sel  (entsel "\n  vorhandenen Text picken... ")    ; Element und Pickpunkt
      el  (entget (car sel))                            ; Element (Text)
      ;Dummy-Text durch Wert (berechnet) ersetzen:
      el  (subst (cons 1 proz) (assoc 1 el) el)
    ) ;of setq
  (entmod el) ;Dummy-Text schreiben
  (princ proz)
  (setvar "CMDECHO" ech)
  (prin1)
) ;end.

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

Seven
Mitglied



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

Beiträge: 420
Registriert: 20.06.2002

Autocad 2020
Inventor 2022

erstellt am: 11. Jan. 2008 16:27    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


MD_FLAGL.lsp.txt


prozent.lsp.txt

 
Goldig, goldig das gelinkte Lisp ist viel besser als das welches ich schon habe.
Nur ein klitzekleiner Wunsch hätte ich noch: Kann mir jemand das lisp noch so umbauen, dass es den text gleih selber schreibt? Ich habe ein anderes Lisp, welches dass kann, will heissen die bausteine sind vorhanden. Ich bin leider immer noch nicht Lispfähig.

seven

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

BaCAD
Mitglied
Bauzeichner


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

Beiträge: 129
Registriert: 17.09.2008

AutoCAD 2016

erstellt am: 02. Jul. 2014 15:52    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 Seven 10 Unities + Antwort hilfreich

Hallo

Das oben direkt im Forum eingefügte Lisp funktioniert bei uns nicht:

.......................

Befehl: PROZENT


Angabe über %-Neigung einer Linie
Wert durch Ersetzen eines vorhandenen Textes absetzen
von tgl am 17.08.2000

  Linie picken... ; Fehler: Fehlerhafter Argumenttyp: numberp: Nil

...........................

Das in der letzten Antwort angehängte LISP geht. Der Nachteil dort ist jedoch, dass man vorgängig einen Text haben muss um diesen anzuklicken. Kann man nicht einen Text erstellen lassen? Oder das Resultat in der Befehlszeile?

In einem anderen Beitrag ( http://ww3.cad.de/foren/ubb/Forum54/HTML/019193.shtml#000008 ) das Lisp Neigung_prz.lsp ist sehr schön, aber es geht "nur" via Texteingabe. Wenn man die Angaben einfach per Mausklick abfragen könnte wäre auch ganz nett, aber wahrscheinlich viel schwieriger zum Programmieren?

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: 02. Jul. 2014 17:09    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 Seven 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von BaCAD:
Das oben direkt im Forum eingefügte Lisp funktioniert bei uns nicht:

.......................

Das in der letzten Antwort angehängte LISP geht. Der Nachteil dort ist jedoch, dass man vorgängig einen Text haben muss um diesen anzuklicken.


Auch das "nicht laufende Lisp" ändert nur den Textwert eines bestehenden Textobjektes!
(Das Lisp funktioniert im übrigen)

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

BaCAD
Mitglied
Bauzeichner


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

Beiträge: 129
Registriert: 17.09.2008

AutoCAD 2016

erstellt am: 03. Jul. 2014 06:50    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 Seven 10 Unities + Antwort hilfreich

OK, aber man muss eben einen vorgängigen Text anklicken und das passt mir nicht.

Im oben von mir verlinkten Beitrag die LISP neigung_prz.lsp gefällt mir besser.

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

(defun neigung (wert flag / )
  (if flag ;;;wenn prozent
      (strcat (rtos wert 2 2)"%")
      (strcat "1:" (neigung->1zuX wert))))
(defun neigung->1zuX (wert  / )
  (if (=(atof(rtos wert 2 10))0.0)
    "oo"
    (rtos (*(/ 1.0 wert)100) 2 2)))

(defun c:neigung_prz ( / h l)
  (if (and (setq h(getreal "\nHöhe eingeben:"))
  (setq l(getreal "\nLänge eingeben:")))
    (neigung (abs (*(/ h l)100.0))'T)))

(defun c:neigung_1zuX ( / h l)
  (if (and (setq h(getreal "\nHöhe eingeben:"))
  (setq l(getreal "\nLänge eingeben:")))
    (neigung (abs (*(/ h l)100.0))nil)))

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


Wenn man neigung_prz eintippt, kann man zuerst die Höhe und dann die Länge eingeben und das Gefälle wird in der Befehlszeile angezeigt.

Nett wäre, das man die Lisp noch so umwandelt, dass man auch die Höhe und das Gefälle für die Länge angeben könnte und anhand Länge und Gefälle die Höhe umwandeln könnte. Man müsste also die Formel umstellen.

L = H*100/%
H = L*%/100
% = 100/L * H

In der Lisp scheint die %-Formel so auszusehen:

(*(/ h l)100.0))'T)))

Der Wert h und der Wert l definiert man mit den beiden folgenden Zeilen:

  (if (and (setq h(getreal "\nHöhe eingeben:"))
  (setq l(getreal "\nLänge eingeben:")))

Um diese Formel umzustellen muss ich mal wissen, wie sich das überhaupt zusammenbaut, denn % = 100/L * H sieht anders aus als (*(/ h l)100.0))'T)))

Ich denke mal, dass die erste und letzte Klammer einfach Anfang und Ende der Aktion sind. Das * am Anfang gibt wohl an, dass h * l gerechnet werden muss. Warum aber h und l zusammen mit einem / in einer weiteren Klammer sind, weiss ich nicht. Danach kommt 100.0. Das wäre wohl der Wert 100. Was 'T und die zwei )) bedeuten ist mir aber ein Rätsel.

Wie würde die Formel aussehen, wenn ich folgende Aktionen haben wollte:
L = H*100/%
H = L*%/100

Für Tipps wäre ich froh.

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: 03. Jul. 2014 07:57    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 Seven 10 Unities + Antwort hilfreich

Du bist nur die Schreibweise nicht gewohnt (in Lisp nutzt man die Prefix-Notation)

Und zu den Klammern: Zu jeder öffnenden Klammer muß es, an passender Stelle, auch eine schließende geben und umgekehrt.

Schreibweise von einem Lispler erklärt:
Seite1 und Seit2
(die ersten beiden Seiten des besten deutschsprachigen Tutorial für Lisp, für den Fall das du mal mehr machen möchtest..)

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

BaCAD
Mitglied
Bauzeichner


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

Beiträge: 129
Registriert: 17.09.2008

AutoCAD 2016

erstellt am: 03. Jul. 2014 08: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 Seven 10 Unities + Antwort hilfreich

Danke!!

Ich habe das mir mal vorher schon ausgedruckt (den Lisp-Code) und die Formel angeschaut und dann mal via Google gesucht nach Rechnen in der Befehlszeile und dann kam eben auch auf Lisp-Art-Rechnen in der Befehlszeile. Also zuerst Klammer, dann Operator, dann die Werte. So konnte ich die Lisp kopieren und die Formeln ändern.

Ich habe jetzt diese drei Lisp geladen:

Um die % zu rechnen:
---------------------------------------

(defun neigung (wert flag / )
  (if flag ;;;wenn prozent
      (strcat (rtos wert 2 2)"%")
      (strcat "1:" (neigung->1zuX wert))))
(defun neigung->1zuX (wert  / )
  (if (=(atof(rtos wert 2 10))0.0)
    "oo"
    (rtos (*(/ 1.0 wert)100) 2 2)))

(defun c:neigung_prz ( / h l)
  (if (and (setq h(getreal "\nHöhe eingeben:"))
  (setq l(getreal "\nLänge eingeben:")))
    (neigung (abs (*(/ h l)100.0))'T)))

(defun c:neigung_1zuX ( / h l)
  (if (and (setq h(getreal "\nHöhe eingeben:"))
  (setq l(getreal "\nLänge eingeben:")))
    (neigung (abs (*(/ h l)100.0))nil)))

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


Um die Länge zu rechnen:

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

(defun neigung (wert flag / )
  (if flag ;;;wenn prozent
      (strcat (rtos wert 2 2)" m/cm/dm/km")
      (strcat "1:" (neigung->1zuX wert))))
(defun neigung->1zuX (wert  / )
  (if (=(atof(rtos wert 2 10))0.0)
    "oo"
    (rtos (*(/ 1.0 wert)100) 2 2)))

(defun c:neigung_prz2 ( / h l)
  (if (and (setq h(getreal "\nHöhe eingeben:"))
  (setq l(getreal "\nGefälle % eingeben:")))
    (neigung (abs (/(* h 100)l))'T)))

(defun c:neigung_1zuX ( / h l)
  (if (and (setq h(getreal "\nHöhe eingeben:"))
  (setq l(getreal "\nLänge eingeben:")))
    (neigung (abs (*(/ h l)100.0))nil)))

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


Und um die Höhe zu rechnen:

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

(defun neigung (wert flag / )
  (if flag ;;;wenn prozent
      (strcat (rtos wert 2 2)" m/cm/dm/km")
      (strcat "1:" (neigung->1zuX wert))))
(defun neigung->1zuX (wert  / )
  (if (=(atof(rtos wert 2 10))0.0)
    "oo"
    (rtos (*(/ 1.0 wert)100) 2 2)))

(defun c:neigung_prz3 ( / h l)
  (if (and (setq h(getreal "\nLänge eingeben:"))
  (setq l(getreal "\nGefälle % eingeben:")))
    (neigung (abs (/(* h l)100))'T)))

(defun c:neigung_1zuX ( / h l)
  (if (and (setq h(getreal "\nHöhe eingeben:"))
  (setq l(getreal "\nLänge eingeben:")))
    (neigung (abs (*(/ h l)100.0))nil)))

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


Die Neigung_1zuX habe ich dabei je ignoriert und ein Makro erstellt, so das direkt neigung_prz, neigung_prz2 und neigung_prz3 gewählt werden.

Das Resultat wird bei den beiden umgestellten Lisp mit  m/cm/dm/km angegeben. Beim ersten Lisp steht dort %. Jedoch wird auch beim ersten Lisp beim Resultat jetzt komischerweise  m/cm/dm/km angegeben. Warum?

Der Befehlsname der drei Lisp ist ja unterschiedlich.

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

spider_dd
Mitglied



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

Beiträge: 1111
Registriert: 27.11.2003

Win 10Pro
Intel(R) Core(TM) i7-7700
NVIDIA Quadro P1000
ACAD, Civil-3D 2018

erstellt am: 03. Jul. 2014 09: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 Seven 10 Unities + Antwort hilfreich

Hallo BaCAD,

Die Funktion neigung

Code:
(defun neigung ....)

lädst Du mit jedem Deiner 3 Lisp, die ist in der ersten aber anders definiert als in den beiden anderen.
Beim Laden einer dieser drei Lisp wird sie aber neu definiert, d. h. wenn Du die zweite (oder dritte) Lisp lädst, gilt dann diese Definition und nicht mehr die erste.
Das kannst Du ausprobieren, indem Du z. B. die erste Lisp nochmal lädst. Dann sollte immer (auch bei .._prz2 und .._prz3) die Ausgabe in % kommen.

Das kannst Du verhindern, indem Du:

a) immer (nur) die Lisp, die Du gerade brauchst nochmal lädst,

oder b) im ersten Lisp den Namen der Funktion änderst (z.B. (defun neigung1 ...)) und diese dann natürlich auch im ersten Lisp aufrufst.

HTH
Gruß
Thomas

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