| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | PNY: der unverzichtbare Partner für umfassende KI-Lösungen von Workstations bis zu Edge Computing und KI-Cluster-Bereitstellung, eine Pressemitteilung
|
Autor
|
Thema: Lisp Linien Winkel 45 Grad filtern (2298 mal gelesen)
|
he-st Mitglied CAD Konstrukteur
 
 Beiträge: 110 Registriert: 18.04.2005 Win10 64bit AutoCAD 2016
|
erstellt am: 17. Dez. 2012 16:09 <-- editieren / zitieren --> Unities abgeben:         
Hallo CAD Gemeinde, ich habe ein älteres Lisp Tool gefunden mit dem man automatisch Linien die im 45° Winkel gezeichnet wurden löschen kann. Dieses wird z.B. für Mauerwerksschraffuren benötigt. Jetzt möchte ich aber nicht das das Tool die Linien löscht, sondern nach dem Filtern wieder abbricht, sodass dich die gefilterten Elemente verändern kann (anderer Layer) Wäre toll wenn mir jemand die Lisproutine entsprechend anpassen könnte. Meine Lisp Kenntnisse gehen nämlich gegen null (defun c:schraff45 (/ SET CT OB NAME OB10 OB11 DO ER AN) (setq m:err *error* *error* *merr*) (princ "\nEs werden nur Linien gefiltert!") (setq SET (ssget '((0 . "LINE")))) (setq CT 0) (if (= ER nil) (setq ER 0)) (setq DO (ssadd)) ;leeren auswahlsatz erzeugen (command "_.UNDO" "_GROUP") (while (setq NAME (ssname SET CT)) (setq OB (entget NAME)) (setq OB10 (cdr (assoc 10 OB))) (setq OB11 (cdr (assoc 11 OB))) (setq AN (angtos (angle OB10 OB11))) (cond ((or (= AN "225") (= AN "315") (= AN "135") (= AN "45")) (entdel NAME) (setq ER (1+ ER))) );cond (setq CT (1+ CT)) );while (command "_.UNDO" "_END") (princ (strcat "\nBisher gelöscht: " (rtos ER 2 0))) (setq *error* m:err m:err nil) (princ) );defun Vielen Dank für die Hilfe Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
       

 Beiträge: 13527 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 17. Dez. 2012 16:26 <-- editieren / zitieren --> Unities abgeben:          Nur für he-st
|
he-st Mitglied CAD Konstrukteur
 
 Beiträge: 110 Registriert: 18.04.2005 Win10 64bit AutoCAD 2016
|
erstellt am: 17. Dez. 2012 16:33 <-- editieren / zitieren --> Unities abgeben:         
Prinzipiell schon, aber je nach dem wie die Linie gezeichnet wurde gibt es vier Möglichkeiten: 45° 135° 225° 315°. Außerdem ist mir das zu Umständlich. Das Lisptool berücksichtigt alle Möglichkeiten und wäre direkt von meinem eigenen Mausmenü aus aufrufbar. Geht wesentlich schneller als sich durch die Schnellauswahl zu klicken. Zumal es mir diese nicht immer funktioniert. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
       

 Beiträge: 22275 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 17. Dez. 2012 16:44 <-- editieren / zitieren --> Unities abgeben:          Nur für he-st
Code: (defun c:W45Lines (/ SS DO CT OB NAME) (princ "\nEs werden nur Linien im Winkel 45,135,225 und 315° gefiltert!") (setq SS (ssget '((0 . "LINE")))) (setq CT 0) (setq DO (ssadd)) ;leeren auswahlsatz erzeugen (while (setq NAME (ssname SS CT)) (setq OB (entget NAME)) (if (member (read(angtos (angle (cdr(assoc 10 OB)) (cdr (assoc 11 OB))))) '(45.0 135.0 225.0 315.0)) (setq CT (1+ CT)) (ssdel NAME SS) );if );while (if (zerop(sslength ss)) (princ"\nKeine Linie gewählt") (progn(princ(strcat "\n" (rtos(sslength ss)2 0) " Linien gefiltert"))(sssetfirst nil SS)) ) (princ) );defun------------------ CAD.de System-Angaben - CAD on demand - User:FAQ(Acad)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |

| |
he-st Mitglied CAD Konstrukteur
 
 Beiträge: 110 Registriert: 18.04.2005 Win10 64bit AutoCAD 2016
|
erstellt am: 17. Dez. 2012 16:54 <-- editieren / zitieren --> Unities abgeben:         
|