| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Drehen Syntax (202 mal gelesen)
|
Code Kian Mitglied Technischer Systemplaner (in Ausbildung)
 Beiträge: 6 Registriert: 18.09.2023 Windows 64 bit Visual Studio Code Autocad 3d 2024
|
erstellt am: 18. Sep. 2023 13:15 <-- editieren / zitieren --> Unities abgeben:         
Hallo ihr lieben, Also bin noch neu bei Autolisp und habe versucht eine Funktion zu schreiben, aber beim Dreh Befehl läuft wohl was schief und chatgpt ist einfach zu blöd dafür... hier mein code: ;versuch den rahmendreher zu programmieren (defun c:RahmDreh (/) (setq p1 (getpoint "\nWähle das Ende der tiefsten Unterkante")) (setq p2 (getpoint "\nWähle anderes Ende der unterkante")) (setq lin1 (command "linie" p1 p2 "")) ;die Unterkante wird zwischenzeitlich als Linie kopiert (setq lin1 (entsel "\nklick linie 1 an!")) (setq koord1 (nth 1 p1)) ;die y koordinate von p1 soll hier gespeichert werden (setq koord2 (nth 0 p2)) ; die x koordinate von p2 wird gespeichert (setq lin2 (command "linie" p1 (list koord2 koord1) "")) (setq lin2 (entsel "\nklick linie 2 an!")) (princ lin1) ;zur kontrolle ob die linien korrekt aufgenommen wurden (princ lin2) (setq Winkel (angle p1 p2)) (princ winkel) (setq winkel (/ (* Winkel 180) pi)) ; Ändere den Winkel um 180 Grad (princ winkel) ;kontrolle ob der winkel gespeichert ist (command ".-drehen" (list (car(entsel "\nWähle den Rahmen des Ansichtsfensters")) p1 winkel "")) ) Ich versuche ein Objekt in einem Ansichtsfenster im Layoutbereich parallel zur papierkante zu drehen ( kommt daher dass wir solaranlagen planen die normalerweise richtung norden zeigen aber in manchen Plänen zur benutzerfreundlichen übersicht parallel zur papierkante sein sollen) bis zum command drehen funktioniert auch alles aber beim drehen selbst ist wohl ein falsches argument. sieht einer von euch was mein fehler ist? liebe grüße Kian Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
       

 Beiträge: 21795 Registriert: 03.06.2002 Alles
|
erstellt am: 18. Sep. 2023 15:38 <-- editieren / zitieren --> Unities abgeben:          Nur für Code Kian
Hi, ich würde damit anfangen einen existierenden Befehl zu starten, denn das was du in deinem (command-Statement stehen hast, das ist kein mir bekannter englischer(_) Befehl, aber auch im Deutschen gibt es -Drehen nicht. - dann ist das LIST sicher auch überflüsstig, wie auch die Leereingabe am Ende Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
       

 Beiträge: 21795 Registriert: 03.06.2002 Alles
|
erstellt am: 18. Sep. 2023 15:42 <-- editieren / zitieren --> Unities abgeben:          Nur für Code Kian
Der Syntax ergibt sich durch den Befehl selbst, also einfach anfangen in der Befehlzeile die Sequenz selbstz zu erarbeiten: stelle cmdecho auf 1 damit man im Textfesnter die Rückgabe sehen kann Befehl: (command "drehen")<enter> Was möchte der Befehl wissen? [F2] Befehl: (command "drehen" (entsel))<enter> Was möchte der Befehl wissen? [F2] die Objektwahl beenden, wie gewohnt durch eine Leereingabe, also NICHTS gefolgt von einem Enter, was dann im (command so aussieht: "" usw.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Code Kian Mitglied Technischer Systemplaner (in Ausbildung)
 Beiträge: 6 Registriert: 18.09.2023 Windows 64 bit Visual Studio Code Autocad 3d 2024
|
erstellt am: 19. Sep. 2023 10:01 <-- editieren / zitieren --> Unities abgeben:         
Hallo erstmal danke für die antwort - mein Acad ist auf deutsch da ist drehen das pendant zu rotate - die befehle funktionieren aber bei mir nur wenn ich sie auf deutsch eintippe und den Bindestrich (-) davor hab ich so verstanden, dass man den vor commands setzt wenn man jeden einzelnen schritt mit daten füllen will also : (command "drehen") = ich werde bei acad nach den einzelnen schritten abgefragt (objekt basispunkt drehwinkel) und bei -drehen kann ich gleich schreiben was gemacht werden soll also : (command "-drehen" entsel Basispunkt1 90(grad)) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Archäologie Bubi Mitglied Archäologische Funddokumentation

 Beiträge: 46 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 Metashape Professional
|
erstellt am: 19. Sep. 2023 10:37 <-- editieren / zitieren --> Unities abgeben:          Nur für Code Kian
Hallo Code Kian Das "-" vor einem Befehl ist nur, wenn du ein Fenster unterdrücken willst. Der Befehl "Drehen" hat aber kein Fenster, ergo auch keinen Befehl "-Drehen". Wenn du die englischen Befehle eingeben willst, dann musst du (wie von cadffm schon angedeutet) "_" als Präfix angeben. Also z.B. "_Rotate". Mann kann das, wenn der Befehl existiert, natürlich auch kombinieren. Z.B. (command "_-insert" etc.). Es gibt als Präfix auch noch einen Punkt. Mit dem wird dann immer der AutoCAD-Originale Befehl (falls mal einer neu definiert wurde) verwendet. Z.B. (command "._-insert" etc.) Wenn du Manuell "-Drehen" eingibst, schlägt dir ACAD wahrscheinlich einfach den normalen "Drehen"-Befehl vor, weshalb es da dann klappt. Wenn du aber "-Drehen" voll eingibst und startest kommt wieder "Unbekannter Befehl". ------------------
Bubi spiele, Bubi glücklich! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Code Kian Mitglied Technischer Systemplaner (in Ausbildung)
 Beiträge: 6 Registriert: 18.09.2023 Windows 64 bit Visual Studio Code Autocad 3d 2024
|
erstellt am: 19. Sep. 2023 10:41 <-- editieren / zitieren --> Unities abgeben:         
Hallo und danke für die schnelle antwort! Also die herangehensweise ist super und hilft mir ungemein den syntax zu verstehen  aber.... wenn ich es mache wie vorgeschlagen (command "drehen" entsel usw...) dann werden alle argumente nach drehen ignoriert also es passiert das gleiche wie wenn ich einfach (command "drehen") eingebe - basispunkt und drehfaktor werden einfach ignoriert. um diese in den befehl aufzunehmen dachte ich bräuchte man den bindestrich "-" allerdings ist (command "-drehen") ein unbekannter befehl. Bin am verzweifeln habe schon dutzend varianten ausprobiert aber komme nie zu einem zufriedenstellendem Ergebnis. Liebe Grüße Kian Zitat: Original erstellt von cadffm: Der Syntax ergibt sich durch den Befehl selbst, also einfach anfangen in der Befehlzeile die Sequenz selbstz zu erarbeiten:stelle cmdecho auf 1 damit man im Textfesnter die Rückgabe sehen kann Befehl: (command "drehen")<enter> Was möchte der Befehl wissen? [F2] Befehl: (command "drehen" (entsel))<enter> Was möchte der Befehl wissen? [F2] die Objektwahl beenden, wie gewohnt durch eine Leereingabe, also NICHTS gefolgt von einem Enter, was dann im (command so aussieht: "" usw.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Code Kian Mitglied Technischer Systemplaner (in Ausbildung)
 Beiträge: 6 Registriert: 18.09.2023 Windows 64 bit Visual Studio Code Autocad 3d 2024
|
erstellt am: 19. Sep. 2023 10:51 <-- editieren / zitieren --> Unities abgeben:         
Hallo Archäologie Bubi Auch dir danke für die Antwort. ehrlich gesagt weiß ich nicht wirklich was mit einem fenster gemeint ist, ist glaube ich aber auch nicht so wichtig für dieses problem. wie muss ich es denn schreiben damit der drehen befehl mit daten wie basispunkt und drehwinkel gefüttert wird ohne dass ich sie manuell bei acad eingeben muss ? wenn ich (command "drehen"/command "_rotate" entsel 123.123 90) schreibe wird nur bis zum drehen evaluiert der basispunkt und der drehwinkel wird bei acad erfragt und soll manuell eingegeben werden. Danke im Vorraus und liebste Grüße Kian
Zitat: Original erstellt von Archäologie Bubi: Hallo Code KianDas "-" vor einem Befehl ist nur, wenn du ein Fenster unterdrücken willst. Der Befehl "Drehen" hat aber kein Fenster, ergo auch keinen Befehl "-Drehen". Wenn du die englischen Befehle eingeben willst, dann musst du (wie von cadffm schon angedeutet) "_" als Präfix angeben. Also z.B. "_Rotate". Mann kann das, wenn der Befehl existiert, natürlich auch kombinieren. Z.B. (command "_-insert" etc.). Es gibt als Präfix auch noch einen Punkt. Mit dem wird dann immer der AutoCAD-Originale Befehl (falls mal einer neu definiert wurde) verwendet. Z.B. (command "._-insert" etc.) Wenn du Manuell "-Drehen" eingibst, schlägt dir ACAD wahrscheinlich einfach den normalen "Drehen"-Befehl vor, weshalb es da dann klappt. Wenn du aber "-Drehen" voll eingibst und startest kommt wieder "Unbekannter Befehl".
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Code Kian Mitglied Technischer Systemplaner (in Ausbildung)
 Beiträge: 6 Registriert: 18.09.2023 Windows 64 bit Visual Studio Code Autocad 3d 2024
|
erstellt am: 19. Sep. 2023 10:57 <-- editieren / zitieren --> Unities abgeben:         
Hab hier ausversehen nur einen wert als basispunkt angegeben in meinem programm ist es aber ein korrekter punkt aus x y und z wert Zitat: Original erstellt von Code Kian: Hallo Archäologie Bubi Auch dir danke für die Antwort. ehrlich gesagt weiß ich nicht wirklich was mit einem fenster gemeint ist, ist glaube ich aber auch nicht so wichtig für dieses problem.wie muss ich es denn schreiben damit der drehen befehl mit daten wie basispunkt und drehwinkel gefüttert wird ohne dass ich sie manuell bei acad eingeben muss ? wenn ich (command "drehen"/command "_rotate" entsel 123.123 90) schreibe wird nur bis zum drehen evaluiert der basispunkt und der drehwinkel wird bei acad erfragt und soll manuell eingegeben werden. Danke im Vorraus und liebste Grüße Kian
[b][/b] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADwiesel Moderator CAD4FM UG
    

 Beiträge: 1977 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 19. Sep. 2023 11:02 <-- editieren / zitieren --> Unities abgeben:          Nur für Code Kian
|
Code Kian Mitglied Technischer Systemplaner (in Ausbildung)
 Beiträge: 6 Registriert: 18.09.2023 Windows 64 bit Visual Studio Code Autocad 3d 2024
|
erstellt am: 19. Sep. 2023 11:35 <-- editieren / zitieren --> Unities abgeben:         
<3<3<3 wenn ich könnte würde ich jetzt mein unity konto auf dich übertragen nur so zu verständnis - ich muss dem ganzen ein car geben weil drehen nur den namen des objekts haben will und entsel mir alle anderen daten mitliefert womit (command drehen) nichts anfangen kann ? Herzlichstes dankeschön kian <3 Zitat: Original erstellt von CADwiesel: Das wird ja so Morgen noch nicht fertig Code: (command"_rotate"(car(entsel)) "" p1 winkel)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
       

 Beiträge: 21795 Registriert: 03.06.2002 Alles
|
erstellt am: 21. Sep. 2023 08:33 <-- editieren / zitieren --> Unities abgeben:          Nur für Code Kian
Zitat: Original erstellt von Code Kian: nur so zu verständnis - ich muss dem ganzen ein car geben weil drehen nur den namen des objekts haben will und entsel mir alle anderen daten mitliefert womit (command drehen) nichts anfangen kann ?
Die Überlegung ist zwar perfekt, jedoch im Falle von Drehen* nicht zutreffend, das hättest du schneller wie den Post schreiben testen können - lasse einfach mal das CAR weg (command "_.ROTATE" (entsel) "" (getvar 'lastpoint) -45) *Mir ist nicht bekannt ob alle Acad-Befehle mit der Entsel-Rückgabe (ohne Zugriff auf das erste Listenelement / CAR) umgehen können, aus diesem Grund (und demselben Gedankengang den du zu car-entsel hattest) setze ich einfach immer das CAR ein, egal ob nötig oder nicht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
  
 Beiträge: 872 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 21. Sep. 2023 10:15 <-- editieren / zitieren --> Unities abgeben:          Nur für Code Kian
Zitat: Original erstellt von cadffm:
*Mir ist nicht bekannt ob alle Acad-Befehle mit der Entsel-Rückgabe (ohne Zugriff auf das erste Listenelement / CAR) umgehen können
Das sollten alle Befehle können, bei denen die Angabe eines Klickpunkts relevant ist, also beispielsweise auch bei (command "break" (entsel)) bei dem Du dann nur noch nach dem zweiten Brechpunkt gefragt wirst.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| Systemmanager CAD (m/w/d) | HELLER ist einer der weltweit führenden Hersteller für spanende Werkzeugmaschinen und komplexe Fertigungssysteme. Unsere Kunden überzeugen wir durch innovative Ideen, Präzision und höchste Qualität ? in jedem Bereich. Mit unseren unterschiedlichen Geschäftsfeldern sind wir marktorientiert aufgestellt und bedienen globale Wachstumsmärkte in den verschiedensten Branchen. Zur Verstärkung unseres Teams ... | Anzeige ansehen | Systemadministration, Netzwerkadministration |
|
Bernhard GSD Mitglied
 
 Beiträge: 488 Registriert: 29.08.2002 AutoCAD 2020(Deu); Windows 10 PRO x64(Deu)
|
erstellt am: 21. Sep. 2023 15:31 <-- editieren / zitieren --> Unities abgeben:          Nur für Code Kian
Zitat: Original erstellt von archtools:
...(command "break" (entsel)) bei dem Du dann nur noch nach dem zweiten Brechpunkt gefragt wirst.
Wenn du (command "_break" (entsel)) schreibst, dann läuft es auch bei allen, die hier mitlesen... ------------------ Gruß aus Wien Bernhard Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |