| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt, eine Pressemitteilung
|
Autor
|
Thema: versetzen (1553 mal gelesen)
|
judith Mitglied
Beiträge: 10 Registriert: 03.01.2005
|
erstellt am: 03. Jan. 2005 09:48 <-- editieren / zitieren --> Unities abgeben:
hallo, könnte mir jemand bitte das lisp erweitern, so daß man auch die möglichkeit hätte per tastatur.... bei der anfrage: "(setq stp1 (getpoint "Auf welche Seite."))" für die vertikalen linien "r" "l" und die horizontalen linien "o" "u" eingeben könnte?? danke, lg judith
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2494 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 03. Jan. 2005 10:17 <-- editieren / zitieren --> Unities abgeben: Nur für judith
Hi, was bedeutet "horizontal" ,"vertikal"? Zu was? Zum aktuellen BKS? Zum WKS? Zum Bildschirmrand? Das ist doch eine Frage der Relation. Nebenbei habe ich mir erlaubt Deinen Code mal ein wenig zu optimieren, jetzt ist das Limit von zwanzig Operationen aufgehoben. Code:
(defun C:MV (/ OFFSETVAL STP1 X1 X2) (if (setq X1 (entsel "\nObjekt zum Versetzen wählen: ")) (if (setq STP1 (getpoint "\nSeite wählen auf die versetzt werden soll: ") ) (progn (while (setq X2 (getdist "\nAbstand eingeben, um den versetzt werden soll: " ) ) (if (not OFFSETVAL) (setq OFFSETVAL X2) (setq OFFSETVAL (+ OFFSETVAL X2)) ) (command "_.offset" OFFSETVAL X1 STP1 "") ) ) (princ "\nKeine Seite gewählt, Funktionsende.") ) (princ "\nKein Objekt gewählt, Funktionsende.") ) (princ) )
... ------------------ Ciao, Marc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
judith Mitglied
Beiträge: 10 Registriert: 03.01.2005
|
erstellt am: 03. Jan. 2005 10:31 <-- editieren / zitieren --> Unities abgeben:
salü marc, danke für deine antwort!! sorry, daß ich mich nicht deutlich ausgedrückt habe. ich meinte im "wks" und zum bildschirmrand gesehen. "Nebenbei habe ich mir erlaubt Deinen Code mal ein wenig zu optimieren...." ;-) ist natürlich nicht meiner....ich bin ein ziemlicher neuling aber interessiert an lisp. lg judith Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2494 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 03. Jan. 2005 10:36 <-- editieren / zitieren --> Unities abgeben: Nur für judith
Hi, hast Dich immer noch nicht deutlich ausgedrückt... Zitat: "ich meinte im "wks" und zum bildschirmrand gesehen" Das eine bedingt ja nicht das andere. Ich kann ja durchaus im WKS sein OHNE das dieses parallel zum Bildschirmrand ist. Warum willst Du denn unbedingt mit den Optionen "r", "l" und "o", "u" arbeiten? Wo ist der Vorteil gegenüber dem Picken eines Punktes? ------------------ Ciao, Marc [Diese Nachricht wurde von marc.scherer am 03. Jan. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
judith Mitglied
Beiträge: 10 Registriert: 03.01.2005
|
erstellt am: 03. Jan. 2005 10:49 <-- editieren / zitieren --> Unities abgeben:
"Das eine bedingt ja nicht das andere. Ich kann ja durchaus im WKS sein OHNE das dieses parallel zum Bildschirmrand ist."...ich denke da einfach nur an eine senkrechte und waagrechte linie zum bildschirmrand. aufjedenfall kann ich eine linie komplett mit der tastatur eingeben und markieren...ruf den befehl auf um sie zu versetzen... und mich nervt es eigentlich dann, daß ich auf das objekt picken muß um zu sagen auf welche seite ich es haben möchte. voila, judith Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bu Mitglied die Frage habe ich mir auch schon gestellt
Beiträge: 265 Registriert: 29.06.2004 AutoCAD 2010 Mechanical
|
erstellt am: 03. Jan. 2005 11:05 <-- editieren / zitieren --> Unities abgeben: Nur für judith
Hallo Leute, dies wäre mein vorschlag: (die optimierung habe ich dankend mitaufgenommen) das programm startet nach dem laden automatisch. wenn das gewählte objekt keine line ist oder eine linie ist aber weder senkrecht noch waagrecht funktioniert das programm wie gehabt. (defun C:MV (/ OFFSETVAL STP1 X1 X2 Richtung) (if (setq X1 (entsel "\nObjekt zum Versetzen wählen: ")) (if (if (and (= "LINE" (cdr (assoc 0 (entget (car x1))))) (or (= (car (cdr (assoc 10 (entget (car x1))))) (car (cdr (assoc 11 (entget (car x1))))) ) (= (nth 1 (cdr (assoc 10 (entget (car x1))))) (nth 1 (cdr (assoc 11 (entget (car x1))))) ) ) ;or ) ;and (progn (if (= (car (cdr (assoc 10 (entget (car x1))))) (car (cdr (assoc 11 (entget (car x1))))) ) (progn (initget "R r L l") (setq Richtung (getkword "\nnach rechts oder links versetzen (r/l) <r> ?" ) ) (if richtung nil (setq richtung "r") ) (if (or (= Richtung "r") (= Richtung "R")) (setq stp1 (polar (cdr (assoc 10 (entget (car x1)))) 0 10) ) (setq stp1 (polar (cdr (assoc 10 (entget (car x1)))) pi 10) ) ) ;if ) ;progn ) (if (= (nth 1 (cdr (assoc 10 (entget (car x1))))) (nth 1 (cdr (assoc 11 (entget (car x1))))) ) (progn (initget "o O u U") (setq Richtung (getkword "\nnach oben oder unten versetzen (o/u) <o> ?" ) ) (if richtung nil (setq richtung "o") ) (if (or (= Richtung "o") (= Richtung "O")) (setq stp1 (polar (cdr (assoc 10 (entget (car x1)))) (* pi 0.5) 10 ) ) (setq stp1 (polar (cdr (assoc 10 (entget (car x1)))) (* pi 1.5) 10 ) ) ) ;if ) ;progn ) ;if (=(car(cdr(assoc 10 (entget (car x1)))))(car(cdr(assoc 11 (entget (car x1)))))) ) ;progn (progn (setq stp1 (getpoint "\nSeite wählen auf die versetzt werden soll: " ) ) ) ;progn ) (progn (while (setq X2 (getdist "\nAbstand eingeben, um den versetzt werden soll: " ) ) (if (not OFFSETVAL) (setq OFFSETVAL X2) (setq OFFSETVAL (+ OFFSETVAL X2)) ) (command "_.offset" OFFSETVAL X1 STP1 "") ) ) (princ "\nKeine Seite gewählt, Funktionsende.") ) (princ "\nKein Objekt gewählt, Funktionsende.") ) (princ) ) (c:mv) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2494 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 03. Jan. 2005 11:31 <-- editieren / zitieren --> Unities abgeben: Nur für judith
@bu: Manöverkritik? 1. Warum: "(initget "R r L l")" Es tut doch auch (initget "r l") Initget läßt sowohl groß- als auch kleinschreibung zu. Mit (strcase RICHTUNG) kannst Du Dir später auch das: "(or (= RICHTUNG "r") (= RICHTUNG "R"))" sparen 2. Bei Anfragen würde ich grundsätzlich einiges anders machen. Nicht: "(getkword "\nnach rechts oder links versetzen (r/l) <r> ?")" sondern: (getkword "\nnach rechts oder links versetzen [Rechts/Links] <R> ?") a) Statt runde eckige Klammern. Erstens entspricht das dem AutoCAD Dialog-Stil. Zweitens kann man dann über einen Rechtsklick zu der Useranfrage ein Kontextmenü mit den in eckigen Klammern befindlichen Optionen aufrufen... b) Ganze Wörter als Optionen anbieten, wobei der "Trigger" der jeweiligen Option der (die) Großbuchstaben ist (sind). Auch das entspricht dem Acad Standard Dialog-Stil, außerdem ist es IMHO deutlich schicker und besser verständlich. ------------------ Ciao, Marc [Diese Nachricht wurde von marc.scherer am 03. Jan. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
judith Mitglied
Beiträge: 10 Registriert: 03.01.2005
|
erstellt am: 03. Jan. 2005 11:35 <-- editieren / zitieren --> Unities abgeben:
|
bu Mitglied die Frage habe ich mir auch schon gestellt
Beiträge: 265 Registriert: 29.06.2004 AutoCAD 2010 Mechanical
|
erstellt am: 03. Jan. 2005 11:47 <-- editieren / zitieren --> Unities abgeben: Nur für judith
hallo marc, deine manöverkritik is absolut angebracht und ich werde versuchen deine korrekturen bei weiteren programmen zu berücksichtigen. doch wie du am programmcode sehen kannst bin ich gedanklich mehr benutzerorientiert als ein guter programmierer. dafür wusste ich nach der zweiten zeile von judith wo ihr problem liegt und in welche richtung sie denkt. mein täglich brot, mehr oder minder kuriose wünsche von benutzern zu verstehen, dann zu erfüllen und daraus resultierende fehler abzufangen. Gruss bu dann wünsch ich noch allen cad-mitgliedern ein super gutes neues jahr Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bu Mitglied die Frage habe ich mir auch schon gestellt
Beiträge: 265 Registriert: 29.06.2004 AutoCAD 2010 Mechanical
|
erstellt am: 03. Jan. 2005 11:50 <-- editieren / zitieren --> Unities abgeben: Nur für judith
|
judith Mitglied
Beiträge: 10 Registriert: 03.01.2005
|
erstellt am: 03. Jan. 2005 11:55 <-- editieren / zitieren --> Unities abgeben:
|
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2494 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 03. Jan. 2005 12:01 <-- editieren / zitieren --> Unities abgeben: Nur für judith
Hi bu, eben weil ich genauso benutzerorientiert denke, kam meine Manöverkritik. IMHO sollten sich selbst definierte Funktionen unter Acad GENAUSO verhalten und aussehen wie Standard-Acad (nur ohne die Fehler *grins*). Auch wenn Dein Ansatz "mehr oder minder kuriose wünsche von benutzern zu verstehen, dann zu erfüllen und daraus resultierende fehler abzufangen" löblich ist... Ich bin der Meinung ab und an sollte man den Usern auch mal sagen können was für'n Schwachsinn sie sich wünschen. Manchmal erübrigt sich der ein oder andere Wunsch, wenn man einfach eine sinnvolle Vorgehensweise aufzeigt. ------------------ Ciao, Marc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bu Mitglied die Frage habe ich mir auch schon gestellt
Beiträge: 265 Registriert: 29.06.2004 AutoCAD 2010 Mechanical
|
erstellt am: 03. Jan. 2005 13:06 <-- editieren / zitieren --> Unities abgeben: Nur für judith
hallo judith, kleiner fehler, grosse auswirkung. doch nun müsste es funktionieren. gruss (defun C:MV (/ OFFSETVAL STP1 X1 X2 Richtung) (if (setq X1 (entsel "\nObjekt zum Versetzen wählen: ")) (if (if (and (= "LINE" (cdr (assoc 0 (entget (car x1))))) (or (= (car (cdr (assoc 10 (entget (car x1))))) (car (cdr (assoc 11 (entget (car x1))))) ) (= (nth 1 (cdr (assoc 10 (entget (car x1))))) (nth 1 (cdr (assoc 11 (entget (car x1))))) ) ) ;or ) ;and (progn (if (= (nth 1 (cdr (assoc 10 (entget (car x1)))))(nth 1 (cdr (assoc 11 (entget (car x1)))))) (progn (initget "o u") (setq Richtung (getkword "\nnach oben oder unten versetzen [Oben/Unten] <O> ?")) (if richtung nil (setq richtung "o")) (if (= (strcase RICHTUNG) "O") (setq stp1 (polar (cdr (assoc 10 (entget (car x1))))(* pi 0.5)10)) (setq stp1 (polar (cdr (assoc 10 (entget (car x1))))(* pi 1.5)10)) ) ;if ) ;progn (progn (initget "r l") (setq Richtung (getkword "\nnach rechts oder links versetzen [Rechts/Links] <R> ?")) (if richtung nil (setq richtung "r")) (if (= (strcase RICHTUNG) "R") (setq stp1 (polar (cdr (assoc 10 (entget (car x1)))) 0 10)) (setq stp1 (polar (cdr (assoc 10 (entget (car x1)))) pi 10)) ) ;if ) ;progn ) ) ;progn (progn (setq stp1 (getpoint "\nSeite wählen auf die versetzt werden soll: ")) ) ;progn ) (progn (while (setq X2 (getdist "\nAbstand eingeben, um den versetzt werden soll: ")) (if (not OFFSETVAL) (setq OFFSETVAL X2) (setq OFFSETVAL (+ OFFSETVAL X2)) ) (command "_.offset" OFFSETVAL X1 STP1 "") ) ) (princ "\nKeine Seite gewählt, Funktionsende.") ) (princ "\nKein Objekt gewählt, Funktionsende.") ) (princ) ) (c:mv)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
judith Mitglied
Beiträge: 10 Registriert: 03.01.2005
|
erstellt am: 03. Jan. 2005 13:26 <-- editieren / zitieren --> Unities abgeben:
danke bu, für deinen einsatz und die unities sind schon abgeschickt....ich denke lisp werd ich doch nicht dalernen... lg und ein gutes neues jahr judith @marc, danke auch dir nochmal marc, bin aber doch etwas verunsichert über deinen letzten beitrag....du meinst das ist sinnlos?? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2494 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 03. Jan. 2005 13:37 <-- editieren / zitieren --> Unities abgeben: Nur für judith
Hi Judith, nein, nein. Es ging nur so um's allgemeine. Ab und an kommt mal einer und will ganz kuriose Sachen. Dann stellt sich meistens heraus, dass er ein Problem völlig falsch angeht. Der Kommentar war nicht zu Deinem speziellen Problem. ------------------ Ciao, Marc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
judith Mitglied
Beiträge: 10 Registriert: 03.01.2005
|
erstellt am: 03. Jan. 2005 13:48 <-- editieren / zitieren --> Unities abgeben:
|
flaschenpost Mitglied Architekt
Beiträge: 497 Registriert: 29.09.2004 ADT 2004 / Windows XP
|
erstellt am: 03. Jan. 2005 15:32 <-- editieren / zitieren --> Unities abgeben: Nur für judith
Hallo Marc, alle Forumsmitglieder sind dankbar über konstruktive Hinweise. Schließlich profitieren wir alle davon. Doch einen Userwunsch, der Schwachsinn wäre, habe ich im Forum noch nicht entdeckt. Wären die Werkzeuge der AutoCAD-Familie ausgereifter, dann gäbe es eine ganze Reihe von Wünschen gar nicht. Die meisten Bauherren wären schließlich auch nicht begeistert, wenn ihre Vorhaben nur als Rohbau + Selbstbausatz realisiert würden. Hallo Bu und Judith, mit einer kleinen Veränderung kann man den letzten Abstand durch Enter übernehmen, falls man möchte. Gruß Carsten (defun C:MV (/ OFFSETVAL STP1 X1 X2 Richtung abstand-letzter) (if (setq X1 (entsel "\nObjekt zum Versetzen wählen: ")) (if (if (and (= "LINE" (cdr (assoc 0 (entget (car x1))))) (or (= (car (cdr (assoc 10 (entget (car x1))))) (car (cdr (assoc 11 (entget (car x1))))) ) (= (nth 1 (cdr (assoc 10 (entget (car x1))))) (nth 1 (cdr (assoc 11 (entget (car x1))))) ) ) ;or ) ;and (progn (if (= (nth 1 (cdr (assoc 10 (entget (car x1)))))(nth 1 (cdr (assoc 11 (entget (car x1)))))) (progn (initget "o u") (setq Richtung (getkword "\nnach oben oder unten versetzen [Oben/Unten] <O> ?")) (if richtung nil (setq richtung "o")) (if (= (strcase RICHTUNG) "O") (setq stp1 (polar (cdr (assoc 10 (entget (car x1))))(* pi 0.5)10)) (setq stp1 (polar (cdr (assoc 10 (entget (car x1))))(* pi 1.5)10)) ) ;if ) ;progn (progn (initget "r l") (setq Richtung (getkword "\nnach rechts oder links versetzen [Rechts/Links] <R> ?")) (if richtung nil (setq richtung "r")) (if (= (strcase RICHTUNG) "R") (setq stp1 (polar (cdr (assoc 10 (entget (car x1)))) 0 10)) (setq stp1 (polar (cdr (assoc 10 (entget (car x1)))) pi 10)) ) ;if ) ;progn ) ) ;progn (progn (setq stp1 (getpoint "\nSeite wählen auf die versetzt werden soll: ")) ) ;progn ) (progn (if (= abstand nil)(setq abstand 1)) (while (if (= (setq abstand-letzter (getdist (strcat "\nVersetz-Abstand eingeben: <" (rtos abstand 2 3) "> :")) ) nil) (setq X2 abstand) (setq X2 abstand-letzter abstand abstand-letzter) ) ;(setq X2 (getdist "\nAbstand eingeben, um den versetzt werden soll: ")) (if (not OFFSETVAL) (setq OFFSETVAL X2) (setq OFFSETVAL (+ OFFSETVAL X2)) ) (command "_.offset" OFFSETVAL X1 STP1 "") ) ) (princ "\nKeine Seite gewählt, Funktionsende.") ) (princ "\nKein Objekt gewählt, Funktionsende.") ) (princ) ) (c:mv) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
marc.scherer Ehrenmitglied V.I.P. h.c. CAD-Administrator
Beiträge: 2494 Registriert: 02.11.2001 Windows 10 64bit AutoCAD Architecture 2018/2019 (deu/eng) AEC-Collection 2019 (Revit und Zeugs) Wenn sich's nicht vermeiden läßt: D-A-CH Erweiterung (mies implementierter Schrott)
|
erstellt am: 03. Jan. 2005 15:48 <-- editieren / zitieren --> Unities abgeben: Nur für judith
Hi Flaschenpost, na, wenn DIR noch nie ein Userwunsch angetragen wurde der kompletter Schwachsinn war... Herzlichen Glückwunsch. Deine User scheinen nicht allzu kreativ zu sein *grins*, oder machst Du gar keine User-Betreuung? Wenn ich mich recht entsinne gab' es hier im Forum aber auch schon den ein oder anderen schwachsinnigen Wunsch. (Ist ja auch alles gar nicht böse gemeint...) ------------------ Ciao, Marc [Diese Nachricht wurde von marc.scherer am 03. Jan. 2005 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
judith Mitglied
Beiträge: 10 Registriert: 03.01.2005
|
erstellt am: 03. Jan. 2005 16:50 <-- editieren / zitieren --> Unities abgeben:
wouw!!! es gibt nur noch ein kleines problem. manchmal setzt es mir die linie nach oben statt nach unten und genauso nach rechts statt nach links. (umgekehrt rum ist es noch nicht vorgekommen) das passiert nicht in einer kompletten neuen zeichnung, sprich: erst nach einer öfteren anwendung inerhalb einer zeichnung. lg ju natürlich auch 10 unities für dich ;-) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
judith Mitglied
Beiträge: 10 Registriert: 03.01.2005
|
erstellt am: 03. Jan. 2005 21:56 <-- editieren / zitieren --> Unities abgeben:
|
flaschenpost Mitglied Architekt
Beiträge: 497 Registriert: 29.09.2004 ADT 2004 / Windows XP
|
erstellt am: 03. Jan. 2005 23:17 <-- editieren / zitieren --> Unities abgeben: Nur für judith
Hallo Judith, der Fehler ist bei mir noch nicht aufgetreten. Du mußt mal ausprobieren, woran es liegt - vielleicht wurde das BKS gedreht. Mache Dir einfach mal den Unterschied zwischen Versetzen und Kopieren klar. Zeichne eine mehrfach abgewinkelte Polylinie und probiere beide Befehle aus. Für mehrfaches Kopieren mit gleichen Abständen Befehl reihe verwenden. Gruß Carsten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |