| |
| 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: Befehl Command unterbrechen (1010 mal gelesen)
|
Jonapap Mitglied
Beiträge: 206 Registriert: 18.08.2006
|
erstellt am: 20. Sep. 2006 12:06 <-- editieren / zitieren --> Unities abgeben:
Hallo, Was muss ich angeben damit der Befehl pedit ab der Abfrage für den Fuzzy-Abstand anhält, der Benutzer Fuzzyabstand und Verbindungstyp angeben kann, und anschließend der Befehl automatisch abgeschlossen wird? (command "_.pedit" "_M" ss1 "" "_J" ???) Kann ich da irgendwie "Pause" verwenden? 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: 20. Sep. 2006 12:08 <-- editieren / zitieren --> Unities abgeben: Nur für Jonapap
|
Jonapap Mitglied
Beiträge: 206 Registriert: 18.08.2006
|
erstellt am: 20. Sep. 2006 14:08 <-- editieren / zitieren --> Unities abgeben:
Hallo Marc, ich hatte ja schon folgendes ausprobiert: (Command "_.pedit" "_m" ss "" "_y" "_j" pause "") allerdings bekomme ich dann in der Kommandozeile keinerlei Aufforderung zur Eingabe des Fuzzy-Abstandes. Wenn ich die dynamische Anzeige aktiviert habe, kann ich zwar den Wert eingeben, habe aber keine Chance den Verbindungstyp zu ändern.
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: 20. Sep. 2006 14:19 <-- editieren / zitieren --> Unities abgeben: Nur für Jonapap
Hi, Du mußt das genauso eingeben wie im interaktiven Dialog in der Befehlszeile. Optionen wie dort. Und für jede Benutzereingabe ein separates <pause> nicht für alle eines... ------------------ Ciao, Marc Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jonapap Mitglied
Beiträge: 206 Registriert: 18.08.2006
|
erstellt am: 20. Sep. 2006 15:18 <-- editieren / zitieren --> Unities abgeben:
Hallo Marc, danke für dein Bemühen, aber ich komme damit irgendwie noch nicht klar. Ich beschreib es Mal etwas genauer: Ich will das angehängte Programm so abändern, das ich anstatt eines Fuzzy-Abstandes auch den Verbindungstyp (Dehnen,Hinzufügen,Beides) auswählen kann - wie es auch im Original pedit-Befehl geht. Kann ich das mit dem Pause-Befehl realisieren, oder muss ich dann eine komplett neue Abfrage für die Schlüsselwörter einbauen? Der Befehl pljoin aus den Express-Tools macht zwar genau das, allerdings lassen sich manche Linien, die ich in der Isometrie gezeichnet habe (Acad2007), damit trotz Fuzzy-Abstand einfach nicht verbinden. Mit dem Befehl pedit geht's komischerweise. Hier das Programm: ;;;Copyright (C) 2003-2004 JTB World, All Rights Reserved (defun c:jf () (c ljoinfuzz)) ; this line can be commented out if there is an existing command called jf (defun c ljoinfuzz (/ ss1 entLine objType oldcmdecho oldpeditaccept fuzz okObjects) (setq oldcmdecho (getvar "cmdecho")) (setq oldpeditaccept (getvar "PEDITACCEPT")) (setvar "cmdecho" 0) (setq A2k4 (>= (substr (getvar "ACADVER") 1 2) "16")) (if A2k4 (setvar "PEDITACCEPT" 0)) (setq okObjects '((0 . "LINE,ARC,POLYLINE,LWPOLYLINE"))) (princ "\nSelect object to join: ") (setq ss1 (ssget okObjects)) (setq fuzz (getdist "\nFuzz distance <0>: ")) (if (= fuzz nil) (setq fuzz 0)) (if (/= ss1 nil) (progn (setq objType (cdr (assoc 0 (entget (setq entLine (ssname ss1 0)))))) (if (= (sslength ss1) 1) (setq ss1 (ssget "X" okObjects))) (if (member objType '("LINE" "ARC")) (command "_.pedit" "_M" ss1 "" "_Y" "_J" "_J" "_B" fuzz "") (command "_.pedit" "_M" ss1 "" "_J" "_J" "_B" fuzz "") ) ) ) (setvar "cmdecho" oldcmdecho) (if A2k4 (setvar "PEDITACCEPT" oldpeditaccept)) (princ) ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 20. Sep. 2006 15:43 <-- editieren / zitieren --> Unities abgeben: Nur für Jonapap
Hallo Jonapap, vielleicht solltest Du erst festlegen, wie der Verbindungstyp ist, und dann entsprechend den (command "_.pedit... aufrufen, dann brauchst Du nicht mit "Pause" rumzuhantieren". Das folgende ist nur ein prinzipieller Vorschlag, ungetestet:
Code:
(defun test (aws jointype / fuzzy) (setq fuzzy (getreal "\nBitte Fuzzyabstand eingeben:")) (cond ((not jointype);wenn Verbindungstype unverändert (if (not(member(cdr(assoc 0(entget (ssname AWS 0))))'("POLYLINE" "LWPOLYLINE"))) (command "_.pedit" "_m" AWS"" "_Y" "_j" (if (not fuzzy) 0.0 fuzzy) "") (command "_.pedit" "_m" AWS"" "_j" "_j" (if (not fuzzy) 0.0 fuzzy) ""))) ((= jointype "E");wenn Verbindungstype "Dehnen" (if (not(member(cdr(assoc 0(entget (ssname AWS 0))))'("POLYLINE" "LWPOLYLINE"))) (command "_.pedit" "_m" AWS"" "_Y" "_j" "_j" "_e" (if (not fuzzy) 0.0 fuzzy) "") (command "_.pedit" "_m" AWS"" "_j" "_j" "_e" (if (not fuzzy) 0.0 fuzzy) ""))) ((= jointype "A");wenn Verbindungstype "Hinzufügen" (if (not(member(cdr(assoc 0(entget (ssname AWS 0))))'("POLYLINE" "LWPOLYLINE"))) (command "_.pedit" "_m" AWS"" "_Y" "_j" "_j" "_a" (if (not fuzzy) 0.0 fuzzy) "") (command "_.pedit" "_m" AWS"" "_j" "_j" "_a" (if (not fuzzy) 0.0 fuzzy) ""))) ((= jointype "B");wenn Verbindungstype "Beide" (if (not(member(cdr(assoc 0(entget (ssname AWS 0))))'("POLYLINE" "LWPOLYLINE"))) (command "_.pedit" "_m" AWS"" "_Y" "_j" "_j" "_b" (if (not fuzzy) 0.0 fuzzy) "") (command "_.pedit" "_m" AWS"" "_j" "_j" "_b" (if (not fuzzy) 0.0 fuzzy) "")))))
;;;Aufruf z.B. mit (test (ssget) "A")------------------ viele Grüße Jörn Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jonapap Mitglied
Beiträge: 206 Registriert: 18.08.2006
|
erstellt am: 20. Sep. 2006 16:12 <-- editieren / zitieren --> Unities abgeben:
Danke Jörn, mir ist schon klar, dass man die Abfrage für den Verbindungstyp auch so lösen kann (siehe Fuzzy-Abstand im obigen Beispiel). Allerdings suche ich eine einfache Lösung, weil ich mich mit Lisp noch nicht so gut auskenne (ich baue im Moment noch lieber vorhandenen Code um). Da ich das Programm so schnell Bedienbar wie möglich haben möchte, müsste ich eine Abfrage schreiben, die gleichzeitig einen eventuellen Fuzzy-Abstand (oder den Null-Wert) und die Abfrage für den Verbindungstyp auswertet. Das ist mir im Moment noch ein bischen viel... Gibt es vielleicht noch eine einfachere Möglichkeit? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |