| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY wird von NVIDIA zum Händler des Jahres gewählt – zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: lisp code? (1333 mal gelesen)
|
chris888 Mitglied Technischer Zeichner
Beiträge: 141 Registriert: 11.11.2010 AutoCAD 2002, 2005, 2008, 09, 10, 11
|
erstellt am: 02. Feb. 2011 10:55 <-- editieren / zitieren --> Unities abgeben:
hey leute!! ganz kurze frage wie lautet der code um aus einem auswahlsatz auszuschliessen?? mit (ssget "x"(list(cons 62 7))) wählt mal z.b. alle was die farbe weiß/schwarz hat aus. wie kann ich zum beispiel, wenn alles markiert ist genau diese farbe aus meinem auswahlsatz entfernen?? danke mfg chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wronzky Ehrenmitglied V.I.P. h.c. CAD-Dienstleistungen für Architekten
Beiträge: 2154 Registriert: 02.05.2005 CAD: AutoCAD 2.6 bis 2014 ADT 2005 - 2014 Arcibem System: Windows 2000, XP, NO VISTA Internet-Startseite: http://www.archi.de
|
erstellt am: 02. Feb. 2011 11:21 <-- editieren / zitieren --> Unities abgeben: Nur für chris888
|
Steff179 Mitglied Geomatiker
Beiträge: 266 Registriert: 09.08.2007 AutoCAD 2014
|
erstellt am: 02. Feb. 2011 11:22 <-- editieren / zitieren --> Unities abgeben: Nur für chris888
hallo chris ein beispiel: (ssget '((0 . "INSERT")(-4 . "<NOT")(66 . 1)(-4 . "NOT>")))) hoffe das hilft dir. gibt gnoch ander varianten so viel ichs im hinterkopf habe.
gruss steff ps.: da war wider mal einer schneller
[Diese Nachricht wurde von Steff179 am 02. Feb. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
neurosis Mitglied dipl.ing.
Beiträge: 224 Registriert: 22.08.2006
|
erstellt am: 02. Feb. 2011 11:23 <-- editieren / zitieren --> Unities abgeben: Nur für chris888
hallo chris, (setq ss (ssget "_x"(list '(0 . "LWPOLYLINE") '(-4 . "<NOT") (cons 62 color) '(-4 . "NOT>")))) es werden alle lwpolyline ausgewaehlt, die nicht auf farbe color liegen. edit: da war ich woll etwas zu langsam gruss marco ------------------ Marco Heuer www.arc-aachen.de Airport Office [Diese Nachricht wurde von neurosis am 02. Feb. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 02. Feb. 2011 11:26 <-- editieren / zitieren --> Unities abgeben: Nur für chris888
Das sind 2 Fragen. 1. ssget mit Filterung NOT Das hier wählt alle nicht roten Linien (außer wenn vonlayer zufälllig rot ist) (ssget "X" (list (0 . "LINE") (-4 . "<not") (62 . 1) (-4 . "not>") ) ) siehe auch http://www.autolisp-tutorial.mapcar.net/ssget.html und 2. Bestehender Auswahlsatz (impliziter Auswahlsatz _I) in ssget Ausewahlsatz übernehmen (ssgetfirst) bzw. (ssget "_I" ... Dieser Code erstellt einen Auswahlsatz aller NICHT roten Linien aus der aktuellen Markierung/Auswahl Befehl: (ssget "_I" '((0 . "LINE") (-4 . "<not") (62 . 1) (-4 . "not>"))) ------------------ Mit freundlichem Gruß Udo Hübner www.CAD-Huebner.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
chris888 Mitglied Technischer Zeichner
Beiträge: 141 Registriert: 11.11.2010 AutoCAD 2002, 2005, 2008, 09, 10, 11
|
erstellt am: 02. Feb. 2011 13:14 <-- editieren / zitieren --> Unities abgeben:
|
chris888 Mitglied Technischer Zeichner
Beiträge: 141 Registriert: 11.11.2010 AutoCAD 2002, 2005, 2008, 09, 10, 11
|
erstellt am: 02. Feb. 2011 14:58 <-- editieren / zitieren --> Unities abgeben:
sooooo habs jetzt mal ausprobiert und 1. die eingaben mit (0."line") also die . eingabe funktioniert iwie nicht kommt immer in der befehlszeile "fehlerhafte punktbezeichnung" [ich habs zumindest jetzt hinbekommen den befehl mit (cons 0 "line") hinzubekommen] 2. alles toll was ihr mir da gezeigt habt aber ich will aus einem schon bestehenden auswahlsatz ausschliessen so wie wenn man die "shift" taste drückt. Problem: Ich hab objekte in einem bestimmten bereich die ich markieren will aber auf dem gleichen eigenschaften liegen wie die ausenrum. mein befehl sah bis jetzt so aus das er den bereich markiert mit blauem fenster, und jetzt will ich nur noch die linien die noch ausgewählt sind aus dem auswahlsatz entfernen. hoffe ihr versteht mein anliegen^^ mfg chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 02. Feb. 2011 15:24 <-- editieren / zitieren --> Unities abgeben: Nur für chris888
|
chris888 Mitglied Technischer Zeichner
Beiträge: 141 Registriert: 11.11.2010 AutoCAD 2002, 2005, 2008, 09, 10, 11
|
erstellt am: 04. Feb. 2011 11:55 <-- editieren / zitieren --> Unities abgeben:
ich kriegs immer noch nicht hin -.- habe mich soweit vorgearbeitet das ich jetzt schonmal mit ssget einen auswahlfenster erstelle (defun c:12()(command "_select" (ssget "_w" '(-0.1 -0.1)'(0.1 0.1)))) wie kann ich aus diesem fenster jetzt alle objekte die auf der farbe (62 . 32) liegen ausschließen??? ich kriegs nicht hin -.-.-.-.- HILFE mfg chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Steff179 Mitglied Geomatiker
Beiträge: 266 Registriert: 09.08.2007 AutoCAD 2014
|
erstellt am: 04. Feb. 2011 12:03 <-- editieren / zitieren --> Unities abgeben: Nur für chris888
|
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 04. Feb. 2011 14:16 <-- editieren / zitieren --> Unities abgeben: Nur für chris888
Zitat: Original erstellt von chris888: ich kriegs immer noch nicht hin -.- habe mich soweit vorgearbeitet das ich jetzt schonmal mit ssget einen auswahlfenster erstelle (defun c:12()(command "_select" (ssget "_w" '(-0.1 -0.1)'(0.1 0.1)))) wie kann ich aus diesem fenster jetzt alle objekte die auf der farbe (62 . 32) liegen ausschließen??? ich kriegs nicht hin -.-.-.-.- HILFE mfg chris
Was willst Du denn mit der Auswahl dann weiter anstellen? Wenn Du, was anzunehmen ist, von Lisp aus auch einen Befehl aufrufst, mit dem Du dann diesen Auswahlsatz irgend wie bearbeitest, dann brauchst Du das (command "_select" ...) nicht. Speichere den Auswahlsatz in einer Variablen: (setq sset (ssget ...)) Und dann kannst Du mit dem Auswahlsatz weiter arbeiten. Wenn Du nun den Auswahlsatz in eine Liste von Entitynamen umwandelst, dann kannst Du beliebige solche Auswahlsätze bilden, und diese mit geeigneten Listenverarbeitungsmethoden zu neuen Auswahlsätzen zusammensetzen. Als Beispiel: Du möchtest einen Auswahlsatz aller Linien, Bögen und Polylinen: (setq sset (ssget "X" '((0 . "LINE,ARC,LWPOLYLINE,POLYLINE")))) Und nun möchest Du einen Auswahlsatz, aller Linien, Bögen und Polylinen, die NICHT Farbe 1 haben. Dazu bildest Du einen Auswahlsatz aller Linien, Bögen und Polylinen, die Farbe 1 haben, und subtrahierst diese Menge von der Menge des vorherigen Auswahlsatzes. Damit bist Du sehr viel flexibler als mit den für Anfänger etwas kryptischen (-4 ...) Operatoren von SSGET. Voraussetzung ist natürlich, dass Du Dir eine kleine Bibliothek von Lisp-Funktionen schreibst, mit denen Du Bool'sche Operationen auf Listen anwenden kannst. Diese Funktionen sind sehr einfach zu schreiben und die perfekte Übung für einen Lisp-Anfänger, und sie werden Dir Dein ganzes weiteres Leben wertvollste Dienste leisten. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
chris888 Mitglied Technischer Zeichner
Beiträge: 141 Registriert: 11.11.2010 AutoCAD 2002, 2005, 2008, 09, 10, 11
|
erstellt am: 04. Feb. 2011 15:31 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von Steff179:
Code:
(ssget "_w" '(-0.1 -0.1)'(0.1 0.1) '((-4 . "<not") (62 . 32) (-4 . "not>")))
-.-.- genau so hatte ich es schon ausprobiert -.-.- kann es sein das die leerzeichen zwischen den ) ( relevant für die verarbeitung sind?? hatte nämlich alles zusammen geschrieben... VIELEN DANK JETZT GEHTS ENDLICH mfg chris Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |