| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: Problem mit (* Realzahl -1) (427 mal gelesen)
|
FiRePhoeniX Mitglied Bauzeichner Fachgebiet Tief−, Straßen− und Landschaftsbau
Beiträge: 127 Registriert: 22.04.2007 AutoCad 2007
|
erstellt am: 18. Mai. 2009 14:55 <-- editieren / zitieren --> Unities abgeben:
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
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 / zitieren --> Unities abgeben: Nur für FiRePhoeniX
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
Beiträge: 127 Registriert: 22.04.2007 AutoCad 2007
|
erstellt am: 18. Mai. 2009 15:09 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 18. Mai. 2009 15:24 <-- editieren / zitieren --> Unities abgeben: Nur für FiRePhoeniX
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
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 18. Mai. 2009 15:35 <-- editieren / zitieren --> Unities abgeben: Nur für FiRePhoeniX
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
Beiträge: 127 Registriert: 22.04.2007 AutoCad 2007
|
erstellt am: 18. Mai. 2009 15:37 <-- editieren / zitieren --> Unities abgeben:
|
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 18. Mai. 2009 15:44 <-- editieren / zitieren --> Unities abgeben: Nur für FiRePhoeniX
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
Beiträge: 127 Registriert: 22.04.2007 AutoCad 2007
|
erstellt am: 18. Mai. 2009 15:59 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 18. Mai. 2009 16:08 <-- editieren / zitieren --> Unities abgeben: Nur für FiRePhoeniX
|
FiRePhoeniX Mitglied Bauzeichner Fachgebiet Tief−, Straßen− und Landschaftsbau
Beiträge: 127 Registriert: 22.04.2007 AutoCad 2007
|
erstellt am: 18. Mai. 2009 16:21 <-- editieren / zitieren --> Unities abgeben:
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
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 18. Mai. 2009 16:30 <-- editieren / zitieren --> Unities abgeben: Nur für FiRePhoeniX
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
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 / zitieren --> Unities abgeben: Nur für FiRePhoeniX
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
Beiträge: 127 Registriert: 22.04.2007 AutoCad 2007
|
erstellt am: 19. Mai. 2009 08:24 <-- editieren / zitieren --> Unities abgeben:
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 |