Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Problem mit (* Realzahl -1)

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
Autor Thema:   Problem mit (* Realzahl -1) (397 mal gelesen)
FiRePhoeniX
Mitglied
Bauzeichner Fachgebiet Tief−, Straßen− und Landschaftsbau


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

Beiträge: 127
Registriert: 22.04.2007

AutoCad 2007

erstellt am: 18. Mai. 2009 14:55    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


Problem.rar

 
Hallo Forum.

Hab ein Riesen Problem was ich nicht verstehe.
Das Problem ist folgendes will eine Realzahl von plus nach minus und von minus nach Plus ändern. Das mache ich normal mit (* Zahl –1) so wie mal es aus der Schule noch kennt. 
Jetzt habe ich ein komische Problem entdeckt. Habe eine Errechnung für einen Höhenplan geschrieben. Der soll mit dann die Abrundung zeichnen. So, weit so gut. Jetzt kommt das mysteriöse. In der Rechung muss ein Punkt von plus nach minus und von minus nach plus umgerechnet werden. Wie beschrieben nähme ich den Befehl (* zahl –1) . Jetzt soll ein bogen gezeichnet werden. Wenn ich den wert nicht umdrehe geht alles Einbahn frei. Drehe ich den Wert um. Kommt es sofort zum fehler. Und der Bogen wird nicht gezeichnet.
Da ich das nicht so gut beschreiben kann habe ich ein Video gemacht es ist im Anhang. Den Code gibt es auch noch.

Code:

(defun c:Straßenbau_Tool_FB_Haupt_BO_Vorschau_OnClicked (/)


  (if (and (not (= Tagentenlänge nil))
          (not (= Halbmesser nil))
  (not (= Stichmaß nil))
  (not (= Steigung1 nil))
  (not (= Steigung2 nil)))
   
    (progn

      (errechnen)
      (setq Listeloeschen (ssadd)) 
      (command "_line" (list 0 0 0) hoehsPK "")
      (setq loeschen (entlast))
      (ssadd loeschen Listeloeschen)
      (command "_line" hoehsPK (list 200 0 0) "")
      (setq loeschen (entlast))
      (ssadd loeschen Listeloeschen)   
      (command "bogen" bogenpk1 bogenpk2 bogenpk3)
      (setq loeschen (entlast))
      (ssadd loeschen Listeloeschen)
    )
 
  (dcl_MessageBox "Es fehlen noch Angaben." 0 4) 
  )
   
)

(defun errechnen ()
  (setq hoehsPK (polar (list 100 0 0) (/ pi 2) (* (/ (* 100 Steigung1) 100)10)))
  (setq strsatzPK (/ (* (* (/ (* 100 Steigung1) 100)10) Tagentenlänge) 100 ))
  (setq strsatzPK (* strsatzPK -1))
  (setq zwPK (polar hoehsPK (/ pi 2) strsatzPK))
  (setq bogenpk1 (polar zwPK 0 (* -1 Tagentenlänge)))
  (setq bogenpk2 (polar hoehsPK (/ pi 2) (* Stichmaß 10)))
  (setq bogenpk3 (polar bogenpk1 0 (* 2  Tagentenlänge)))

Bitte helft mich ich komme nicht weiter. 
Mit freundlichen Grüßen

FirephoeniX

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

wronzky
Ehrenmitglied V.I.P. h.c.
CAD-Dienstleistungen für Architekten



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

Beiträge: 2154
Registriert: 02.05.2005

CAD:
AutoCAD 2.6 bis 2014
ADT 2005 - 2014
Arcibem
System:
Windows 2000, XP, NO VISTA
Internet-Startseite:
http://www.archi.de

erstellt am: 18. Mai. 2009 15: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 FiRePhoeniX 10 Unities + Antwort hilfreich

Hi,
ohne jetzt das Video anzuschauen...wenn Du Berechnungen mit Integerzahlen durchführst, ist das Ergebnis auch immer eine Integerzahl. Mach einfach eine Real-Zahl aus den Integer-Zahlen, dann könnte es schon stimmen.
z.B.
(/ 3 2) -> 1
(/ 3 2.0) -> 1.5
[Edit] in Deinem Fall also z.B. (* zahl -1.0) [/Edit]
Grüsse, Henning

------------------
Henning Jesse
VoxelManufaktur
Computer-Dienstleistungen für Architekten und Ingenieure

      http://www.voxelman.de

[Diese Nachricht wurde von wronzky am 18. Mai. 2009 editiert.]

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

FiRePhoeniX
Mitglied
Bauzeichner Fachgebiet Tief−, Straßen− und Landschaftsbau


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

Beiträge: 127
Registriert: 22.04.2007

AutoCad 2007

erstellt am: 18. Mai. 2009 15: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

Danke wronzky für die antwort.
Ich vermute du meinst das ich statt (* Real –1)  -1.0 nehmen soll.
Bringt leider auch nichts.
Das komische ist ja das die koordinaten alle richtig errechnet sind.
Und auch das Umdrehen der Zahl richtig ist.
Autocad kommt mit dem einfügen nicht kann zurecht.
Was mich richtig ärgert.

FiRE

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

Dorfy
Mitglied
Double-Dipl.-Ing. Bleistiftanspitzer


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

Beiträge: 893
Registriert: 21.07.2006

AutoCad2007, ProE, HiCad

erstellt am: 18. Mai. 2009 15:24    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 FiRePhoeniX 10 Unities + Antwort hilfreich

 
Zitat:
Original erstellt von wronzky:
...
wenn Du Berechnungen ...
(/ 3 2.0) -> 1.5 ...
[Edit] in Deinem Fall also z.B. (* zahl -1.0) [/Edit]

dann könntest du auch mal sinnvolle Eingangswerte mitgeben

(if (and Tagentenlänge Halbmesser Stichmaß Steigung1 Steigung2)
...
)

mfg heiko

[Diese Nachricht wurde von Dorfy am 18. Mai. 2009 editiert.]

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: 13435
Registriert: 30.11.2003

.

erstellt am: 18. Mai. 2009 15:35    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 FiRePhoeniX 10 Unities + Antwort hilfreich

bei mir klappt als reduziertes Problem

(defun TESTUS ( )
  (setq Steigung1 2)
  (setq Tagentenlänge 100)
  (setq STICHMAß 50)
  (setq hoehsPK (polar (list 100 0 0) (/ pi 2) (* (/ (* 100 Steigung1) 100)10)))
  (setq strsatzPK (/ (* (* (/ (* 100 Steigung1) 100)10) Tagentenlänge) 100 ))
  (setq strsatzPK (* strsatzPK 1))
  (setq zwPK (polar hoehsPK (/ pi 2) strsatzPK))
  (setq bogenpk1 (polar zwPK 0 (* -1 Tagentenlänge)))
  (setq bogenpk2 (polar hoehsPK (/ pi 2) (* Stichmaß 10)))
  (setq bogenpk3 (polar bogenpk1 0 (* 2  Tagentenlänge)))
  (command "bogen" bogenpk1 bogenpk2 bogenpk3)

(TESTUS)

und auch
(defun TESTUS ( )
  (setq Steigung1 2)
  (setq Tagentenlänge 100)
  (setq STICHMAß 50)
  (setq hoehsPK (polar (list 100 0 0) (/ pi 2) (* (/ (* 100 Steigung1) 100)10)))
  (setq strsatzPK (/ (* (* (/ (* 100 Steigung1) 100)10) Tagentenlänge) 100 ))
  (setq strsatzPK (* strsatzPK -1))
  (setq zwPK (polar hoehsPK (/ pi 2) strsatzPK))
  (setq bogenpk1 (polar zwPK 0 (* -1 Tagentenlänge)))
  (setq bogenpk2 (polar hoehsPK (/ pi 2) (* Stichmaß 10)))
  (setq bogenpk3 (polar bogenpk1 0 (* 2  Tagentenlänge)))
  (command "bogen" bogenpk1 bogenpk2 bogenpk3)

(TESTUS)


aber dein Code ist trotzdem schrottig, unvollständig ect. , so dass sich die Hilfe wohl hiermit erschöfpt.. hast du vielleicht Eingabewerte, wo zwei Bogenpunkte aufeinanderfallen oder so?

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

FiRePhoeniX
Mitglied
Bauzeichner Fachgebiet Tief−, Straßen− und Landschaftsbau


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

Beiträge: 127
Registriert: 22.04.2007

AutoCad 2007

erstellt am: 18. Mai. 2009 15: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

Was heißt sinnvoll bei dir Dorfy?
Ich versteh deine Aussage nicht ganz.
Sorry, bin heute nicht kann bei mir ist kurz vor feierabend. ^^

Fire

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

Dorfy
Mitglied
Double-Dipl.-Ing. Bleistiftanspitzer


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

Beiträge: 893
Registriert: 21.07.2006

AutoCad2007, ProE, HiCad

erstellt am: 18. Mai. 2009 15:44    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 FiRePhoeniX 10 Unities + Antwort hilfreich

Dein Code ist unvollständige,
zum Video schauen und Werte entnehmen fehlt die Zeit/Lust

also (setq "alle benötigten Eingangswerte" ...)
vorzugsweise die die zum "Fehler" führen

und an Stelle von if not nil einfach nur if (nur so am Rande)

mfg heiko

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

FiRePhoeniX
Mitglied
Bauzeichner Fachgebiet Tief−, Straßen− und Landschaftsbau


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

Beiträge: 127
Registriert: 22.04.2007

AutoCad 2007

erstellt am: 18. Mai. 2009 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

Also danke erst mal für eure Antworte.

Natürlich ist der Code unvollständig . Ich wollte euch nicht den ganzen Code zeigen aus dem einfachen Grund weil der zu groß ist. So einen Riesen Code will ich euch nicht zumuten und dann verlangen das ihr euch den durch guckt. Das wer zu viel verlangt.
Das mit if ist ganz einfach zu erklären. Als ich mit LISP anfing wusste ich nicht ganz wie das mit der esle Funktion geht also hab ich mir anders geholfen. Und irgend wie ist das mit den Not nil hängen geblieben. Wo ist den der unterschied ??

Noch mal vielen Dank ich werde gucken ob ich eine Lösung finde.

FiRE

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

Dorfy
Mitglied
Double-Dipl.-Ing. Bleistiftanspitzer


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

Beiträge: 893
Registriert: 21.07.2006

AutoCad2007, ProE, HiCad

erstellt am: 18. Mai. 2009 16:08    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 FiRePhoeniX 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von FiRePhoeniX:
...
Wo ist den der unterschied ??
...

Sti(e)lblüten

mfg heiko


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

FiRePhoeniX
Mitglied
Bauzeichner Fachgebiet Tief−, Straßen− und Landschaftsbau


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

Beiträge: 127
Registriert: 22.04.2007

AutoCad 2007

erstellt am: 18. Mai. 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

OK, hab’s verstanden  
Ich weiß auch das meine Code viel zu Lang und kompliziert sind.
Dies streite ich gar nicht mal ab.
Das Problem ist ganz einfach. Ich kenne es nicht anders und ich kann es auch nicht anders.
Wenn ich lisp irgendwann mal besser beherrsche werden die Codes anders aussehen. Bis dahin heißt es Üben  
Mal schauen ob ich das Problem in den griff kriege.

mfg

Fire

[Diese Nachricht wurde von FiRePhoeniX am 18. Mai. 2009 editiert.]

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: 13435
Registriert: 30.11.2003

.

erstellt am: 18. Mai. 2009 16:30    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 FiRePhoeniX 10 Unities + Antwort hilfreich

Das reduziert Problem hab ich dir mit (Testus) schon mal aufgeschrieben .... aber da verstehe ich nicht, was dein Problem ist ????

und sowas schon gar nicht:

(/ (* (* (/ (* 100 Steigung1) 100)10) Tagentenlänge) 100 ))

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

wronzky
Ehrenmitglied V.I.P. h.c.
CAD-Dienstleistungen für Architekten



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

Beiträge: 2154
Registriert: 02.05.2005

CAD:
AutoCAD 2.6 bis 2014
ADT 2005 - 2014
Arcibem
System:
Windows 2000, XP, NO VISTA
Internet-Startseite:
http://www.archi.de

erstellt am: 18. Mai. 2009 16: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 FiRePhoeniX 10 Unities + Antwort hilfreich

Schau Dir doch mal DIESE DOKUMENTATION von Jörn an. Vor allem den Abschnitt "debugging". Vielleicht liegt der Fehler ja an einer ganz anderen Stelle!
Und auch ohne grosse Lisp-Kenntnisse weiss man, dass
(* (/ (* 100 Steigung1) 100)10)
100 * zahl / 100 * 10 das selbe ist wie
10 * 100 / 100 * zahl das selbe ist wie
10 * zahl.

Grüsse, Henning

------------------
Henning Jesse
VoxelManufaktur
Computer-Dienstleistungen für Architekten und Ingenieure

  http://www.voxelman.de

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

FiRePhoeniX
Mitglied
Bauzeichner Fachgebiet Tief−, Straßen− und Landschaftsbau


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

Beiträge: 127
Registriert: 22.04.2007

AutoCad 2007

erstellt am: 19. Mai. 2009 08:24    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 wronzky:

Und auch ohne grosse Lisp-Kenntnisse weiss man, dass
(* (/ (* 100 Steigung1) 100)10)
100 * zahl / 100 * 10 das selbe ist wie
10 * 100 / 100 * zahl das selbe ist wie
10 * zahl.

Grüsse, Henning



Wie es aussieht weiß das nicht jeder. 
Auch für diese Code abschnitt gibt es einen Erklärung.
Aber ich glaube ich muss mich hier nicht für jeden Codeschnipsel rechtfertigen.
Ich werde den Code noch mal komplett neu schreiben dabei die neu gelernten Sachen einsetzten und ihn Übersichtiger gestallten. Vielleicht behebt sich das Problem dann von selbst.
Ich danke noch mal für das zeigen der Fehler. Den aus Fehlern lernt man am besten. 

Mit freundlichen Grüßen

FiRE


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)2020 CAD.de | Impressum | Datenschutz