Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  (ssget) benötigt unterscheidlich viele Enter ()?

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
Autor Thema:  (ssget) benötigt unterscheidlich viele Enter ()? (1446 mal gelesen)
Gargarot
Mitglied
Student MSc Civil Engineering ETHZ, Dipl Bauzeichner


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

Beiträge: 316
Registriert: 25.06.2008

erstellt am: 09. Dez. 2008 08:58    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

Morgen allerseits!

Ich bin gerade daran einige Befehlstrings in einem Lisp zusammenzutragen, damit jeder seine eigenen Tastenkürzel hat und die auch shcnell laden kann.

Klappt soweit sogut, nur mit dem Kopieren hab ich etwas Mühe. copym aus den Expresstools übrzeugt mich nicht, weil ich nicht einfach mit einer Distanz kopieren kann (anstatt 15 -> @15,0) und mehrfach unbedingt funtioneren muss.
Also hab ich folgendes konstruiert:

Code:
(defun c:k (/ ss)
(princ "\nKopieren: ")
(if (setq ss (cadr (ssgetfirst)))
(command "_copy" ss "" "m")
(command "_copy" (ssget) "" "m")
)
)

Im ACAD 2009 klappt das tiptop. Im 2007 nicht. Da benötige ich bei
(command "_copy" (ssget) "" "" "m")
nach (ssget) noch ein zweites Enter?

Lösche ich .."" "m".. heraus so sehe ich das ich einfach ein einziges Enter benötige;

Zitat:
Objekte wählen: [ich drücke Enter]
Basispunkt angeben oder [Verschiebung/Mehrfach] <Verschiebung>:

Wiso bruacht jetzt mein tolles Lisp noch ein zweites Enter? Mit
(command "_copy" ss "" "" "m") läufts nämlich.

Beim abnderen Mitarbeiter kommt noch nach zwei "" Objekte wählen.
Irgendwie hat der ein Problem damit. Liegt das irgendwie an einer Systemvariable? Kann man da irgendwie einfach drumrumlispen?

Noch was Anderes:
Mit (initdia) kann man ja die Dialoge bei HATCH BLOCK ect anzeigen lassen, nur bei _close geht das nicht. Wie kann ich den Dialog initalisieren?

Und ganz allgemein: Gibt es irgendwo ein Verzeichnis mit allen/meistgebrauchten Funktionen? Ich kenn zwar mapcar aber eine Bibliothek wäre praktischer.

Grüsse Christoph

------------------
3 kleine Weisheiten
-Man kann ein Problem nicht mit den gleichen Denkstrukturen lösen, die zu seiner Entstehung beigetragen haben.
-Bewehrt sich Beton?
-Der Horizont vieler Menschen ist ein Kreis mit Radius Null - und das nennen sie ihren Standpunkt.

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 09. Dez. 2008 09:10    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 Gargarot 10 Unities + Antwort hilfreich

zum 1. .... ab 2006? gab es einen Wechsel in den Befehlsoptionen von copy .. vorher war m für Mehrfach die Option, danach Standard -> Siehe Sysvar COPYMODE

zum 2. denke, close in einem Command liefert keinen Dialog. Ist so.

zum 3. die Hilfe im VLIDE listet (fast) alle Funktionen .. ansonsten hilft vielleicht das Handbuch der 14er Version

------------------
  - Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

Gargarot
Mitglied
Student MSc Civil Engineering ETHZ, Dipl Bauzeichner


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

Beiträge: 316
Registriert: 25.06.2008

erstellt am: 09. Dez. 2008 13:51    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

Zu 1. Das ist mir schon klar. Nur funktionert Lisp eben immer noch in der alten Version und (command "_copy") kopiert nicht mehrfach. Ich möchte ja darum mit der Variable [ss] die vorhermarkierten Objekte holen um die dann mit "m" mehrfach zu kopieren. Nach ss ENTER liegt ja auch mein Problem.
Ich bin mir nicht sicher ob das klar rübergekommen, oder aber ich verstehe deine Antwort falsch  
COPYMODE gibt es übrigens in ACAD 2007 noch(?) nicht.
Hab auch nichts ähnliches gefunden. Mit _copy (ganz normal in der Befehlszeile) wird eigentlich immer mehrfach kopiert.

Ich hab jetzt nochn bisschen recherchiert und hab (übrigens dank COPYMODE   ) diesen Thread gefunden.
Nach löschen der Zeile mit Copymode machts genau das was ich wollte. (Eine Funktion wird zwar durch Fehler abgebrochen, aber läuft ohne Probleme)

