| |
| 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: Funktion Zylinderkanten Abrunden (1710 / mal gelesen)
|
Jürgen Scheeren Mitglied Energieanlagen Konstrukteur , CAD-Administrator
Beiträge: 262 Registriert: 03.04.2003 Autocad MEP 2016 win7x64bit
|
erstellt am: 15. Jun. 2016 09:36 <-- editieren / zitieren --> Unities abgeben:
Hallo liebe Lispler, ich habe in meinem Code eine Funktion die die Kanten eines Zylinder abrundet. Leider rundet die Funktion nur die obere Kante ab und nicht die untere. Hat da jemand einen Tip ich hab mir schon einen Wolf probiert...... Hier der Code... wobei p4 die obere und p5 die untere Kante ist.... (defun Pneumat (/) (setq DN1 (getstring "\n Nenndurchmesser DN <>:")) (if (= DN1 "15")(progn(setq dugo 250 )(setq lang1 25 )(setq lang2 472))) (if (= DN1 "20")(progn(setq dugo 250 )(setq lang1 25 )(setq lang2 472))) (if (= DN1 "25")(progn(setq dugo 250 )(setq lang1 25 )(setq lang2 480))) (if (= DN1 "32")(progn(setq dugo 250 )(setq lang1 25 )(setq lang2 481))) (if (= DN1 "40")(progn(setq dugo 250 )(setq lang1 25 )(setq lang2 487))) (if (= DN1 "50")(progn(setq dugo 250 )(setq lang1 50 )(setq lang2 504))) (if (= DN1 "65")(progn(setq dugo 250 )(setq lang1 50 )(setq lang2 531))) (if (= DN1 "80")(progn(setq dugo 250 )(setq lang1 50 )(setq lang2 547))) (if (= DN1 "100")(progn(setq dugo 250 )(setq lang1 50 )(setq lang2 566))) (if (= DN1 "125")(progn(setq dugo 300 )(setq lang1 50 )(setq lang2 590))) (if (= DN1 "150")(progn(setq dugo 300 )(setq lang1 50 )(setq lang2 650))) (setq lang3 124) (setq lang4 100) (setq startpkt (getpoint "\nEinfügepunkt wählen: ")) (setq xstart (car startpkt)) (setq ystart (car (cdr startpkt))) (setq zstart (car (cddr startpkt))) (setq X1 xstart) (setq Y1 ystart) (setq X2 xstart) (setq Y2 ystart) (setq Z2 (+ zstart lang2)) (setq X3 xstart) (setq Y3 ystart) (setq Z3 (+ zstart (- lang2 124))) (setq X4 xstart) (setq Y4 (+ ystart (* dugo 0.5 ))) (setq Z4 (+ zstart lang2)) (setq X5 xstart) (setq Y5 (+ ystart (* dugo 0.5 ))) (setq Z5 (+ zstart (- lang2 124))) (setq p1 (list X1 Y1 zstart)) (setq p2 (list X2 Y2 Z2)) (setq p3 (list X3 Y3 Z3)) (setq p4 (list X4 Y4 Z4)) (setq p5 (list X5 Y5 Z5)) (command "_.cylinder" p1 (/ lang1 2.0) "_c" p2)(setq e1 (entlast)) (command "_.cylinder" p2 (/ dugo 2.0) "-124" "")(setq e2 (entlast)) (command "_.cylinder" p3 (/ dugo 5.0) "-224" "")(setq e3 (entlast))
(command "_union" e1 e2 e3 "") ;;Funktion Zylinderkante abrunden (setq *osmode (getvar "osmode")) (command "filletrad" "30" "") (setvar "osmode" 512) ;;nearest (initget (+ 1 2 128)) (setvar "osmode" *osmode) (cond ((listp p4) (command "._fillet" p4 (getvar "filletrad") "")) (T (setvar "filletrad" (distof p4)) (setq p4 nil)) );end of cond ;;Funktion Zylinderkante abrunden (setq *osmode (getvar "osmode")) (command "filletrad" "30" "") (setvar "osmode" 512) ;;nearest (initget (+ 1 2 128)) (setvar "osmode" *osmode) (cond ((listp p5) (command "._fillet" p5 (getvar "filletrad") "")) (T (setvar "filletrad" (distof p5)) (setq p5 nil)) );end of cond (setvar "cmdecho" 1) (princ) ) Gruß Jürgen [Diese Nachricht wurde von Jürgen Scheeren am 15. Jun. 2016 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 15. Jun. 2016 09:49 <-- editieren / zitieren --> Unities abgeben: Nur für Jürgen Scheeren
|
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 15. Jun. 2016 10:01 <-- editieren / zitieren --> Unities abgeben: Nur für Jürgen Scheeren
Da muß ich wohl zurück rudern, Schon die Zeile "(command "_.cylinder" p2 ..." entspricht nicht dem Befehlsablauf in 2013. @Jürgen Wie Archtools bereits im OKTOBER m,ehrfach nachhakte, so wiederhole ich nun seinen Wink mit dem Zaunpfahl: [Zitat]Original erstellt von Jürgen Scheeren: Hallo liebe Lispgemeinde, ich hab mir gerade ein Progi zusammengeschustert das Armaturen mit Antrieben zeichnet. Alles gaaaaanz simpel.[Zitat] Zitat: Original erstellt von Archtools: Weil Du ja alles über COMMAND erledigst, stellt sich zu allererst die entscheidende Frage: hast Du das auch genau so in der Befehlszeile schon mal getestet? Klappt's da?
Du mußt deine Command (TASTATUREINGABEN!!) ordentlicher "erarbeiten", das diese Zeilen funktionieren ist purer Zufall Da macht es dann auch als Unbetroffener wenig Spaß zu helfen ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jürgen Scheeren Mitglied Energieanlagen Konstrukteur , CAD-Administrator
Beiträge: 262 Registriert: 03.04.2003 Autocad MEP 2016 win7x64bit
|
erstellt am: 15. Jun. 2016 10:19 <-- editieren / zitieren --> Unities abgeben:
Hallo Holger, ja ich weiß.... Asche auf mein Haupt.... Bin halt nur Hobbylispler Ich werde die Commandfunktionen noch mal prüfen.... Kann man nicht die Abrundefunktion nur für sich betrachten..... die sind übrigens nicht von mir, sondern aus dem www..... Gruß Jürgen [Diese Nachricht wurde von Jürgen Scheeren am 15. Jun. 2016 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 15. Jun. 2016 10:38 <-- editieren / zitieren --> Unities abgeben: Nur für Jürgen Scheeren
Deine Zeilen (aus dem Netz - sowas lasse ich nicht gelten, es ist dein Copy&Paste-Werk ) solltest du neben einem leeren Blatt Papier legen (Notepad.exe ), dann das ganze noch mal NEU erstellen. Command zum erstellen der Zylinder nicht alle "sauber", Command zu Filletrad nicht sauber, merkwürdige Initget-Anweisungen und mehrfach unnötiges speichern des letzten "Osmode"-Wertes, bis hin zu deinem eigentlichen Grund des Themenstarts.. Dein erster Abrunden-Vorgang soll wohl gggganz die obere Fläche des obersten Zylinders erwischen(P4)? Dein P5 ist auf Höhe "Unterkannte der soeben erstellen Abrundung" und zwar "mittig" im ZUylinder, von Oben betrachtet. Kurz: Da ist keine Kante zum Abrunden! Und noch etwas: Wenn du Osmode (und/oder Osnapcoord!!) nicht ordentlich regelst in deinen Zeilen, dann bleibt es wieder Glückssache mit dem Ergebnis. Eigentlich müßtest du sogar noch den Zoom regeln für die Sicherstellung des richtigen Ergebnisses. Da du dich hier nur Commands bedienst, sind das alles keine expliziten Lisp-Problematiken. Beispiel "Abrunden" / Command Abrunden ist ein gewöhnlicher AutoCAD-Befehl und kann in der Befehlszeile durch Nutzung von Fingern oder Bleistift(zum drücken der tasten) getestet werden, so wie alles was du über einen Command in die Befehlszeile schickst. ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jürgen Scheeren Mitglied Energieanlagen Konstrukteur , CAD-Administrator
Beiträge: 262 Registriert: 03.04.2003 Autocad MEP 2016 win7x64bit
|
erstellt am: 15. Jun. 2016 10:45 <-- editieren / zitieren --> Unities abgeben:
|
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 15. Jun. 2016 10:57 <-- editieren / zitieren --> Unities abgeben: Nur für Jürgen Scheeren
Ich hoffe der Codeschnipsel soll nicht das neue sein (ist das überhaupt geändert? - sind bis auf 3 Zeilen noch immer alle optimierungsbedürftigen Zeilen drin)nochmal: Fast alle Commands sind nicht sauber, P5 wird falsch berechnet (meiner Meinung nach), Überflüssige Initget, Osmode, Filletrad und auch einmal (setq *osmode enthalten. Und den passenden Zoombereich würde ich noch angeben, Osnapcoord regeln, also wie angesprochen: 1x Neu zB hier: (setvar "osmode" 512) ;;nearest (initget (+ 1 2 128)) (setvar "osmode" *osmode) Wofür setzt du dort Osmode auf 512 wofür ist das initget? Mich würde es freuen wenn du das Projekt "EinmalNeu" angehst, denn weitere Threads zu diesem Konstrukt wie oben/Ursprung bzw. Oktober'15 sind definitiv vorprogrammiert und vor allem verstehst du dann auch was da steht. Schon mit anderem Acadprofil könnte es crashen, mit einer ungünstigen "Ansicht/Zoom" ebenfalls. ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jürgen Scheeren Mitglied Energieanlagen Konstrukteur , CAD-Administrator
Beiträge: 262 Registriert: 03.04.2003 Autocad MEP 2016 win7x64bit
|
erstellt am: 15. Jun. 2016 11:00 <-- editieren / zitieren --> Unities abgeben:
|
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 15. Jun. 2016 11:35 <-- editieren / zitieren --> Unities abgeben: Nur für Jürgen Scheeren
Ein "Holger" hat hier im übrigen nicht geschrieben, ich bin cadffm/Sebastian, Holger Brischke würde die Zeilen nicht unterstützen (aus gutem Grund), sondern sowas gleich RICHTIG angehen. Und wenn es beruflich/kommerziell oder generell in Sicherheitsrelevanten Bereichen genutzt wird (das Ergebnis), dann wäre mein Rat ebenfalls eine sauberere Lösung. ------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jürgen Scheeren Mitglied Energieanlagen Konstrukteur , CAD-Administrator
Beiträge: 262 Registriert: 03.04.2003 Autocad MEP 2016 win7x64bit
|
erstellt am: 15. Jun. 2016 14:07 <-- editieren / zitieren --> Unities abgeben:
So..............hab mal versucht das sauber hinzubekommen..... (defun Pneumat (/) (setq OldOsnapCoord (getvar "OSNAPCOORD")) (setvar "OSNAPCOORD" 1) (setq OldOmode (getvar "OSMODE")) (setvar "OSMODE" 0) (setvar "CMDECHO" 0) (setq DN1 (getstring "\n Nenndurchmesser DN <>:")) (if (= DN1 "15")(progn(setq dugo 250 )(setq lang1 25 )(setq lang2 472))) (if (= DN1 "20")(progn(setq dugo 250 )(setq lang1 25 )(setq lang2 472))) (if (= DN1 "25")(progn(setq dugo 250 )(setq lang1 25 )(setq lang2 480))) (if (= DN1 "32")(progn(setq dugo 250 )(setq lang1 25 )(setq lang2 481))) (if (= DN1 "40")(progn(setq dugo 250 )(setq lang1 25 )(setq lang2 487))) (if (= DN1 "50")(progn(setq dugo 250 )(setq lang1 50 )(setq lang2 504))) (if (= DN1 "65")(progn(setq dugo 250 )(setq lang1 50 )(setq lang2 531))) (if (= DN1 "80")(progn(setq dugo 250 )(setq lang1 50 )(setq lang2 547))) (if (= DN1 "100")(progn(setq dugo 250 )(setq lang1 50 )(setq lang2 566))) (if (= DN1 "125")(progn(setq dugo 300 )(setq lang1 50 )(setq lang2 590))) (if (= DN1 "150")(progn(setq dugo 300 )(setq lang1 50 )(setq lang2 650))) (setq startpkt (getpoint "\nEinfügepunkt wählen: ")) (setq xstart (car startpkt)) (setq ystart (car (cdr startpkt))) (setq zstart (car (cddr startpkt))) (setq X1 xstart) (setq Y1 ystart) (setq X2 xstart) (setq Y2 ystart) (setq Z2 (+ zstart (- lang2 224))) (setq X3 xstart) (setq Y3 ystart) (setq Z3 (+ zstart (- lang2 124))) (setq X4 xstart) (setq Y4 ystart) (setq Z4 (+ zstart lang2)) (setq X5 (+ xstart (* dugo 0.5 ))) (setq Y5 ystart) (setq Z5 (+ zstart lang2)) (setq X6 (+ xstart (* dugo 0.5 ))) (setq Y6 ystart) (setq Z6 (+ zstart (- lang2 124))) (setq p1 (list X1 Y1 zstart)) (setq p2 (list X2 Y2 Z2)) (setq p3 (list X3 Y3 Z3)) (setq p4 (list X4 Y4 Z4)) (setq p5 (list X5 Y5 Z5)) (setq p6 (list X6 Y6 Z6)) (command "_.cylinder" p1 (/ lang1 2.0) p2 "")(setq e1 (entlast)) (command "_.cylinder" p2 lang1 p3 "")(setq e2 (entlast)) (command "_.cylinder" p3 (* dugo 0.5) p4 "")(setq e3 (entlast)) (command "ABRUNDKANTE" "r" "30" p5 "" "" ) (command "ABRUNDKANTE" p6 "" "") (command "_union" e1 e2 e3 "") (setvar "OSNAPCOORD" OldOsnapCoord) (setvar "CMDECHO" 1) (princ) ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jürgen Scheeren Mitglied Energieanlagen Konstrukteur , CAD-Administrator
Beiträge: 262 Registriert: 03.04.2003 Autocad MEP 2016 win7x64bit
|
erstellt am: 15. Jun. 2016 14:11 <-- editieren / zitieren --> Unities abgeben:
|
cadwomen Ehrenmitglied V.I.P. h.c. Mädchen für fast alles
Beiträge: 3067 Registriert: 26.08.2002 ACAD R11 - 2018.1.2 (Plant3D) AVIS ACAD LT 2013- 2020 ZWCAD 2015 Versuch "nun ja" [s]History P3D 2012/(13) SP und Hotfix([/s]<P> Windows 10 / 64 Bit Xeon CPU 3.5GHz 16GB Ram NVIDIA Quadro P2000 3x Dell TV100 88P Monitore
|
erstellt am: 15. Jun. 2016 14:24 <-- editieren / zitieren --> Unities abgeben: Nur für Jürgen Scheeren
Hy wenn ich da krame denke ich Holger meint deine Auswahl könnte ins leere laufen ich hatte das bei mehreren Makros mit einem Zoom / nicht zoom steht und fällt deine Objektwahl cu cw ------------------ Also ich finde Unities gut ... und andere sicher auch ------------------------------------------------ cadwomen™ Plant ist wie Öl suchen, je tiefer man bohrt desto mehr kommt ans Tageslicht Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jürgen Scheeren Mitglied Energieanlagen Konstrukteur , CAD-Administrator
Beiträge: 262 Registriert: 03.04.2003 Autocad MEP 2016 win7x64bit
|
erstellt am: 15. Jun. 2016 14:29 <-- editieren / zitieren --> Unities abgeben:
|
Jürgen Scheeren Mitglied Energieanlagen Konstrukteur , CAD-Administrator
Beiträge: 262 Registriert: 03.04.2003 Autocad MEP 2016 win7x64bit
|
erstellt am: 15. Jun. 2016 14:52 <-- editieren / zitieren --> Unities abgeben:
Hab jetzt einfach so gemacht..... (command "_.zoom" "_w" p1 p5 "") (command "_.zoom" "_s" "0.5xp") (command "_.cylinder" p1 (/ lang1 2.0) p2 "")(setq e1 (entlast)) (command "_.cylinder" p2 lang1 p3 "")(setq e2 (entlast)) (command "_.cylinder" p3 (* dugo 0.5) p4 "")(setq e3 (entlast)) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 15. Jun. 2016 14:54 <-- editieren / zitieren --> Unities abgeben: Nur für Jürgen Scheeren
Zeichne mal eine Linie von 0,0 nach 10,10 danach einen Kreis, Mittelpunkt auf 5,5 und Radius 1 TEST: E Befehl LISTE Objektwahl beantworten mit 5,5 Objektwahl mit Enter beenden Nachsehen was gewählt wurde.. Nun Zoome mal "raus", also alles gaaaanz klein Zoomen, bis es nicht mehr geht, wiederhole den Test.. schau was gewählt wurde. Die AutoCAD-Objektwahl ist in vielen Punkten Ansichtsabhängig, der Test zeigt nur EIN Beispiel. PS: Die Zeilen sind nun schöner zu lesen, übersichtlicher, weniger Verwirrend, aber OSMODE wird nicht zurückgesetzt und die drei Zylinder-Commands sind noch immer nicht sauber, tippe es einmal in die Befehlszeile und lese nach jeder Eingabe im F2 mit. Mein ZylinderBefehl benötigt das Zentrum/Anfang, den Radius und die Höhe, mehr möchte Acad nicht?
------------------ CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jürgen Scheeren Mitglied Energieanlagen Konstrukteur , CAD-Administrator
Beiträge: 262 Registriert: 03.04.2003 Autocad MEP 2016 win7x64bit
|
erstellt am: 15. Jun. 2016 16:56 <-- editieren / zitieren --> Unities abgeben:
Ja supi, vielen Dank Holger.....das ganze hat mich wirklich weiter gebracht Man lernt doch nie aus..... Werde mich wohl noch eingehender damit beschäftigen müssen. Dir noch einen schünen Feierabend Gruß Jürgen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |