Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  umgang mit rechenungenauigkeiten

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
  
PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
Autor Thema:  umgang mit rechenungenauigkeiten (1032 / mal gelesen)
Code Kian
Mitglied
Technischer Systemplaner (in Ausbildung)


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

Beiträge: 27
Registriert: 18.09.2023

erstellt am: 26. Sep. 2023 15:18    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 ihr Lieben! ich bin mal wieder auf hilfe angewiesen :/
Also folgendes problem: ich wollte ein programm schreiben, welches module in der projektion zeichnet und dafür nur die maße des moduls und neigunswinkel benötigt. soweit sogut hat auch erstmal alles geklappt, aber acad rechenungenauigkeiten haben zu einer unzufriedenstellellender abweichung geführt. dann bin ich auf die rtos funtion gestoßen und dachte mir - wie toll wenn ich einfach alle rechnungen zwinge das auf 12 dezimalstellen genau zu berechnen sollte die ungenauigkeit am ende zu vernachlässigen sein, aber plötzlich passieren komische dinge... nämlich: in der zeile " (setq moduldiagonalequadrat  (rtos (+ (* modullänge modullänge) (* modulhöhe modulhöhe))2 12))" muss was falsch sein, wenn ich die konsole nämlich nach dem wert für moduldiagonalequadrat frage gibt es mir zwar die richtige zahl wieder aber als string - das war bevor ich rtos benutzt habe nicht so??? jetzt das seltsame wenn ich versuche mit der variable zu rechnen bsp: (+ 1 moduldiagonalequadrat) sagt er mir fehlerhaftes argument - ist ja klar mit strings kann ich nicht rechnen... Aber wenn ich die konsole nach anderen variabeln frage (die ja in abhängigkeit zu moduldiagonalequadrat stehen) gibt er mir korrekte zahlen (als reels glaub ich - jedenfalls sind keine "anführungszeichen" drum) also bsp (princ moduldiagonale) => konsole nennt mir eine zahl  obwohl ich doch dafür die zeile "(setq moduldiagonale (rtos (expt moduldiagonalequadrat 0.5000) 2 12))" benutze wo ja offensichtlich mit moduldiagonalequadrat gerechnet wird.
warum wird mir diese eine variable als string wiedergegeben und wie schaffe ich es die fehler durch ungenaues runden auszumärzen?
bin über jeden tipp dankbar
Grüße aus Berlin
Kian

und jetzt der essentielle teil des codes :

(defun c:Modulzeichner (/)
  (setq modullänge (getreal "\nmodullänge in Metern"))
  (setq modulbreite (getreal "\nModulbreite in Metern"))
  (setq modulhöhe (getreal "\nModulhöhe in Metern"))
  (setq modulneigung (getreal "\nNeigung des Moduls in Grad"))
 

 
;erstmal alle wichtigen eigaben gesammelt

  ; jetzt kommen die zahlen die automatisch berechnet werden sollen

  (setq moduldiagonalequadrat (rtos (+ (* modullänge modullänge) (* modulhöhe modulhöhe))2 12))

  (setq moduldiagonale (rtos (expt moduldiagonalequadrat 0.5000) 2 12))

  (setq coshilfswinkel (rtos (/ modullänge moduldiagonale)2 12))
  (setq hilfswinkelBogenmaßohne1durch (rtos (cos (/ modullänge moduldiagonale)) 2 12))
 
 
  (setq hilfswinkelBogenmaß (rtos (/ 1 hilfswinkelBogenmaßohne1durch) 2 12)) ;in dieser rechnung ensteht fehler ich weiß net warum
 
 
  (setq hilfswinkel (rtos (/ (* hilfswinkelBogenmaß 180) pi) 2 12))

  (setq moduldiagonalNeigung (rtos (- modulneigung hilfswinkel) 2 12))

  (setq moduldiagonalNeigungBogenmaß (rtos (* moduldiagonalNeigung (/ 180 pi)) 2 12))

  (setq modullängeProjektion (rtos (* (cos moduldiagonalNeigungBogenmaß) moduldiagonale) 2 12))


)

ps: mir ist klar das die rechenschritte unnötig aufgesplittet sind, sie waren auch mal teilweise zusammengefasst, allerdings habe ich mir eine höhere genauikeit durchs aufsplitten erhofft.... hat nicht geklappt

[Diese Nachricht wurde von Code Kian am 26. Sep. 2023 editiert.]

[Diese Nachricht wurde von Code Kian am 26. Sep. 2023 editiert.]

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: 22298
Registriert: 03.06.2002

Alles

erstellt am: 26. Sep. 2023 15: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 Code Kian 10 Unities + Antwort hilfreich

Hi,

>>" aber acad rechenungenauigkeiten haben zu einer unzufriedenstellellender abweichung geführt."
Das wundert mich (ungesehen/ungeprüft) doch sehr, denn relevant sollten diese mathematischen Ungenauigkeiten des Datentyps doch eher nicht sein.
Zumindest nicht grafisch relevant.


>>" dann bin ich auf die rtos funtion gestoßen"
RTOS um ein Problem mit Ungenauigkeiten zu umgehen? Okay, aber genauer wird es dadurch nicht und die Ungenauigkeiten werden dadurch ja höchstens größer, statt kleiner.
Bei mathematischen Problemen mit Ungenauigkeiten nutzt man zu 99% eher EQUAL (je nachdem ob das bei dir passt, denn ich kenne dein Problem nicht)


>>" und dachte mir - wie toll wenn ich einfach alle rechnungen zwinge das auf 12 dezimalstellen genau zu berechnen"
>>" sollte die ungenauigkeit am ende zu vernachlässigen sein,"

Jetzt muss ich arg schmunzeln, frage ich aber erst recht wo das Problem liegt.

Wenn du das machst (runden auf 12. Dezimalstellen), dann verschlechterst du doch die Genauigkeit von allen Werten welche zB. nur 3 Stellen vor dem Komma haben und wenn man 10 Stellen vor dem Komma hat, dann ist die rtos-Rückgabe von der der zB. 12.Nachkommastelle nicht verlässlich.


-


>>"nämlich: in der zeile " (setq moduldiagonalequadrat (atof (rtos (+ (* modullänge modullänge) (* modulhöhe modulhöhe))2 12)))" muss was falsch sein, wenn ich die konsole nämlich nach dem wert für moduldiagonalequadrat frage gibt es mir zwar die richtige zahl wieder aber als string - das war bevor ich rtos benutzt habe nicht so??? "

Du benutzt also RTOS, aber hast du dir auch mal angesehen was RTOS macht? -> [F1] RTOS (AutoLISP)

- - -

  (setq moduldiagonale (rtos (expt moduldiagonalequadrat 0.5000) 2 12))
  erzeugt einen String

  (setq coshilfswinkel (rtos (/ modullänge moduldiagonale)2 12))
  man kann keine Zahl durch einen String dividieren

   

-


EDIT{  ;in dieser rechnung ensteht fehler ich weiß net warum }
Du meinst ohne deinen Rtos-Versuch? Ich schaue mal danach..


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

Code Kian
Mitglied
Technischer Systemplaner (in Ausbildung)


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

Beiträge: 27
Registriert: 18.09.2023

erstellt am: 26. Sep. 2023 16:13    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

Hey cadffm wie schön, dass du dich mir wieder erbarmst <3

Also zu allererst: anscheinend habe ich rtos falsch verstanden   ok komm die dinger halt wieder raus

<<Das wundert mich (ungesehen/ungeprüft) doch sehr, denn relevant sollten diese mathematischen Ungenauigkeiten des Datentyps doch eher nicht sein.
Zumindest nicht grafisch relevant.

wir planen große solarparks und wenn dann bei einem modul 1mm fehlt macht sich das auf die masse (große parks haben über 20000 module) schon was aus.

so dann ist mir aufgefallen im original stand die zeile so (setq moduldiagonalequadrat (atof (rtos (+ (* modullänge modullänge) (* modulhöhe modulhöhe))2 12))) um den string zu umgehen - habs jetzt editiert (das atof weggelöscht) weil ich ja davon ausging eh eine zahl und keinen string zu bekommen
Ok ja hätte mich wohl genauer mit rtos beschäftigen sollen, dann wundert micht jetzt aber warum die anderen variabeln eine zahl und keinen string zurückgeben, die sind ja auch mit rtos gebildet.


also summup. ich nehme die ganzen rtos wieder raus und belese mich mal über die equal funktion

nur so nebenbei - ich komme nicht gut klar mit bogenmaßen/radians gibt es eine systemvariable die die cos funktion dazu bringt mit winkeln in grad zu rechnen und auszugeben ?

danke für deine Hilfe und liebe Grüße aus Berlin

Kian


[Diese Nachricht wurde von Code Kian am 26. Sep. 2023 editiert.]

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: 22298
Registriert: 03.06.2002

Alles

erstellt am: 26. Sep. 2023 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 Code Kian 10 Unities + Antwort hilfreich


230926_Modullaenge1.JPG

 
[QUOTE]Original erstellt von Code Kian:
>>" zu allererst: anscheinend habe ich rtos falsch verstanden  "
RTOS erzeugt aus einer gegebenen Zahl eine entsprechende Zeichenkette, je nach übergebenen Parametern.
Jetzt könnte man ATOF nutzen um daraus wieder eine Zahl zu machen.
Das hast du auch mal eingesetzt, aber nicht überall und da knallte es dann mit "dividiere Zahl durch Buchstabe".

-

Hast du den Code im Eingangspost geändert?
Wie sollen denn dann andere dem Thread hier folgen (und verstehen) können, jetzt und in Zukunft?
Es wäre lieb "solche" Änderungen durch erneuten posten des geänderten Codes durchzuführen,
so kann man der Diskussion auch später noch folgen und daraus lernen.

-

>>"wir planen große solarparks und wenn dann bei einem modul 1mm fehlt macht sich das auf die masse (große parks haben über 20000 module) schon was aus."
Du erwartest Meter-Angaben, ein Millimeter ist 1tausendstell, also die 3.Nachkommstelle.
Damit du mit der dritten Nachkommastelle Probleme bekommst, müsste dein Modul mind 1000000000000000 Meter Lang, hoch oder Breit sein
(die Aussage ist nicht ganz korrekt, aber es zeigt doch in welche Richtung es relevant werden würde)

>>"dann wundert micht jetzt aber warum die anderen variabeln eine zahl und keinen string zurückgeben, die sind ja auch mit rtos gebildet."
Da irrst du dich, teste das noch einmal..
Immer bei (setq V (rtos ... ) wird V entweder nichts (bei einem Fehler/Unterbrechung) oder eine Zeichenkette binden.

>>"also summup. ich nehme die ganzen rtos wieder raus und belese mich mal über die equal funktion"
Das solltest du unbedingt, aber da dein Code nirgends Zahlen vergleicht, ist auch Equal zunächst uninteressant.


>>"nur so nebenbei - ich komme nicht gut klar mit bogenmaßen/radians gibt es eine systemvariable die die cos funktion dazu bringt mit winkeln in grad zu rechnen und auszugeben ?"
Nein, ich kenne ohnehin nur eine einzige Variable welche das Ergebnis eine Autolisp-Funktion beeinflußt.
Da es dabei gar um das hier bereits erwähnte RTOS geht, möchte ich dir neben Equal also auch nocht diese benennen, welche
für Bemaßungen/Bemaßungsstile und der Autolisp-Funktion RTOS relevant ist: DIMZIN


- - -

Jetzt zeige und deinen Code und die Abweichung/Problematik um die es eigentlich geht!
Also
1. Code
2. Welche Eingaben (Beispielsweise, aber so sprechen wir alle von DENSELBEN)
3. Ergbnis IST
4. Ergebnis SOLL (und warum?)

-

Hier mal dein Code 1:1 ohne rtos, siehe Anhang,  mit der LxBxH = 3,2,1 und 45°
(BTW: Ich prüfe nicht deine Berechnung/Weg, mich interessiert nur die technisch korrekte Evaluierung)

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: 22298
Registriert: 03.06.2002

Alles

erstellt am: 26. Sep. 2023 17:07    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 Code Kian 10 Unities + Antwort hilfreich

Hatte ich noch vergessen zu schreiben:


>>"nur so nebenbei - ich komme nicht gut klar mit bogenmaßen/radians gibt es eine systemvariable die die cos funktion dazu bringt mit winkeln in grad zu rechnen und auszugeben ?"
Nein, ich kenne ohnehin nur eine einzige Variable welche das Ergebnis eine Autolisp-Funktion beeinflußt.
Da es dabei gar um das hier bereits erwähnte RTOS geht, möchte ich dir neben Equal also auch nocht diese benennen, welche
für Bemaßungen/Bemaßungsstile und der Autolisp-Funktion RTOS relevant ist: DIMZIN


Aber die eigentlich Antwort ist: Erstelle dir doch deine eigene COS_GRAD-REIN_RAD-RAUS Funktion!
oder eine COS_GRAD-REIN_GRAD-RAUS Funktion!*

(defun cosgradrad (dgrad)(was auch immer geschehen muss und dann bogenmass auswirft))
(defun cosgradgrad (dgrad)(was auch immer geschehen muss und dann Dezimalgrad auswirft))

BTW: Im DXF/DWG-Format und der API wird aber ausschließlich in Bogenmass angegeben/gerechnet.

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

Archäologie Bubi
Mitglied
Archäologische Funddokumentation


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

Beiträge: 64
Registriert: 09.03.2021

AutoCAD Map 3D 2013
AutoCAD Map 3D 2023
AutoCAD Map 3D 2024
Faro AS-Built / TachyCAD
BricsCAD V18
Elcovision ElTheo
Agisoft Photoscan
Agisoft Metashape Professional 1.7
Agisoft Metashape Professional 2.0

erstellt am: 26. Sep. 2023 17:46    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 Code Kian 10 Unities + Antwort hilfreich

Zitat:
BTW: Im DXF/DWG-Format und der API wird aber ausschließlich in Bogenmass angegeben/gerechnet.[/i]

Deswegen wandle ich die Werte immer um. So kann der Nutzer seine gewohnten Grad eingeben und das Programm bekommt sein Bogenmass.

Grad zu Bogenmass (Degrees to Radians):

Code:
(defun DtR (d) (* pi (/ d 180.0)))

Bogenmass zu Grad (Radians to Degrees):

Code:
(defun RtD (r) (* 180.0 (/ r pi)))

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

Bubi spiele, Bubi glücklich!

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

Code Kian
Mitglied
Technischer Systemplaner (in Ausbildung)


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

Beiträge: 27
Registriert: 18.09.2023

erstellt am: 26. Sep. 2023 17:48    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


loschenbitte.PNG

 
Zitat:
Original erstellt von cadffm:
Hi,

>>" aber acad rechenungenauigkeiten haben zu einer unzufriedenstellellender abweichung geführt."
Das wundert mich (ungesehen/ungeprüft) doch sehr, denn relevant sollten diese mathematischen Ungenauigkeiten des Datentyps doch eher nicht sein.
Zumindest nicht grafisch relevant.


>>" dann bin ich auf die rtos funtion gestoßen"
RTOS um ein Problem mit Ungenauigkeiten zu umgehen? Okay, aber genauer wird es dadurch nicht und die Ungenauigkeiten werden dadurch ja höchstens größer, statt kleiner.
Bei mathematischen Problemen mit Ungenauigkeiten nutzt man zu 99% eher EQUAL (je nachdem ob das bei dir passt, denn ich kenne dein Problem nicht)

    

-


[b]EDIT{  ;in dieser rechnung ensteht fehler ich weiß net warum }
Du meinst ohne deinen Rtos-Versuch? Ich schaue mal danach..

[/B]


Sooo hab mir equal angeschaut weiss aber nicht wie es mir helfen soll ist ja nur zum vergleichen? habe aber keine verhleichswerte (nur durchs eintippen von beispielzahlen in den taschenrechner)

Ich rechne jetzt einmal durch mit realistischen beispielzahlen Modullänge 2.278; Modulbreite 1.134; modulhöhe 0.035; neigung 20 grad
Schritt1 Moduldiagonale ausrechnen -> satz des pythagoras (+ (* modullänge modullänge) (* modulhöhe modulhöhe)=Moduldiagonalequadrat acad gibt mit den wert 5.19051 zurück geb´nauer wären 5.190509 ok ist erstmal nur minimal Schritt1.2:wurzel ziehen : (expt moduldiagonalequadrat 0.5)= moduldiagonale acad gibt mir da 2.27827 -> genauer wäre 2.2782688 -> hey kein problem mit 1/100 mm ungenauigkeit kann ich leben
Schritt2: hilfswinkel der hilfswinkel is der winkel zwischen der modul diagonale und dem modul selbst (werde ein kleines bild von nem schnitt eines modultisches mit hochladen um es verständlicher zu machen) 2.1  (/ modullänge moduldiagonale) um den cos vom hilfswinkel zu bekommen acad gibt mir da 0.999882 genauer wären 0.999881989 okok immer noch nicht relevant 2.2 hilfswinkelbogenmaßohne1durch jaja das in einzelnen schritten und variabeln zu machen ist voll doof gewesen. aber zu rrechnung (cos (/ modullänge moduldiagonale)) acad gibt mir 0.540402 genauer wäre 0.5404304 da haben wir schon nen fehler von 3/100 mm, check gar nicht wie lisp das intern rechnet um auf 0.540402 zu kommen. aber bin ja nen tollerannter mensch soll deshalb einfach akzeptiert werden. 2.3hilfswinkelbogenmaß also um jetzt ein korektes bogenmaß zu bekommen noch 1/ durch die vorherige rechnung (/ 1 hilfswinkelBogenmaßohne1durch) acad gibt mir da 1.85048 genauer wäre 1.850376 und schwubbs haben wir schon ne ungenauigkeit von 1/10 mm. 2.4 hilfswinkel also bogenmaß umrechnen in grad  (/ (* hilfswinkelBogenmaß pi) 180) <- hatte im original pi und 180 vertauscht weshalb da was dummes raus kam ist jetzt behoben - also acad sagt mir 0.0322969 genauer wäre 0.03229515359 <-hier reicht meine tolleranz vollkommen ist also akzeptiert
schritt3 moduldiagonalneigung 3.1 moduldiagonalneigung (- modulneigung hilfswinkel) ganz einfach ursprungs neigung - dem erechneten hilfwinkel <- bei addition und subtraktion kann ja wohl kein genauigkeitsfehler entstehen oder? 3.2 moduldiagonalneigungbogenmaß: für die projektion der diagonale muss ich mit cos rechnen deshalb jetzt wieder umrechnung in bogenmaß (* moduldiagonalNeigung (/ pi 180))<-- hatte im original pi und 180 vertauscht... also acad gibt mir 0.348502 genauer wäre 0.34850210905 passt ja super ist fast gleich
jetzt der letzte schritt modullängeprojektion (* (cos moduldiagonalNeigungBogenmaß) moduldiagonale) acad gibt mir da 2.14131 mein taschenrechner sagt aber 2.2782688 das ist schon ne stakre differenz und habe natürlich ne kontrollzeichnung und da komme ich auf ein länge von  2.1526 (siehe anhang) also habe drei verschiedene ergebnisse und hab kein ahnung welches stimmt, hab eigentlich der zeichnung vertraut, aber computer machen vlt fehler - ich hab jetzt nach mehrstündiger analyse das gefühl dass bei mir kein fehler mehr da sein kann. bin verzweifelt.
Noch zu meinem anhang: also in rot sieht man ein modul von der seite (die modulbreite ist auf der abbildung nicht ablesbar) und dort ist doch klar zu erkennen das die projektion der diagonale 2.15259 sein sollte

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: 22298
Registriert: 03.06.2002

Alles

erstellt am: 26. Sep. 2023 23: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 Nur für Code Kian 10 Unities + Antwort hilfreich

Hallo,

>>"Sooo hab mir equal angeschaut weiss aber nicht wie es mir helfen soll. ist ja nur zum vergleichen?"
Ja, siehe auch:

Zitat:
Original erstellt von cadffm:
>>"also summup. ich nehme die ganzen rtos wieder raus und belese mich mal über die equal funktion"
Das solltest du unbedingt, aber da dein Code nirgends Zahlen vergleicht, ist auch Equal zunächst uninteressant.


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


{wie geschrieben, ich schau mir nur das Thema Lisp an, nicht ob dein Rechenweg überhaupt stimmt}
Anm: Bei den gaanz vielen Nachkommastellen in der Antwort habe ich dann auch mal irgendwo gerundet/aufgehört, werde ja nicht fürs tippen nicht bezahlt.

_

>>" Ich rechne jetzt einmal durch mit realistischen beispielzahlen
>>" Modullänge 2.278; Modulbreite 1.134; modulhöhe 0.035; neigung 20 grad

Nach deiner Berechnung = -2.16166898
Eine negative Länge? Also ist was in der Berechnung faul (und sicher keine Genauigkeit)


=== SCHNIPP, KIAN hat den Code an zwei Stellen geändert, der negative Wert würde mit dem ursprünglichen Code herauskommen ===

>>" Schritt1 Moduldiagonale ausrechnen -> satz des pythagoras
(+ (* modullänge modullänge) (* modulhöhe modulhöhe)) =Moduldiagonalequadrat
(+ 5.189284 0.001225)
=5.190509


>>" acad gibt mit den wert 5.19051 zurück geb´nauer wären 5.190509 ok ist erstmal nur minimal"
5.19051  = Das ist eine gerundete Rückgabe in der Befehlszeile, betrifft also nur den Anzeigewert in der Rückgabe der Befehlszeile, NICHT der berechnete Wert!
Schau mal hier, ich benutze das RTOS um dir mehr Nachkommastellen zu zeigen:
(+ (* modullänge modullänge) (* modulhöhe modulhöhe)
= "5.190509000000000"


>>" Schritt1.2:wurzel ziehen :
(expt moduldiagonalequadrat 0.5) = moduldiagonale
= 2.278268860341114

>>" acad gibt mir da 2.27827 -> genauer wäre 2.2782688 -> hey kein problem mit 1/100 mm ungenauigkeit kann ich leben"
2.27827 = siehe oben, das ist nur die gerundete Rückgabe in der Befehlszeile
Befehl: (rtos (expt moduldiagonalequadrat 0.5) 2 15)
"2.278268860341114"



>>" Schritt2: hilfswinkel der hilfswinkel is der winkel zwischen der modul diagonale und dem modul selbst (werde ein kleines bild von nem schnitt eines modultisches mit hochladen um es verständlicher zu machen)
>>" 2.1

(/ modullänge moduldiagonale) um den cos vom hilfswinkel zu bekommen
= 0.999881989195483


>>" acad gibt mir da 0.999882 genauer wären 0.999881989 okok immer noch nicht relevant"
Siehe oben, acad berechnet durchaus noch genauer wie nur der gerundete Wert 0.999881989

>>"2.2 hilfswinkelbogenmaßohne1durch jaja das in einzelnen schritten und variabeln zu machen ist voll doof gewesen. aber zu rrechnung"
(cos (/ modullänge moduldiagonale))
= "0.540401604773530"

>>"acad gibt mir 0.540402 genauer wäre 0.5404304 da haben wir schon nen fehler von 3/100 mm,"
siehe oben, 0.540401604773530


>>"check gar nicht wie lisp das intern rechnet um auf 0.540402 zu kommen."
0.540401604773530 gerundet auf 6 Nachkommastellen = 0.540402


>>"2.3hilfswinkelbogenmaß also um jetzt ein korektes bogenmaß zu bekommen noch 1/ durch die vorherige rechnung
(/ 1 hilfswinkelBogenmaßohne1durch)

= 1.850475629914305

>>" acad gibt mir da 1.85048 genauer wäre 1.850376 und schwubbs haben wir schon ne ungenauigkeit von 1/10 mm."
siehe oben.
Also mit deinen Werten gibt das bis hier 1.850475629914305, ich nehme an deine 1.850376 kommen daher das du
in Einzelschritten am Taschenrechner? immer nur gerundete Zwischenwerte mit geringerer Genauigkeit verwendet hast,
also im Grunde das gemacht hast, was du Acad/Lisp vorgeworfen hast     

Meine Ergebnisse schreibe ich weiterhin so nieder wie es im Lisp berechnet wird..

>>" 2.4 hilfswinkel also bogenmaß umrechnen in grad"
(/ (* hilfswinkelBogenmaß pi) 180)
= 0.032296892469921

>>" also acad sagt mir 0.0322969 genauer wäre 0.03229515359 <-hier reicht meine tolleranz vollkommen ist also akzeptiert"
siehe oben.


>>"schritt3 moduldiagonalneigung"
>>"3.1 moduldiagonalneigung"

(- modulneigung hilfswinkel)
= 19.96770310753008

>>"3.2 moduldiagonalneigungbogenmaß: für die projektion der diagonale muss ich mit cos rechnen deshalb jetzt wieder umrechnung in bogenmaß"
(* moduldiagonalNeigung (/ pi 180))
= 0.348502163287103


>>"acad gibt mir 0.348502 genauer wäre 0.34850210905 passt ja super ist fast gleich"
siehe oben.


>>"jetzt der letzte schritt modullängeprojektion"
(* (cos moduldiagonalNeigungBogenmaß) moduldiagonale)
= 2.141311328881954


>>" acad gibt mir da 2.14131 mein taschenrechner sagt aber 2.2782688 das ist schon ne stakre differenz"
Da das der letzte Schritt war, sollten wir nun schauen ob AutoCAD richtig rechnet
und DU mit (zu) geringer Genauigkeit rechnest, oder ob und warum Acad hier "falsch" liegt.


(* (cos moduldiagonalNeigungBogenmaß) moduldiagonale)

Deine (gerundeten) Wert eingesetzt=
(* (cos 0.34850210905) 2.2782688)
(Windows-)Taschenrechner liefert hier = 2.278226655667010
und AutoCAD würde in diesem Fall eine = 2.141311314365069
liefern, es geht also eindeutig um die COS Funktion!

(cos 0.34850210905)
(Windows-)Taschenrechner liefert hier = 0.999981501597625
und AutoCAD würde in diesem Fall eine = 0.939885282353456 liefern.
Aber mein RealLife-Rechner liefern auch diese 0.93... hmm Was ist da los?


Jetzt lesen wir mal die Funktion im Handbuch nach, fangen wir mit Lisp an:
:: "An angle, in radians"
Super, denn wir haben ja bereits den Bogenwert

Könnte es sein das....? Einfach ausprobieren!

also statt 0.34850210905 den Windowsrechner mit 19,96769999997297, denn siehe Bubi: (* 180.0 (/ radians pi)) macht aus Bogenmaß => DezimalGrad

Windowsrechner cos 19.96769999997297
= 0.939885282353456
Was hatte deine Funktion im Lisp ausgerechnet?
= 0.939885282353456

Problem gefunden & ohne Codeänderung gelöst, EIGENTLICH - aber du schreibst ja noch mehr..


>>" und habe natürlich ne kontrollzeichnung und da komme ich auf ein länge von  2.1526 (siehe anhang)
>>" also habe drei verschiedene ergebnisse und hab kein ahnung welches stimmt,"

Deine Kontrollrechnung kannst du jetzt rausnehmen, denn die war ja falsch (dein Verwendeter Rechner, wie zB. der Win-Rechner, erwartete Dezimalgrad, du hast mit Bogenmaß gefüttert),
also gibt es nur noch das eine Ergebnis und die Angabe in deiner Zeichnung.
Wieder fange ich mit der Annahme an das dieses Ergebnis durch eine (zu) geringe Genauigkeit zustande gekommen ist,
also prüfen wir erneut:


Ich möchte jetzt nicht jede Zahl aufzeigen, also schnappe ich mir zunächst einfach mal den letzten Baustein, den Modulwinkel:
Zeichnung= 19.11976°
Genauer  = 19.96769999997297

Kann das ausschlaggebend sein?

Zeichnung= 19.11976000000000° => cos => 0.944836006016526
Genauer  = 19.96769999997297° => cos => 0.939885282353456

und wenn man das dann noch multipliziert mit der Moduldiagonale= 2.278268860341114
Zeichnung: 2.278268860341114*0.944836006016526= 2.152590450636520
Genauer:   2.278268860341114*0.939885282353456= 2.141311371078794

ausschlaggebend? = JA!

Frage: Wie genau wollt Ihr die Panele bauen/planen?
Mit deinen zwei Korrekturen im Code kommt auch in AutoCAD 2.141311328881954 heraus,
also komplett ohne unnötige Rundung, daher weicht der Wert ab den Mikrometern dann etwas ab..

>>" hab eigentlich der zeichnung vertraut, aber computer machen vlt fehler - ich hab jetzt nach mehrstündiger analyse das gefühl dass bei mir kein fehler mehr da sein kann."
Dann sei froh das ich Bock darauf hatte, ansonsten werden die Stunden zu Tagen und die Tage zu Wochen - das bleibt nicht aus,  "Wir alle" kennen das.


>>" bin verzweifelt."
Lasse meine Antwort sacken, teste es und gebe uns ein Update von deinem Befinden.

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

Nachtrag, da der geänderte Code hier noch nicht für copy&paste gepostet wurde:

Code:
(defun c:Modulzeichner (/ später Variablen-Liste hier, um diese als LOKAL zu definieren)
  (setq modullänge (getreal "\nmodullänge in Metern: ")) ; ACAD-Standard, Doppelpunkt gefolgt von einem Leerzeichen am Ende
  (setq modulbreite (getreal "\nModulbreite in Metern: ")) ; ACAD-Standard, Doppelpunkt gefolgt von einem Leerzeichen am Ende
  (setq modulhöhe (getreal "\nModulhöhe in Metern: ")) ; ACAD-Standard, Doppelpunkt gefolgt von einem Leerzeichen am Ende
  (setq modulneigung (getreal "\nNeigung des Moduls in Grad: ")); ACAD-Standard, Doppelpunkt gefolgt von einem Leerzeichen am Ende
  (setq moduldiagonalequadrat (+ (* modullänge modullänge) (* modulhöhe modulhöhe)))
  (setq moduldiagonale (expt moduldiagonalequadrat 0.5000))
  (setq coshilfswinkel (/ modullänge moduldiagonale))
  (setq hilfswinkelBogenmaßohne1durch (cos (/ modullänge moduldiagonale)))
  (setq hilfswinkelBogenmaß (/ 1 hilfswinkelBogenmaßohne1durch))
  (setq hilfswinkel (/ (* hilfswinkelBogenmaß pi) 180)) ; geändert
  (setq moduldiagonalNeigung (- modulneigung hilfswinkel))
  (setq moduldiagonalNeigungBogenmaß (* moduldiagonalNeigung (/ pi 180))) ;geändert
  (setq modullängeProjektion (* (cos moduldiagonalNeigungBogenmaß) moduldiagonale))
  (princ (strcat "Die Modullänge in Projektion beträgt: " (rtos modullängeProjektion 2 8)))
  (princ)
  (alert (strcat "Die Modullänge in Projektion beträgt: " (rtos modullängeProjektion 2 3) "(" (substr (rtos modullängeProjektion 2 10) 6 5) ") Meter"))
(princ)
)

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

Code Kian
Mitglied
Technischer Systemplaner (in Ausbildung)


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

Beiträge: 27
Registriert: 18.09.2023

erstellt am: 29. Sep. 2023 11: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 Cadffm, mega danke fürs sich anschauen, hatte zwischenzeitlich schon angst, dass keiner bock hat sich diesen unsympatischen block an text überhaupt durchzulesen...

{wie geschrieben, ich schau mir nur das Thema Lisp an, nicht ob dein Rechenweg überhaupt stimmt}
Anm: Bei den gaanz vielen Nachkommastellen in der Antwort habe ich dann auch mal irgendwo gerundet/aufgehört, werde ja nicht fürs tippen nicht bezahlt.
    << richtig so. ich werde mich auch für eine Gehaltserhöhung um 100% für dich stark machen!!!

_

>>" Modullänge 2.278; Modulbreite 1.134; modulhöhe 0.035; neigung 20 grad[/i]
Nach deiner Berechnung = -2.16166898
Eine negative Länge? Also ist was in der Berechnung faul (und sicher keine Genauigkeit)
  << huch dass die negativ ist hab ich nicht mal bemerkt 

>>" acad gibt mit den wert 5.19051 zurück geb´nauer wären 5.190509 ok ist erstmal nur minimal"
5.19051  = Das ist eine gerundete Rückgabe in der Befehlszeile, betrifft also nur den Anzeigewert in der Rückgabe der Befehlszeile, NICHT der berechnete Wert!
Schau mal hier, ich benutze das RTOS um dir mehr Nachkommastellen zu zeigen:
(+ (* modullänge modullänge) (* modulhöhe modulhöhe)
= "5.190509000000000"
  << aaaah darauf hätt ich eig auch kommen können, ist ja bei fast allen rechenmaschienen so, dass sie weniger anzeigen als sie selbst berechnen


>>"2.2 hilfswinkelbogenmaßohne1durch jaja das in einzelnen schritten und variabeln zu machen ist voll doof gewesen. aber zu rechnung"
(cos (/ modullänge moduldiagonale))
= "0.540401604773530"

>>"2.3hilfswinkelbogenmaß also um jetzt ein korektes bogenmaß zu bekommen noch 1/ durch die vorherige rechnung
(/ 1 hilfswinkelBogenmaßohne1durch)

= 1.850475629914305

>>" acad gibt mir da 1.85048 genauer wäre 1.850376 und schwubbs haben wir schon ne ungenauigkeit von 1/10 mm."
siehe oben.
Also mit deinen Werten gibt das bis hier 1.850475629914305, ich nehme an deine 1.850376 kommen daher das du
in Einzelschritten am Taschenrechner? immer nur gerundete Zwischenwerte mit geringerer Genauigkeit verwendet hast,
also im Grunde das gemacht hast, was du Acad/Lisp vorgeworfen hast      
  << ääääh uuups hab mir so mühe gegeben das immer mit "answer" funktion zu machen aber im eifer des gefechts bin ich wohl schluderig geworden

Meine Ergebnisse schreibe ich weiterhin so nieder wie es im Lisp berechnet wird..

>>" 2.4 hilfswinkel also bogenmaß umrechnen in grad"
(/ (* hilfswinkelBogenmaß pi) 180)
= 0.032296892469921


>>"jetzt der letzte schritt modullängeprojektion"
(* (cos moduldiagonalNeigungBogenmaß) moduldiagonale)
= 2.141311328881954


>>" acad gibt mir da 2.14131 mein taschenrechner sagt aber 2.2782688 das ist schon ne stakre differenz"
Da das der letzte Schritt war, sollten wir nun schauen ob AutoCAD richtig rechnet
und DU mit (zu) geringer Genauigkeit rechnest, oder ob und warum Acad hier "falsch" liegt.


(* (cos moduldiagonalNeigungBogenmaß) moduldiagonale)

Deine (gerundeten) Wert eingesetzt=
(* (cos 0.34850210905) 2.2782688)
(Windows-)Taschenrechner liefert hier = 2.278226655667010
und AutoCAD würde in diesem Fall eine = 2.141311314365069
liefern, es geht also eindeutig um die COS Funktion!

(cos 0.34850210905)
(Windows-)Taschenrechner liefert hier = 0.999981501597625
und AutoCAD würde in diesem Fall eine = 0.939885282353456 liefern.
Aber mein RealLife-Rechner liefern auch diese 0.93... hmm Was ist da los?


Jetzt lesen wir mal die Funktion im Handbuch nach, fangen wir mit Lisp an:
:: "An angle, in radians"
Super, denn wir haben ja bereits den Bogenwert

Könnte es sein das....? Einfach ausprobieren!

also statt 0.34850210905 den Windowsrechner mit 19,96769999997297, denn siehe Bubi: (* 180.0 (/ radians pi)) macht aus Bogenmaß => DezimalGrad

Windowsrechner cos 19.96769999997297
= 0.939885282353456
Was hatte deine Funktion im Lisp ausgerechnet?
= 0.939885282353456
  << weiß nicht ob ich da lachen oder weinen soll, hab akribisch drauf geachtet immer richtig zu differenzieren zwischen rad und grad... hat wohl nicht geklappt 

Problem gefunden & ohne Codeänderung gelöst, EIGENTLICH - aber du schreibst ja noch mehr..


>>" und habe natürlich ne kontrollzeichnung und da komme ich auf ein länge von  2.1526 (siehe anhang)
>>" also habe drei verschiedene ergebnisse und hab kein ahnung welches stimmt,"

Deine Kontrollrechnung kannst du jetzt rausnehmen, denn die war ja falsch (dein Verwendeter Rechner, wie zB. der Win-Rechner, erwartete Dezimalgrad, du hast mit Bogenmaß gefüttert),
also gibt es nur noch das eine Ergebnis und die Angabe in deiner Zeichnung.
Wieder fange ich mit der Annahme an das dieses Ergebnis durch eine (zu) geringe Genauigkeit zustande gekommen ist,
also prüfen wir erneut:


Ich möchte jetzt nicht jede Zahl aufzeigen, also schnappe ich mir zunächst einfach mal den letzten Baustein, den Modulwinkel [edit von kian - hier ist der winkel der moduldiagonale gemeint -> die variable heisst moduldiagonalneigung]:
Zeichnung= 19.11976°
Genauer  = 19.96769999997297

Kann das ausschlaggebend sein?

Zeichnung= 19.11976000000000° => cos => 0.944836006016526
Genauer  = 19.96769999997297° => cos => 0.939885282353456

und wenn man das dann noch multipliziert mit der Moduldiagonale= 2.278268860341114
Zeichnung: 2.278268860341114*0.944836006016526= 2.152590450636520
Genauer:   2.278268860341114*0.939885282353456= 2.141311371078794
  << äääääh  was? komme nicht mehr ganz mit - warum weicht die zahl (moduldiagonalneigung) so stark vom in der zeichnung berechneten/abgemessenem winkel ab?? also bisher ist klar dass die  19.96769999997297° rechnwegtechnisch her richtig sind - kommt in meinen kopf nicht rein das in der zeichnung die zahl so stark abweicht

ausschlaggebend? = JA!

Frage: Wie genau wollt Ihr die Panele bauen/planen?
Mit deinen zwei Korrekturen im Code kommt auch in AutoCAD 2.141311328881954 heraus,
also komplett ohne unnötige Rundung, daher weicht der Wert ab den Mikrometern dann etwas ab..
  << abweichung in den mikrometern sind voll ok - allerdings bin ich jetzt etwas verunsichert- bei den zahlen und der rechnung stimmt jetzt alles aber bei acad wenn ich es
      zeichne wird es falsch bertechnet oder wie ? weil nach acad zeichnung sollte am ende ja ca 2.1526 raus kommen

>>" hab eigentlich der zeichnung vertraut, aber computer machen vlt fehler - ich hab jetzt nach mehrstündiger analyse das gefühl dass bei mir kein fehler mehr da sein kann."
Dann sei froh das ich Bock darauf hatte, ansonsten werden die Stunden zu Tagen und die Tage zu Wochen - das bleibt nicht aus,  "Wir alle" kennen das.
  << bin mega froh und deshalb nochmal ein dickes DANKE


Lasse meine Antwort sacken, teste es und gebe uns ein Update von deinem Befinden.

  <<also der code funktioniert super und ist für mich toll nachzuvollziehen (mir gefallen auch die kleineren verbesserungen wie ": " nach den getreals. mega sinnvoll aber
    kommt man als blutiger anfänger nicht von alleine drauf

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

Nachtrag, da der geänderte Code hier noch nicht für copy&paste gepostet wurde:

Code:
(defun c:Modulzeichner (/ später Variablen-Liste hier, um diese als LOKAL zu definieren)
  (setq modullänge (getreal "\nmodullänge in Metern: ")) ; ACAD-Standard, Doppelpunkt gefolgt von einem Leerzeichen am Ende
  (setq modulbreite (getreal "\nModulbreite in Metern: ")) ; ACAD-Standard, Doppelpunkt gefolgt von einem Leerzeichen am Ende
  (setq modulhöhe (getreal "\nModulhöhe in Metern: ")) ; ACAD-Standard, Doppelpunkt gefolgt von einem Leerzeichen am Ende
  (setq modulneigung (getreal "\nNeigung des Moduls in Grad: ")); ACAD-Standard, Doppelpunkt gefolgt von einem Leerzeichen am Ende
  (setq moduldiagonalequadrat (+ (* modullänge modullänge) (* modulhöhe modulhöhe)))
  (setq moduldiagonale (expt moduldiagonalequadrat 0.5000))
  (ssetq etq coshilfswinkel (/ modullänge moduldiagonale))
  (hilfswinkelBogenmaßohne1durch (cos (/ modullänge moduldiagonale)))
  (setq hilfswinkelBogenmaß (/ 1 hilfswinkelBogenmaßohne1durch))
  (setq hilfswinkel (/ (* hilfswinkelBogenmaß pi) 180)) ; geändert
  (setq moduldiagonalNeigung (- modulneigung hilfswinkel))
  (setq moduldiagonalNeigungBogenmaß (* moduldiagonalNeigung (/ pi 180))) ;geändert
  (setq modullängeProjektion (* (cos moduldiagonalNeigungBogenmaß) moduldiagonale))
  (princ (strcat "Die Modullänge in Projektion beträgt: " (rtos modullängeProjektion 2 8)))
  (princ)
  (alert (strcat "Die Modullänge in Projektion beträgt: " (rtos modullängeProjektion 2 3) "(" (substr (rtos modullängeProjektion 2 10) 6 5) ") Meter"))
(princ)
)
[/B][/QUOTE]

ps: nochmal danke fürs helfen und wie gesagt bin bei lisp neu und forum beiträge ist auch neu für mich -- in zukunft werden meine beiträge strukturierter aussehen
________
Wer nicht fragt bleibt dumm -- seesamstraße

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: 22298
Registriert: 03.06.2002

Alles

erstellt am: 29. Sep. 2023 14:02    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 Code Kian 10 Unities + Antwort hilfreich

>>"- bei den zahlen und der rechnung stimmt jetzt alles aber bei acad wenn ich es
      zeichne wird es falsch bertechnet oder wie ? weil nach acad zeichnung sollte am ende ja ca 2.1526 raus kommen"

Ich hatte das gar nicht sp als CAD-Konstruktion realisiert gehabt, wohl auch weil ich sagte: Ich prüfe deine Rechnung nicht!
Aber jetzt wo du darauf zurückkommst..

Wir sehen das Bild, kennen aber die Daten nicht, die DWG fehlt hier im Anhang.. (für das nächste Mal vielleicht).
Kurz nachgezeichnet: Bild/Konstruktion passt so.


Also: Ein Fehler in der Berechnung.. Kontrolliere also zum 100. Mal deine Berechnung,
wobei ich im Bereich des Diagonal-Winkel doppelt schauen würde,
denn 19.96769999997297 (bzw. 0.939885282353456) ist die ja gar nicht..

(Du als CAD.de-User hast ihr einen Account, dieser hat EIN Uploadverzeichnis, daher bitte die Anhänge eindeutig benennen, sonst werden die älteren kommentarlos überschrieben).
230929_Modultest1.dwg wirst du vermutlich  nie wieder nehmen, denn heute erinnerst du dich noch an die *1 und morgen ist ein anderes Datum..


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

Code Kian
Mitglied
Technischer Systemplaner (in Ausbildung)


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

Beiträge: 27
Registriert: 18.09.2023

erstellt am: 04. Okt. 2023 10:49    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 cadffm:
>>"- bei den zahlen und der rechnung stimmt jetzt alles aber bei acad wenn ich es
      zeichne wird es falsch bertechnet oder wie ?[b] weil nach acad zeichnung
sollte am ende ja ca 2.1526 raus kommen"

Ich hatte das gar nicht  als CAD-Konstruktion realisiert gehabt, wohl auch weil ich sagte: Ich prüfe deine Rechnung nicht!
Aber jetzt wo du darauf zurückkommst..
 

Wir sehen das Bild, kennen aber die Daten nicht, die DWG fehlt hier im Anhang.. (für das nächste Mal vielleicht).
Kurz nachgezeichnet: Bild/Konstruktion passt so.
  << dachte so ein kleines png reicht mit den bemaßungen dran, denn: "File Types Allowed: .gif , .jpg , .zip , .pdf , .txt , .mid , .png , .mp4
"      da kann ich ja keine dwg hochladen

Also: Ein Fehler in der Berechnung.. Kontrolliere also zum 100. Mal deine Berechnung,
wobei ich im Bereich des Diagonal-Winkel doppelt schauen würde,
denn 19.96769999997297 (bzw. 0.939885282353456) ist die ja gar nicht..
  << stimmt in der zeichnung kommt die auf 19.119756...

(Du als CAD.de-User hast ihr einen Account, dieser hat EIN Uploadverzeichnis, daher bitte die Anhänge eindeutig benennen, sonst werden die älteren kommentarlos überschrieben).
230929_Modultest1.dwg wirst du vermutlich  nie wieder nehmen, denn heute erinnerst du dich noch an die *1 und morgen ist ein anderes Datum..
  << danke für den hinweis ab dem nächsten mal wirds strukturierter ;)
[/B]


_________________________________

kleine zusammenfassung - in der winkelberechnung muss was falsch sein, ich schau nochmal drüber wo genau da der fehler entsteht und melde mich dann nochmal.
danke für die tatkräftige unterstützung und die überwindung sich da jedesmal aufs neue reinzufuchsen und mit diesen wirklich blöden zahlen zu rechnen!!!
Liebe Grüße Kian

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: 22298
Registriert: 03.06.2002

Alles

erstellt am: 04. Okt. 2023 11:15    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 Code Kian 10 Unities + Antwort hilfreich


uplfformate.JPG

 
Jepp, schau mal nach dem Diagonalen-Winkel, ich konnte jetzt nicht verstehen wo der errechnete Wert hinpasst,
aber die Berechnung ansehen wollte ikch auch nicht 

offtopic

Dateianhang: .DWG ist kein Problem - wenn es also irgendwann angehängt werden soll.


Bild statt DWG:
Sehr sinnvoll um jemandem zu zeigen was man selbst sieht.
Dem Screenshot meiner eigenen Konstruktion würde ich auch trauen, aber man sieht weder die wahren Werte der Geometrie,
noch ob die angezeigten "Zahlen" die Werte der Geometrie wiedergeben.

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

Code Kian
Mitglied
Technischer Systemplaner (in Ausbildung)


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

Beiträge: 27
Registriert: 18.09.2023

erstellt am: 09. Okt. 2023 10:17    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 Code Kian 10 Unities + Antwort hilfreich

Hallo, hoffe ihr hattet ein schönes wochenende und danke für eure Hilfe nochmal, also ich (mit Hilfe von mehreren klugen Köpfen) habe das Problem gefunden. Der fehler entsteht beim Hilfswinkel, die cos funktion bringt dort einen zu ungenauen wert raus da die zahl (der winkel) so klein ist. Meine lösungs ist den Rechenansatz zu ändern und über einen anderen winkel auf die projektionslänge zu kommen. falls es wen intressiert poste ich mal den Teil des codes:

-- dtr ist degrees to radians - eine funktion die mir bubi zur verfügung gestellt hat (*_*)

Code:
(setq modullänge (getreal "\nmodullänge in Metern"))
  (setq modulhöhe (getreal "\nModulhöhe in Metern"))
  (setq modulneigung (getreal "\nNeigung des Moduls in Grad"))
  (setq modulneigung (dtr modulneigung))
 
  (setq nebenwinkel (- (dtr 90) modulneigung))
 
  (setq projektionslänge (+ (* (cos nebenwinkel) modulhöhe) (* (cos modulneigung) modullänge)))
  (princ projektionslänge)

liebe grüße
Kian

[Diese Nachricht wurde von Code Kian am 09. Okt. 2023 editiert.]

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: 22298
Registriert: 03.06.2002

Alles

erstellt am: 09. Okt. 2023 10: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 Nur für Code Kian 10 Unities + Antwort hilfreich

Irgendwas stimmt hier nicht..
Stell doch bitte noch einmal den vollständigen funktionierenden Code zur Verfügung

Mit den paar Zeilen kommst du in deinem Beispiel auf unter einem Meter Projektionslänge!?

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

Code Kian
Mitglied
Technischer Systemplaner (in Ausbildung)


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

Beiträge: 27
Registriert: 18.09.2023

erstellt am: 10. Okt. 2023 15:16    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 der gesamte code nochmal

Code:
(defun c:Modulzeichner (/)
  (defun DtR (d) (* pi (/ d 180.0))) 
  (defun RtD (r) (* 180.0 (/ r pi)))  ;degrees to rad eine funktion von Bubi zur verfügung gestellt
 
  ; infos um projektionslänge zu berechnen
  (setq modullänge (getreal "\nmodullänge in Metern"))
  (setq modulhöhe (getreal "\nModulhöhe in Metern"))
  (setq modulneigung (getreal "\nNeigung des Moduls in Grad"))
  (setq modulneigung (dtr modulneigung))
 
  ; Infos für den rest der zeichnung
  (setq modulbreite (getreal "\nModulbreite angeben"))
  (setq tischbreite (getreal "\nTischbreite angeben"))
  (setq klemmbreite (getreal "\nBreite der Klemme angeben"))
  (setq modulabstand (getreal "\nAbstand der module zueinander (vertikal ebene)"))
  (setq Modulanzahlverti (getint "\nAnzahl der Module pro Tisch vertikal"))
  (setq Modulanzahlhori (getint "\nAnzahl der Module pro Tisch horizontal"))
 
  ;berechnung der Projektionslänge
  (setq nebenwinkel (- (dtr 90) modulneigung))
 
  (setq projektionslänge (+ (* (cos nebenwinkel) modulhöhe) (* (cos modulneigung) modullänge)))
  (princ projektionslänge"\n")
 

  ;jetzt den abstand in der projektion
 
  (setq projektionsabstandzusatz (+ (* (cos nebenwinkel) modulhöhe) (* (cos modulneigung) modulabstand)))  ; der abstand der module (vertikal) in der projektion
 
  ;was noch abgezogen werden muss
  (setq abstandabzugbeta (- 90 (- 90 (rtd modulneigung))))
  (setq abstandsabzugseitea (* modulhöhe (cos (dtr abstandabzugbeta))))  ;;zwischenschritte winkel beta und seite b berechnen
  (setq projektionsabstandabzug (sqrt (-(* modulhöhe modulhöhe) (* abstandsabzugseitea abstandsabzugseitea))))
  ;neue projektion
 
  (setq abstandsprojektion (- projektionsabstandzusatz (* 2 projektionsabstandabzug)))
 
)


Also in der Diskussion ging es bisher immer nur um den Teil vor der Abstandsprojektion
die variable "projektionslänge" ist die projektionslänge eins moduls (auf dem modultisch) - "abstandsprojektion ist der abstand zwischen den modulen in der projektion

hoffe es ist einigermaßen nachvollziehbar  - bei mir kommen jedenfalls die richtigen zahlen raus.

ps: hab jezt glaub ich alle daten gesammelt die ich brauche. jetzt will ich das modul natürlich zeichnen lassen. bin gerade aber bisschen aufgeschmissen weil ich keine tabelle mit den indexzahlen finde (-1 objektname . 8 layer usw...) kann da jemand vlt nen link schicken oder einfach ne liste posten ?
liebe Grüße
Kian

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: 1144
Registriert: 27.11.2003

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

erstellt am: 10. Okt. 2023 15: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 Nur für Code Kian 10 Unities + Antwort hilfreich

Meinst Du die  DXF-Gruppencodes

HTH
Gruß
Thomas

[Diese Nachricht wurde von spider_dd am 10. Okt. 2023 editiert.]

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

Code Kian
Mitglied
Technischer Systemplaner (in Ausbildung)


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

Beiträge: 27
Registriert: 18.09.2023

erstellt am: 10. Okt. 2023 15: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

Genau die meine ich! Danke Thomas!!

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: 22298
Registriert: 03.06.2002

Alles

erstellt am: 10. Okt. 2023 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 Nur für Code Kian 10 Unities + Antwort hilfreich

Hi,

es ist zwar löblich die Erstellung komplett über die API zu lösen,
aber falls du etwas Tempo herausnehmen möchtest,
so könntest du ja auch AutoCAD- Befehle fernsteuern für den Anfang, AutoLispfunktion COMMAND und COMMAND-S

Die DXF Referenz gibt es auch in deiner Programmhilfe
hier mal der Link zur 2024er Hilfe
https://help.autodesk.com/view/OARX/2024/DEU/?guid=GUID-235B22E0-A567-4CF6-92D3-38A2306D73F3

(defun c:Test nil
(setvar "cmdecho" 1)
(setvar "osnapcoord" 1)
(setq P1 (list 300 0))
(command "_.PLINE" '(0 0) '(0 100) '(100 200) P1 "_c")
(princ)
)

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: 22298
Registriert: 03.06.2002

Alles

erstellt am: 11. Okt. 2023 08:47    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 Code Kian 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Code Kian: Also der gesamte code nochmal [/i]

Das ist nicht ganz dein Code, denn der ist nicht lauffähig ;)

Fehler: 
(princ projektionslänge"\n")
Lösungen:
(princ (strcat projektionslänge "\n"))
oder
(princ projektionslänge)
(terpri)
oder eine andere Variante


Standards erfreut den Nutzer!

Modulzeichner
Befehl: (setq modullänge (getreal "\nmodullänge in Metern"))
modullänge in Metern5.55

AutoCAD zu 99.9%
Befehl: VERSETZ
Abstand angeben oder [Durch punkt/lÖschen/Layer] <Durch punkt>: 5.55


Modulzeichner geändert
Befehl: (setq modullänge (getreal "\nModullänge in Metern: "))
Modullänge in Metern: 5.55

>>"aufgeschmissen

Neben der Hilfe, um Objektdaten abzufragen:

Code:
(defun c:DXFdata () ; TopLevel
  (foreach i (entget(car(entsel))'("*")) (print i))
(princ)
)
(defun c:DXFdataN () ; NestedObject/LowestLevel
  (foreach i (entget(car(nentsel))'("*")) (print i))
(princ)
)


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

Code Kian
Mitglied
Technischer Systemplaner (in Ausbildung)


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

Beiträge: 27
Registriert: 18.09.2023

erstellt am: 11. Okt. 2023 13:04    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 cadffm:
Hi,

es ist zwar löblich die Erstellung komplett über die API zu lösen,
aber falls du etwas Tempo herausnehmen möchtest,
so könntest du ja auch AutoCAD- Befehle fernsteuern für den Anfang, AutoLispfunktion COMMAND und COMMAND-S

Die DXF Referenz gibt es auch in deiner Programmhilfe
hier mal der Link zur 2024er Hilfe
https://help.autodesk.com/view/OARX/2024/DEU/?guid=GUID-235B22E0-A567-4CF6-92D3-38A2306D73F3


)


ja ist glaub ich einfacher so, aber ich würde gerne den linien schon einem layer zuweisen, geht das auch ohne so eine API liste zu erzeugen?
LG Kian

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: 22298
Registriert: 03.06.2002

Alles

erstellt am: 11. Okt. 2023 13: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 Code Kian 10 Unities + Antwort hilfreich

>>"aber ich würde gerne den linien schon einem layer zuweisen"

Wie schaffst du das denn aktuell?

Entweder man setzt einen Layer aktuell (CLAYER) nachdem dieser existiert/erstellt wurde (-LAYER neu),
oder gleich beides in einem (-LAYER machen)
und zeichnest dann drauf los..

ODER man erstellt ein Objekt und ändert dann dessen Layer (Ändern oder EigÄndr)


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

archtools
Mitglied



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

Beiträge: 970
Registriert: 09.10.2004

Entwickler für AutoCAD, BricsCAD u.a., alle Systeme

erstellt am: 12. Okt. 2023 10:47    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 Code Kian 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von cadffm:

ODER man erstellt ein Objekt und ändert dann dessen Layer (Ändern oder EigÄndr)

Auch dazu muss der Layer schon vorhanden sein. Aber man kann mittels Lisp dem Objekt einfach einen anderen Layernamen zuweisen, und dafür muss der Layer noch nicht existieren. Mit dem kleinen Lisp unten beispielsweise (&ssmodent <ename> 8 "NEUERLAYER"). Man kann damit aber auch jede andere als DXF-Gruppencode im Entity stehende Eigenschaft ändern.


Code:

(defun &ssmodent (ename dxf val / old)
  (if (setq old (assoc dxf (entget ename)))
    (entmod (subst
              (cons dxf val)
              old
              (entget ename)
            )
    )
    (entmod (append (entget ename) (list (cons dxf val))))
  )
)

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

Code Kian
Mitglied
Technischer Systemplaner (in Ausbildung)


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

Beiträge: 27
Registriert: 18.09.2023

erstellt am: 23. Okt. 2023 11: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

Also bisher habe ich noch nichts wirklich gezeichnet in autolisp und daher auch keine layer zugewiesen.
Jetzt nach ner woche krankheit wollte ich mich mal wieder dran setzen und erstmal schauen wie das zeichnen funktioniert und da bin ich schon auf mein erstes problem gestoßen (soll ich mal nen neues thema dafür aufmachen oder ist ok das hier weiter zu diskutieren?)
(command "_line" '(0.0 0.0 0.0) '(1.0 0.0 0.0) "") funtioeniert bei mir nicht --> fehler: funktion abgebrochen
das gleiche wenn ich es liste: (command "_line" (list 0.0 0.0 0.0) (list 1.0 0.0 0.0) "")
es klappt nur wenn ich mir vorher punkte mit getpoint hole BSP:
Code:
(setq koord1 (getpoint) koord2 (getpoint)
(command "_line" koord1 koord2)

selbst wenn ich mir koord1 und koord2 ausgeben lasse und dann genauso die punkte als liste kopiere und wieder hinter command line setze gibt er mir Fehler: funktion abgebrochen
woran liegt das - wie stelle ich dem (command "_line") koordinaten richtig zur verfügung?
Danke für eure hilfe  das mit den layern kommt dann danach nochmal  
LG Kian

[Diese Nachricht wurde von Code Kian am 23. Okt. 2023 editiert.]

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: 22298
Registriert: 03.06.2002

Alles

erstellt am: 23. Okt. 2023 11:28    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 Code Kian 10 Unities + Antwort hilfreich

Bleiben wir bei der einfachen Zeile, die sollte funktionieren und man braucht sich nicht (unnötig) Gedanken um die Variablen machen: (command "_line" '(0.0 0.0 0.0) '(1.0 0.0 0.0) "")

Das sollte funktionieren: Bitte kopiere noch einmal die Zeile von hier:
(command "_line" '(0.0 0.0 0.0) '(1.0 0.0 0.0) "")
in deine Befehlszeile oder Textfenster: [F2]

Noch immer eine Fehlermeldung?
Falls Ja, bitte teste diese Eingabe in deiner Befehlszeile:
(command "_.line" '(0.0 0.0 0.0) '(1.0 0.0 0.0) "")
Und?


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

Code Kian
Mitglied
Technischer Systemplaner (in Ausbildung)


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

Beiträge: 27
Registriert: 18.09.2023

erstellt am: 23. Okt. 2023 11: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

Zitat:
Original erstellt von cadffm:
Bleiben wir bei der einfachen Zeile, die sollte funktionieren und man braucht sich nicht (unnötig) Gedanken um die Variablen machen: (command "_line" '(0.0 0.0 0.0) '(1.0 0.0 0.0) "")

Das sollte funktionieren: Bitte kopiere noch einmal die Zeile von hier:
(command "_line" '(0.0 0.0 0.0) '(1.0 0.0 0.0) "")
in deine Befehlszeile oder Textfenster: [F2]

Noch immer eine Fehlermeldung?
Falls Ja, bitte teste diese Eingabe in deiner Befehlszeile:
(command "_.line" '(0.0 0.0 0.0) '(1.0 0.0 0.0) "")
Und?


Also beides ausprobiert und beides gibt nil zurück -> gezeichnet wird nichts

huch das muss ich zurück nehmen ich habe die linie bloss nicht gesehen da sie genau auf der achsenanzeige lag und war wegen der nilrückgabe eingeschüchtert - also update es funktioniert doch  aber irgendwas ist noch komisch, das kann ich aber noch nicht bennen - vlt nach der mittagspause dann 
danke für deine hilfe
Liebe grüße Kian

[Diese Nachricht wurde von Code Kian am 23. Okt. 2023 editiert.]

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: 22298
Registriert: 03.06.2002

Alles

erstellt am: 23. Okt. 2023 13:41    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 Code Kian 10 Unities + Antwort hilfreich

Okay, die Command-Rückgabe ist immer nil.

Dann versuche es noch einmal wie bisher(also vor "meinem Test"), wie genau waren da die Umstände?
Ich vermute du hast es in einem Programm getestet, ggf. direkt aus dem VS?

Teste mit neu gestartetem AutoCAD (immer, wenn etwas nicht so läuft wie erwartet), funktioniert es jetzt auch - oder wieder " fehler: funktion abgebrochen" ?

Anm: Wenn du in AutoCAD native Befehle automatisiert (alsp per Script,Makro,(send)command steuerst),
dann musst du dich um den fortlaufenden Objektfang kümmern!
Sonst kann es je nach Zeichnungsinhalt und aktueller Ansicht zu unerwünschten Ergebnissen führen.
Denn, kaum jemandem fällt es je auf, der fortlaufende Objektfang ist bei Tastatureingaben in den Standardeinstellungen DEaktiviert (sehr sinnvoll),
aber explizit NICHT unterdrückt wenn es um automatisierte Eingaben geht.

Man muss also vor Punkteingaben dann den Objektfang "KEIN" oder eben "_non" oder "none" aufrufen, damit die ggf. eingeschalteten fortlaufenden Objektfänge für die nächste Eingabe deaktiviert werden.
Alternativ könnte man die fortlaufenden, falls aktiviert, aus- und danach wieder einschalten.
Der smarteste Weg ist jedoch ganz einfach die Variable für die Unterdrückung umzustellen, so dass diese auch für Automatisierungen gilt(1 statt 2).
siehe Hilfe[F1] oder auch FAQ

Sollte man den Objektfang auch mal in der Automatisierung wünschen, so kennt man sich "jetzt" aus und kümmert sich entsprechend darum,
wichtig ist halt nur zu wissen das es da was gibt und was es da gibt.

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

Code Kian
Mitglied
Technischer Systemplaner (in Ausbildung)


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

Beiträge: 27
Registriert: 18.09.2023

erstellt am: 23. Okt. 2023 13: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

Ich habs nochmal versucht also das normale command zeichnen funktioniert doch ganz normal  wer hätts gedacht.

Ich will jetzt aber eine Linie vom startpunkt:Einfügepunkt mit der länge:modulbreite in richtung der x achse zeichnen und habe mir das so vorgestellt:

Code:
(command "_line" einfügepunkt (list (+ (nth 0 einfügepunkt) modulbreite) (nth 1 einfügepunkt) (nth 2 einfügepunkt) ""))

also ich dachte mir startpunkt beim ausgewählten eifügepunkt ganz einfach und dann eine liste mit den x y und z koordinaten für den endpunkt y und z sollen ja gleich bleiben nur der x wert soll um modulbreite verschoben werden)

bekomme aber nur nil und nichts wird gezeichnet - habe es auch mit (entlast) geprüft wurde wirklich nil gezeichnet

Liebe grüße Kian

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: 22298
Registriert: 03.06.2002

Alles

erstellt am: 23. Okt. 2023 14: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 Code Kian 10 Unities + Antwort hilfreich


231023-lisp1.JPG

 
Zerlege den Code und schaue es dir Stück für Stück an.  Siehe Anhang ----->

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

Code Kian
Mitglied
Technischer Systemplaner (in Ausbildung)


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

Beiträge: 27
Registriert: 18.09.2023

erstellt am: 23. Okt. 2023 15:04    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 cadffm:
Zerlege den Code und schaue es dir Stück für Stück an.   Siehe Anhang ----->


Das versuche ich die ganze zeit, ich versuch hier nochmal nachvollziehbar mein prozess zu schildern:

Also habe den code geschrieben :

Code:

(command "_line" einfügepunkt (list (+ (nth 0 einfügepunkt) modulbreite) (nth 1 einfügepunkt) (nth 2 einfügepunkt) ""))

wenn ich nur die liste in die kommandozeile schreibe

Code:
(list (+ (nth 0 einfügepunkt) modulbreite) (nth 1 einfügepunkt) (nth 2 einfügepunkt)

dann gibt er mir eine liste mit drei zahlen zurück die ungefähr so aussieht (1237.7 18237.2 0.0) und das ist ja genau was ich will (dachte ich zumindest)
-- einfügepunkt ist natürlich genauso eine liste aus drei koordinaten, da sie durch getpoint erstellt wurde.

wenn ich die variabeln als zahlen eingebe passiert auch was passieren soll aber mit den variabeln will er nicht rechnen/zeichnen.

VS zeigt mir an das wohl an dem + was nicht stimmen kann (fehlerhafter argumenttyp: numberp: Nil)

Habe jetzt die vermutung das nach (list...) kein operator folgen darf? stimmt das? dann könnte ich es umgehen indem ich den zweiten punkt (endpunkt der linie) in einer variabeln zwischenspeicher.

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: 22298
Registriert: 03.06.2002

Alles

erstellt am: 23. Okt. 2023 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 Nur für Code Kian 10 Unities + Antwort hilfreich

Schau dir mein Bild noch einmal in Ruhe an!


>>"wenn ich nur die liste in die kommandozeile schreibe "
(list (+ (nth 0 einfügepunkt) modulbreite) (nth 1 einfügepunkt) (nth 2 einfügepunkt)
>>"dann gibt er mir eine liste mit drei zahlen zurück "
Nein, dann sagt dir AutoCAD nur das es eine geöffnete Klammer hat, die noch nicht geschlossen wurde..
Was du posten wolltest sieht so aus:
(list (+ (nth 0 einfügepunkt) modulbreite) (nth 1 einfügepunkt) (nth 2 einfügepunkt))
und dann wird dir die Lsite mit den drei Zahlen ausgegeben..

[ESC]

Und jetzt gibst du einfach mal die Klammer ein aus deinem ursprünglichen Code, dann erhälst du genau das zurück
was ich in meinem Bild zeige und das ist nicht das was du wolltest (und nichts mit dem der Linie-Befehl etwas anfangen kann).

Also los
Befehl: (list (+ (nth 0 einfügepunkt) modulbreite) (nth 1 einfügepunkt) (nth 2 einfügepunkt) "")

?????

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

Code Kian
Mitglied
Technischer Systemplaner (in Ausbildung)


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

Beiträge: 27
Registriert: 18.09.2023

erstellt am: 23. Okt. 2023 15:34    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

Ach cadffm danke dir für die hilfe. habe den anhang nicht gesehen da ich "siehe anfang" gelesen habe und nicht wusste welcher anfang - habs daher gekonnt ignoriert.
Ich schau mir den Anhang gleich an dann versteh ichs bestimmt. werde heute aber erstmal nicht damit weiterkommen. heisst du höhrst morgen wieder von mir.
Liebe Grüße und großes Danke
kian

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: 22298
Registriert: 03.06.2002

Alles

erstellt am: 23. Okt. 2023 15:49    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 Code Kian 10 Unities + Antwort hilfreich

Du hast nur die eine Klammer an die falsche Stelle gepackt, dieser Fehler wird dich "für immer" begleiten solange du LISP schreibst. 

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

Code Kian
Mitglied
Technischer Systemplaner (in Ausbildung)


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

Beiträge: 27
Registriert: 18.09.2023

erstellt am: 24. Okt. 2023 14:13    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

aaaaah passiert mir viel zu oft, gut das du mich drauf hinweisst. Gib mir zwei Jahre dann bin ich der aufgehende Stern am Lisphimmel und lese deine Codes korrektur 

kleiner themawechsel: es gibt doch bestimmt eine funktion mit der man sich den ename eines object geben lassen kann (so wie entlast bloß dass es nicht das letzte objekt ist). konnte online nichts finden mit meinen schlagwörtern
LG Kian

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: 1144
Registriert: 27.11.2003

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

erstellt am: 24. Okt. 2023 14:36    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 Code Kian 10 Unities + Antwort hilfreich

Hallo Kian,

(nentsel)  liefert Objektnamen und Pickpunkt.


Ergänzung:
Bei verschachtelten Objekten (z. B. Blockreferenz) wird der e-name des gepickten (unter-)Elementes angegeben.

Ein weitere Weg wäre:

(entget (ssname (ssget) 0))

Das liefert gleich die kompletten Objektdaten des ersten ausgewählten Objektes, das erste Element ist der Objektname. Hier wird bei Blockreferenzen das "Insert" als solches geliefert.

HTH
Gruß
Thomas

[Diese Nachricht wurde von spider_dd am 24. Okt. 2023 editiert.]

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

Code Kian
Mitglied
Technischer Systemplaner (in Ausbildung)


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

Beiträge: 27
Registriert: 18.09.2023

erstellt am: 24. Okt. 2023 14:38    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 spider_dd:
Hallo Kian,

(nentsel)  liefert Objektnamen und Pickpunkt.

HTH
Gruß
Thomas


Das ging schnell und einfach - so Lob ich das !!
Danke dir !!!

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: 22298
Registriert: 03.06.2002

Alles

erstellt am: 25. Okt. 2023 10: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 Code Kian 10 Unities + Antwort hilfreich

schau dir noch einmal diesen Post an:
https://ww3.cad.de/foren/ubb/Forum145/HTML/004939.shtml#000018

und nicht nur anwenden, sondern auch zerlegen&verstehen.
Auf diesem Weg hättest du entsel&nentsel schon gekannt,
wobei auch im Ergebnis der Objektname enthalten ist, Gruppencode -1
 

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