Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Auswahlsatz splitten

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 splitten (1325 mal gelesen)
Christian01
Mitglied
Technischer Zeichner


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

Beiträge: 281
Registriert: 17.04.2007

Briscad V22
ACAD MAP 2019
Win 10 Pro 64bit
Intel, 4x 3,0 GHz, 8GB RAM
2 x 24" TFT

erstellt am: 03. Jun. 2015 12:13    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 liebe Community.

Gibt es eine Möglichkeite einen Auswahlsatz nochmals zu splitten?
Begründung: Der User soll Objekte über ein Fenster oder durch Einzelwahl (Picking) auswählen.

Code:

(defun C:Test ( / )
    (IF (setq AWS1 (ssget))
        (progn
          (setq AWS2  --> Auswahlsatz2 aus Auswahlsatz2 bilden    (ssget '((0 . "*LINE") (8 . "*Gasse*"))) )
          (setq AWS3  --> Auswahlsatz3 aus Auswahlsatz1 bilden    (ssget '((0 . "*LINE") (8 . "*Stra*")))  )
          (.... Programmablauf auf AWS 2 & AWS 3
                    > Änderung von Layer
                    > Änderung von Farbe
                    > Änderung von Linienstärke
          )
        )
    (princ "\nTest hat nicht funktioniert.")
    (princ)
    )
) (

Oder muss ich das anders machen.
Das Problem ist das man die Objekte nur über ein Fenster auswählen kann und
  ich möchte diese aber auch einzeln Auswählen

Code:
(IF (and
      (setq pt1 (getpoint "Punkt wählen"))
      (setq pt2 (getcorner pt1 "Punkt wählen"))
      (command "_zoom" pt1 pt2)
    )
    (progn
      (setq AWS1 (ssget "_C" pt1 pt2 '((0 . "*LINE") (8 . "*Gasse*"))))
      (setq AWS2 (ssget "_C" pt1 pt2 '((0 . "*LINE") (8 . "*Stra*"))))
      (.... Programmablauf auf AWS 2 & AWS 3
                    > Änderung von Layer
                    > Änderung von Farbe
                    > Änderung von Linienstärke
        )
    )
    (princ "\nTest hat nicht funktioniert.")
    (princ)
)

   

------------------
Grüße

Christian

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: 21533
Registriert: 03.06.2002

Alles

erstellt am: 03. Jun. 2015 12:19    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 Christian01 10 Unities + Antwort hilfreich

Ich verstehe "das Ganze" noch nicht, daher mal ins Blaue geschrieben:

(ssget) ist die AutoCAD-Objektwahl

(ssget '((irgendeinFilter))) ist die Objektwahl mit einschränkungen nach Eigenschaften.

In deinem Code ist eine KREUZEN-Wahl fest vorgegeben (ssget "_C" ....usw.

Wenn du kein Kreuzen willst, dann lasse es doch? (siehe Hilfe F1 zu SSGET)

Auswahlsätze splitten (wenn denn wirklich benötigt) gibt es nicht, man muß sich selbst
Funktionen bauen die das können, man durchwandert dann einen Auswahlsatz und die Funktion
erstellt dann 2 neuen Auswahlsätze (ssadd).

Und nun noch mal bitte, Was ist das Problem / die Aufgabe ?

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 03. Jun. 2015 12:23    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 Christian01 10 Unities + Antwort hilfreich

??? - ich versuchs trotzdem mal:
(ssget '((...
damit hat der Anwender die Möglichkeit über Fenster oder Einzelauswahl zu arbeiten .. also die Standard-Objektwahl von AutoCAD.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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: 03. Jun. 2015 12:32    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 Christian01 10 Unities + Antwort hilfreich

(setq AWS (ssget)) erstellt einen Auswahlsatz

(setq AWS (ssget "_I" '((0 . "INSERT"))))  erstellt einen Auswahlsatz mit Blockreferenzen aus einer aktiven Auswahl

(setq AWS (ssget ":E" '((0 . "INSERT"))))  .. Einzelne Blockreferenz wählen


Hoffe, es ist was für dich dabei ... ich werde nämlich auch nicht schlau aus deinem Prob ..

------------------
Also ich finde Unities gut ... und andere sicher auch
---------------------------------------
  - 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

Christian01
Mitglied
Technischer Zeichner


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

Beiträge: 281
Registriert: 17.04.2007

erstellt am: 03. Jun. 2015 12:42    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

OK ich probiere es nochmals.

Ich definier einen Auswahlsatz: (setq AWS (ssget))

Aus diesem Auswahlsatz AWS möchte ich 2 neue Auswahlsätze machen (AWS1 & AWS2) --> Ich Splitte den AWS in AWS1 & AWS2
Funktioniert das Splitten von definierten Auswahlsätzen mit der ssget- Funktion.
Oder wie kann ich sonst den Auswahlsatz (AWS) splitten?
Ich hoffe es ist jetzt verständlicher.

Begründung: Mit

------------------
Grüße

Christian

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: 03. Jun. 2015 12:59    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 Christian01 10 Unities + Antwort hilfreich

(setq AWS (ssget))
(sssetfirst AWS AWS)
(setq AWS1 (ssget "_I" '((0 . "INSERT"))))  ;_ alle INSERTS aus AWS
(sssetfirst AWS AWS)
(setq AWS1 (ssget "_I" '((0 . "LIINE"))))  ;_ alle Linien usw.

oder
(setq AWS (ssget))
(setq LISTE (mapcar '(Lambda(X)(cadr X)) (ssnamex AWS)))

  mach aus Liste beliebige unterlisten  z.B. mit vl-remove-if

  (setq AWS1 (ssadd))
  (mapcar '(Lambda(X)(ssadd X AWS1)) LISTE1)
  (ssetfirst AWS1)

usw.

ist jetzt bloß hier so reingehakt, die Möglichkeiten sollten aber klar sein, auch wenn vielleicht die eine oder ander Klammer nicht stimmt

------------------
Also ich finde Unities gut ... und andere sicher auch
---------------------------------------
  - 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

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: 21533
Registriert: 03.06.2002

Alles

erstellt am: 03. Jun. 2015 13:00    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 Christian01 10 Unities + Antwort hilfreich

Darauf hast du ja bereits antwort erhalten - Acad hat dafür keine Funktion, die mußt du selbst erstellen.

SSADD erstellt einen leeren Auswahlsatz und kann Elemente zu einem Auswahlsatz hinzufügen


(setq aws1 (ssadd) aws2 (ssadd))

(foreach Element AWS0
  (if diesdadundjenes
      (ssadd Element aws1)
      (ssadd Element aws2)
  )
)


Funktionen zum splitten und zusammen führen von Auswahlsätzen findet man auch viele fertig im Netz,
wenn du es aber selbst erstellst hast du den lernEffekt und verstehst dann auch was da passiert.
 
)

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

Brischke
Moderator
CAD on demand GmbH




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

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 03. Jun. 2015 13: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 Christian01 10 Unities + Antwort hilfreich

.. ich denke, der Gedankenansatz, einen Auswahlsatz in 2 Auswahlsätze zu splitten) ist nicht ideal (es sei denn, du willst mit diesen Auswahlsätzen dann irgendwelche folgenden (Command-Aufrufe füttern). Lisp ist hervorragend geeignet (und auch dafür gedacht), Listen zu verarbeiten. Da ein Auswahlsatz keine Liste ist, sollte erstes Ziel sein,einen Auswahlsatz in eine Liste der Elemente des AWS zu überführen. Für die Verarbeitung derer gibt's dann einen ganzen Sack voller Funktionen.
Der aus meiner Sicht bessere Ansatz wäre:
1) Auswahlsatz bilden
2) Elementliste aus Auswahlsatz bilden
3) Elementliste entsprechend der Eigenschaften der einzelnen Objekte splitten oder weiteren Bearbeitung zuführen.

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!


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