Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Auswahlsatz

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:  Auswahlsatz (325 / mal gelesen)
ReneReichel
Mitglied
Technischer Projektleiter


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

Beiträge: 71
Registriert: 07.02.2018

ACAD 2023
Win10 Enterprise, AMD Ryzen Threadripper 3960X 24-Core, 3.80 GHz, 128 GB RAM, NVIDIA RTX A4000

erstellt am: 16. Mai. 2024 09:39    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 zusammen,

ich brauche mal wieder eure Hilfe.

Wie kann ich beim Aufruf einer Routine prüfen, ob bereits Objekte ausgewählt sind und mit diesem dann weiterarbeiten?

So in dem Sinne:

Wenn Objekte gewählt, dann mach was, wenn nicht, Auswahl mit ssget und dann mach was...

Die Lösung ist sicher ganz einfach, ich komm aber nicht drauf...

Danke schonmal im Voraus.

Grüße René

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

Peter2
Ehrenmitglied V.I.P. h.c.




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

Beiträge: 3834
Registriert: 15.10.2003

Win 10/64 Pro
AutoCAD MAP 3D 2023
BricsCAD 23

erstellt am: 16. Mai. 2024 09: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 Nur für ReneReichel 10 Unities + Antwort hilfreich

Siehe Dokumentation, z.B. hier: https://lee-mac.com/ssget.html

Stichwort "i" - implied.
Habe ich auch erst vor kurzem begriffen.

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

cadffm
Moderator
良い精神




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

Beiträge: 22171
Registriert: 03.06.2002

Alles

erstellt am: 16. Mai. 2024 09:53    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 ReneReichel 10 Unities + Antwort hilfreich

Man könnte das prüfen, aber das ist für deinen beschriebenen Fall überhaupt nicht notwendig

"Wenn Objekte gewählt, dann mach was, wenn nicht, Auswahl mit ssget und dann mach was..."
Auswahl mit ssget und dann mach was

läuft  

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

ReneReichel
Mitglied
Technischer Projektleiter


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

Beiträge: 71
Registriert: 07.02.2018

ACAD 2023
Win10 Enterprise, AMD Ryzen Threadripper 3960X 24-Core, 3.80 GHz, 128 GB RAM, NVIDIA RTX A4000

erstellt am: 16. Mai. 2024 11:43    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

Zitat:
Original erstellt von cadffm:
Man könnte das prüfen, aber das ist für deinen beschriebenen Fall überhaupt nicht notwendig

"Wenn Objekte gewählt, dann mach was, wenn nicht, Auswahl mit ssget und dann mach was..."
Auswahl mit ssget und dann mach was

läuft   


Hallo cadffm,

das will ich eben nicht. Wenn der Benutzer vor dem Aufruf der Routine (bspw. automatische Schraffur) schon Objekte gewählt hat, soll er eben nicht gezwungen sein, die Objekte nochmals auszuwählen...

Grüße René

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

ReneReichel
Mitglied
Technischer Projektleiter


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

Beiträge: 71
Registriert: 07.02.2018

ACAD 2023
Win10 Enterprise, AMD Ryzen Threadripper 3960X 24-Core, 3.80 GHz, 128 GB RAM, NVIDIA RTX A4000

erstellt am: 16. Mai. 2024 11:56    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

Zitat:
Original erstellt von Peter2:
Siehe Dokumentation, z.B. hier: https://lee-mac.com/ssget.html

Stichwort "i" - implied.
Habe ich auch erst vor kurzem begriffen.


Hallo Peter,

danke Dir (war ja doch ganz einfach... )

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

cadffm
Moderator
良い精神




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

Beiträge: 22171
Registriert: 03.06.2002

Alles

erstellt am: 16. Mai. 2024 12:15    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 ReneReichel 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von ReneReichel:das will ich eben nicht"

Ich habe es schon richtig dargestellt, DAS hier willst du nicht >>" soll er eben nicht gezwungen sein, die Objekte nochmals auszuwählen..."
Diese Aussage stammt aber von dir und zeigt aber nur das du die Funktionsweise von SSGET überhaupt noch nicht geprüft hast, auch nach meinem Post nicht.

(an der Stelle muss ich noch einmal darauf hinweisen dass ich nur auf deine beschriebene Aufgabe antworte, Fakten in Form von konkretem Code liegt uns ja nicht vor)


Ich helfe dir mal beim überlegen/testen bzgl. SSGET:

1. Ohne ein Objekt markiert zu haben, gebe einmal ein: (SSGET)<enter>
   SSGET wird dich zur Objektwahl auffordern

2. Markiere ein Objekt, gebe einmal ein: (SSGET)<enter>
   SSGET wird dich NICHT zur Objektwahl auffordern, sondern den Auswahlsatz direkt mit den bereits markierten Objekten erstellen.


Oder als simple Funktion, für denselben Test

(defun c:TEST nil
(alert (itoa(sslength(ssget))))
)

1. Nichts markieren und TEST<enter> starten

2. Objekt markieren und TEST<enter> starten

Wenn das in deinen bisherigen Versuchen nicht funktioniert hat, dann lag es nicht an ssget, sondern an deinem (unbekannten) Cod, oder daran wie du deinen Code ausführst.

  

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

ReneReichel
Mitglied
Technischer Projektleiter


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

Beiträge: 71
Registriert: 07.02.2018

ACAD 2023
Win10 Enterprise, AMD Ryzen Threadripper 3960X 24-Core, 3.80 GHz, 128 GB RAM, NVIDIA RTX A4000

erstellt am: 16. Mai. 2024 12:39    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

Zitat:
Original erstellt von cadffm:

Ich habe es schon richtig dargestellt, DAS hier willst du nicht >>[i]" soll er eben nicht gezwungen sein, die Objekte nochmals auszuwählen..."
Diese Aussage stammt aber von dir und zeigt aber nur das du die Funktionsweise von SSGET überhaupt noch nicht geprüft hast, auch nach meinem Post nicht.

(an der Stelle muss ich noch einmal darauf hinweisen dass ich nur auf deine beschriebene Aufgabe antworte, Fakten in Form von konkretem Code liegt uns ja nicht vor)


Ich helfe dir mal beim überlegen/testen bzgl. SSGET:

1. Ohne ein Objekt markiert zu haben, gebe einmal ein: (SSGET)<enter>
   SSGET wird dich zur Objektwahl auffordern

2. Markiere ein Objekt, gebe einmal ein: (SSGET)<enter>
   SSGET wird dich NICHT zur Objektwahl auffordern, sondern den Auswahlsatz direkt mit den bereits markierten Objekten erstellen.


Oder als simple Funktion, für denselben Test

(defun c:TEST nil
(alert (itoa(sslength(ssget))))
)

1. Nichts markieren und TEST<enter> starten

2. Objekt markieren und TEST<enter> starten

Wenn das in deinen bisherigen Versuchen nicht funktioniert hat, dann lag es nicht an ssget, sondern an deinem (unbekannten) Cod, oder daran wie du deinen Code ausführst.

    [/i]


Das ist schon klar. Das Problem ist (dass kannst Du aber nicht wissen, da ich den Code nicht gepostet habe), dass das ssget nicht am Anfang der Routine steht, sondern vorher noch andere Befehle ausgeführt werden. Somit geht die Auswahl (anscheinend) verloren. Daher rührte die Frage, ob man das prüfen kann (habe aber festgestellt, dass ich die Prüfung auch an den Anfang stellen muss...).

Danke Dir trotzdem für Deine Mühe.

Grüße René

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

cadffm
Moderator
良い精神




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

Beiträge: 22171
Registriert: 03.06.2002

Alles

erstellt am: 16. Mai. 2024 13:11    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 ReneReichel 10 Unities + Antwort hilfreich

>>"Somit geht die Auswahl (anscheinend) verloren."
Wenn, dann führst du etwas aus, was die Auswahl aufhebt - die SSGET-Position an sich, ist irrelevant.
Und NUR prüfen würde dir auch nicht helfen, man muss schon dafür Sorgen das ein Auswahlsatz gebildet wird und diesen an ein Symbol binden,
damit man später auch noch weiß welche Objekte markiert waren, dafür ist dann die Option :i ideal, wobei man auch ssget ohne die Option nutzen könnte.

Ein Grund dagegen wären höchstens mögliche unterschiedliche Vorgänge zwischen Objekte vor-gewählt vs- kein e Objekte vor-gewählt.

(ssget ist, auch für die Option ":i", Pickfirst abhängig)


Und weil hier noch immer kein Code steht, zwei Beispiel, für spätere Mitleser

(defun c:Test1 (/ aws)
(setq aws (ssget "_i")) ; [editiert]
(irgendetwaswasdieObjektwahlaufhebtundannerzeug)
(if (or aws (setq aws (ssget)))
     (progn
      (machwasmitaws)
     )
)
)


(defun c:Test2 (/ aws)
(if (setq aws (ssget))
     (progn
      (irgendetwaswasdieObjektwahlaufhebtundannerzeug)
      (machwasmitaws)
     )
)
)


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

archtools
Mitglied



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

Beiträge: 943
Registriert: 09.10.2004

Entwickler für AutoCAD, BricsCAD u.a., alle Systeme

erstellt am: 16. Mai. 2024 16:01    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 ReneReichel 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von ReneReichel:
Wie kann ich beim Aufruf einer Routine prüfen, ob bereits Objekte ausgewählt sind und mit diesem dann weiterarbeiten?

Zur Ergänzung, weil das noch niemand gesagt hat: es gibt einen Unterschied zwischen
(ssget "_i")
und
(ssget "_:i")
Die Variante mit dem Doppelpunkt fordert den Nutzer zur Objektwahl auf, falls kein impliziter Auswahlsatz vorhanden ist. Die Variante ohne Doppelpunkt gibt bei Nichtvorhandenem impliziten Auswahlsatz NIL zurück.

Wenn man also nur prüfen möchte, ob schon Objekte in einem impliziten AUswahlsatz "vorab" ausgewählt sind, dann prüft man einfach auf (ssget "_i").

(ssget "_:i") hingegen ist das gleiche wie
(or (setq sset (ssget "_i"))
    (setq sset (ssget))
)

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

cadffm
Moderator
良い精神




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

Beiträge: 22171
Registriert: 03.06.2002

Alles

erstellt am: 16. Mai. 2024 16:18    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 ReneReichel 10 Unities + Antwort hilfreich

ähm.
1. Danke, bei mir war es nur ein "Schreibfehler", was ich jetzt oben korrigiert habe.
2. :i oder international _:i gibt es in Autodesks AutoLisp nicht, zumindest nicht als Option von ssget

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

cadffm
Moderator
良い精神




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

Beiträge: 22171
Registriert: 03.06.2002

Alles

erstellt am: 16. Mai. 2024 16:20    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 ReneReichel 10 Unities + Antwort hilfreich

>>"Die Variante mit dem Doppelpunkt fordert den Nutzer zur Objektwahl auf, falls kein impliziter Auswahlsatz vorhanden ist. "
Dann ist diese Bricscad ssget-option völlig überflüssig, da ssget ohne besondere Methode identisch agiert!?

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