| | | 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: Schraffurumgrenzungen anlegen - über eine bzw. über alles Schraffuren (1439 mal gelesen)
|
-ikarus- Mitglied Zeichner
Beiträge: 142 Registriert: 12.02.2007 ACAD 2015,PSP 2011, Showcase 2015, Mudbox 2015 Indesign CC, Illustrator CC, Photoshop CC, After Effects CC, Premiere Pro CC, Edge Animate CC, Acrobat DC Pro mit PitStop Pro, Visual Studio 2013 Notepad++ Rechner: HP Z620 Workstation NVIDIA Quadro K4000
|
erstellt am: 17. Apr. 2013 11:49 <-- editieren / zitieren --> Unities abgeben:
Hallo, kann mir jemand Hilfestellung geben? Ich hab mir die lisp mithilfe des "AutoLISP-Handbuch - Stand 97" zusammengebastelt, sie funktioniert auch soweit. Jetzt hab ich mir gedacht, dass es doch besser wäre, bei der Frage "<F>enster wählen oder <A>lles?" das man nicht erst Fenster eingeben muss um dann die Auswahl zutreffen, sondern das man gleich eine Objektwahl treffen kann und wenn keine getroffen wird, dann alles gewählt wird. Das war jetzt mein Gedanke nur irgendwie komme ich da nicht weiter. Alle Varianten die ich ausprobierte, geben Fehler zurück. Code:
;Anfang Unterprogramm Fensterauswahl (defun Fenster (/ pt1 pt2 AWS I OBJ) (if(setq AWS(ssget (list(cons 410(getvar "CTAB"))'(0 . "HATCH")))) (progn (setq I -1) (repeat (sslength AWS) (setq OBJ (ssname AWS(setq I (1+ I)))) (command "_-hatchedit" OBJ "_B" "_P" "_Y") ) ) ) (setq AWSzoom AWS ) ) ;Ende Unterprogramm Fensterauswahl ; ;Anfang Unterprogramm Auswahl alles (defun alles1 (/ AWS ) (if(setq AWS(ssget "_X" (list(cons 410(getvar "CTAB"))'(0 . "HATCH")))) (progn (setq I -1) (repeat (sslength AWS) (setq OBJ (ssname AWS(setq I (1+ I)))) (command "_-hatchedit" OBJ "_B" "_P" "_Y") ) ) ) (setq AWSzoom AWS ) ) ;Ende Unterprogramm Auswahl alles ; ; ;Start Hauptprogramm Mainprogramm Aufruf mit S-Umgrenzung (defun C:S-UMGRENZUNG(/ AWSzoom ) (vl-load-com) ; ;;;; Error Funktion (setq MD_ERR *ERROR* *ERROR* M:FEHLER ) ;_ end of setq ;;Marke für Zurück nach Abbruch setzen (vla-endundomark (vla-get-activedocument(vlax-get-acad-object))) (vla-startundomark(vla-get-activedocument(vlax-get-acad-object))) ;;;Die eigentliche Funktion: (defun M:FEHLER (S) (print (strcat "M:fehler " S)) (vl-cmdf "_UNDO" "_BACK") (setq *ERROR* MD_ERR) (alert "Der Befehl wurde abgebrochen!") (princ) ) ;_ end of defun ; (setq lay1 (getvar "clayer")) (command "-layer" "Machen" "K-Linie" "farbe" "6" "" "Ltyp" "continuous" "" "plot" "kein" "" "") ; (initget 1 "Alles alles a A F f fenster Fenster" ) (setq prüf (getstring "\n <F>enster wählen oder <A>lles? <A>: ")) (if (or (= prüf "Alles")(= prüf "")(= prüf "a")(= prüf "alles")(= prüf "A")) (alles1)(Fenster) ) (command "clayer" lay1 ) (command "zoom" "objekt" AWSzoom "") (command "regen" ) (princ) ) ;Ende Hauptprogramm
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 17. Apr. 2013 12:06 <-- editieren / zitieren --> Unities abgeben: Nur für -ikarus-
Dann lässt du den Teil mit Code: (initget 1 "Alles alles a A F f fenster Fenster" ) (setq prüf (getstring "\n <F>enster wählen oder <A>lles? <A>: ")) (if (or (= prüf "Alles")(= prüf "")(= prüf "a")(= prüf "alles")(= prüf "A")) (alles1)(Fenster) )
weg und lässt nur die Funktion (Fenster) laufen. Was passiert denn, wenn du nur die Funktion laufen lässt und bei ssget das "_X" rausnimmst, dann müssten eigentlich die Objekte eingegeben werden. ------------------ Gruss Dirk http://cadplayerlounge.blogspot.se Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
-ikarus- Mitglied Zeichner
Beiträge: 142 Registriert: 12.02.2007 ACAD 2015,PSP 2011, Showcase 2015, Mudbox 2015 Indesign CC, Illustrator CC, Photoshop CC, After Effects CC, Premiere Pro CC, Edge Animate CC, Acrobat DC Pro mit PitStop Pro, Visual Studio 2013 Notepad++ Rechner: HP Z620 Workstation NVIDIA Quadro K4000
|
erstellt am: 17. Apr. 2013 12:19 <-- editieren / zitieren --> Unities abgeben:
OH, Da hast du recht, da hab ich den Wald vor lauter Bäumen nicht gesehen. Das heißt, man gibt in der Objektwahl "alle" ein um alles zu wählen. Die Möglichkeit, dass man mit Return weiter geht und dann alle gewählt werden funktioniert so nicht, oder? Danke für deine Antwort. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
-ikarus- Mitglied Zeichner
Beiträge: 142 Registriert: 12.02.2007 ACAD 2015,PSP 2011, Showcase 2015, Mudbox 2015 Indesign CC, Illustrator CC, Photoshop CC, After Effects CC, Premiere Pro CC, Edge Animate CC, Acrobat DC Pro mit PitStop Pro, Visual Studio 2013 Notepad++ Rechner: HP Z620 Workstation NVIDIA Quadro K4000
|
erstellt am: 17. Apr. 2013 13:06 <-- editieren / zitieren --> Unities abgeben:
Nochmal Danke hab es jetzt so gemacht Code:
;Start Hauptprogramm Mainprogramm Aufruf mit S-Umgrenzung (defun C:S-UMGRENZUNG(/ AWS I OBJ ) (vl-load-com) ; ;;;; Error Funktion (setq MD_ERR *ERROR* *ERROR* M:FEHLER ) ;_ end of setq ;;Marke für Zurück nach Abbruch setzen (vla-endundomark (vla-get-activedocument(vlax-get-acad-object))) (vla-startundomark(vla-get-activedocument(vlax-get-acad-object))) ;;;Die eigentliche Funktion: (defun M:FEHLER (S) (print (strcat "M:fehler " S)) (vl-cmdf "_UNDO" "_BACK") (setq *ERROR* MD_ERR) (alert "Der Befehl wurde abgebrochen!") (princ) ) ;_ end of defun Fehler ;;;;;;Ende Error Funktion ; ;Speichert Variable aktueller Layer (setq lay1 (getvar "clayer")) ; ;Macht einen neuen bzw. setzt den Layer K-Linie (command "-layer" "Machen" "K-Linie" "farbe" "6" "" "Ltyp" "continuous" "" "plot" "kein" "" "") ; ;eigentliches Programm (princ "\n" ) (princ "\n" ) (print " [Alle] eingeben um alle Schraffuren auszuwählen! ");Kommentar (if(setq AWS(ssget (list(cons 410(getvar "CTAB"))'(0 . "HATCH"))));Filtert die Schraffur (progn (setq I -1);Variable für die Repeatfunktion (repeat (sslength AWS);schleife bis alles Schraffurobjekte abgearbeitet sind (setq OBJ (ssname AWS(setq I (1+ I))));arbeitet die Auswahlliste ab (command "_-hatchedit" OBJ "_B" "_P" "_Y");Befehl der dei Umgrenzung erzeugt );ende repeat );ende progn );ende if ; ; (command "clayer" lay1 );setzt den Layer wieder zurück (command "zoom" "objekt" AWS "");zoom auf die bearbeiteten Schraffuren (command "regen" ) (princ) ) ;Ende Hauptprogramm
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Geos Mitglied Vermessungstechniker i.R.
Beiträge: 1017 Registriert: 21.09.2001 ACAD Map 2010, Win 7 Pro eigene Lisp's<P>HW: Core i7 860, 2.8 GHz 3.3 GB, NVIDIA GeForce GTS 250
|
erstellt am: 17. Apr. 2013 19:40 <-- editieren / zitieren --> Unities abgeben: Nur für -ikarus-
Zitat: ... Die Möglichkeit, dass man mit Return weiter geht und dann alle gewählt werden funktioniert so nicht, oder?
Doch - in etwa so (quick and dirty):
Code: (princ "\nObjekte wählen / <Alle> ") (if (not aws (ssget)) (setq aws (ssget "X")) )
------------------ Schöne Grüße Ernst www.geopaint.at Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
-ikarus- Mitglied Zeichner
Beiträge: 142 Registriert: 12.02.2007 ACAD 2015,PSP 2011, Showcase 2015, Mudbox 2015 Indesign CC, Illustrator CC, Photoshop CC, After Effects CC, Premiere Pro CC, Edge Animate CC, Acrobat DC Pro mit PitStop Pro, Visual Studio 2013 Notepad++ Rechner: HP Z620 Workstation NVIDIA Quadro K4000
|
erstellt am: 18. Apr. 2013 06:53 <-- editieren / zitieren --> Unities abgeben:
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|