Mit k kann ich jetzt kopieren wie mit _copy, somit ist das Ziel erreicht. Dennoch frage ich mich wieso dass das der ein Problem hat und mein Lisp nicht so richtig funktionieren wollte.

2. Jep dann gibt es also bei _close keine Möglichkeit. Schade.

3. Danke für den Link. Hilft mir echt weiter!

Gruss Christoph

#Edit#

Hmmm oben hab ich es einmal falsch geschrieben. Natürlich nicht hinter (ssget) ""... sonder bei ss "".. liegt das Problem. Sorry für die Verwirrung.

------------------
3 kleine Weisheiten
-Man kann ein Problem nicht mit den gleichen Denkstrukturen lösen, die zu seiner Entstehung beigetragen haben.
-Bewehrt sich Beton?
-Der Horizont vieler Menschen ist ein Kreis mit Radius Null - und das nennen sie ihren Standpunkt.

[Diese Nachricht wurde von Gargarot am 09. Dez. 2008 editiert.]

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 11. Dez. 2008 13:31    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 Gargarot 10 Unities + Antwort hilfreich

Code:
(defun c:k (/ ss)
(princ "\nKopieren: ")
(if (setq ss (cadr (ssgetfirst)))
(command "_copy" ss "" "m")
(command "_copy" (ssget) "" "m")
)
)

Also das kapieren ich unter AC2007 und höher nicht wirklich.
Das tut ja eh nichts anderes als der normale Kopierbefehl.

Und was willst Du eigentlich mit dem (ssgetfirst). Das habe ich überhaupt noch nie gebraucht, das (ssget) genau das gleiche macht. Bei einer Vorauswahl werden die selektierten Objekte gewählt und es erfolgt keine Beutzeranfrage. Gibt es keine Vorausweahl startet (ssget) eine Benutzerabfarge.


Und nur um einen Autocadbefehl das Tastaturkürzel K zu geben, gibt es die Acad.pgp

ausserdem ist es unschön einen mit (command gestartetetn Befehl nicht auch sauber zu beenden, da das startende Lisp auch noch einen Rückgabewert (nil) irgendwann mit reinschiesst.

[Diese Nachricht wurde von fuchsi am 11. Dez. 2008 editiert.]

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

Gargarot
Mitglied
Student MSc Civil Engineering ETHZ, Dipl Bauzeichner


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

Beiträge: 316
Registriert: 25.06.2008

erstellt am: 11. Dez. 2008 14: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

Hallo fuchsi

Ziel der ganzen Übung ist, alle Tastaturkurzbefehle in einer Datei zu haben, da wir ab und zu unsere Plätze tauschen. Zudem kann ich mit Lisp zb Funktionen "auf X-Achse ausrichten" , "Ausrichten auf Weltkoordinaten" oder "ein allgemeines Bereinigen und Prüfen ect" auf eine Taste bringen. Mit .apg (haben wir bis jetzt benutzt) geht das nicht.

Andererseits ist das ein guter Einsteig für mich in Lisp  

Wow. Weniger ist manchmel mehr.

Code:
(defun c:q ()(princ "\nKopieren: ")(command "_copy" (ssget) "" "m"))

Wie würdest denn du das ganze richtig abschliessen? noch ein nil am Ende einbauen?

Dank dir für deine Erlüuterungen!

Gruss Christoph

------------------
3 kleine Weisheiten
-Man kann ein Problem nicht mit den gleichen Denkstrukturen lösen, die zu seiner Entstehung beigetragen haben.
-Bewehrt sich Beton?
-Der Horizont vieler Menschen ist ein Kreis mit Radius Null - und das nennen sie ihren Standpunkt.

[Diese Nachricht wurde von Gargarot am 11. Dez. 2008 editiert.]

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 11. Dez. 2008 15: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 Gargarot 10 Unities + Antwort hilfreich

kein nil aber ein (princ) ist immer einsauberer Abschluss


Code:
(defun c:q ()(princ "\nKopieren: ")(command "_copy" (ssget) "" "m") (princ))

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

Gargarot
Mitglied
Student MSc Civil Engineering ETHZ, Dipl Bauzeichner


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

Beiträge: 316
Registriert: 25.06.2008

erstellt am: 12. Dez. 2008 15: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

Okey Danke!

Liebe Grüsse Christoph

------------------
3 kleine Weisheiten
-Man kann ein Problem nicht mit den gleichen Denkstrukturen lösen, die zu seiner Entstehung beigetragen haben.
-Bewehrt sich Beton?
-Der Horizont vieler Menschen ist ein Kreis mit Radius Null - und das nennen sie ihren Standpunkt.

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