| | | 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: Nur Elemente in die Auswahl nehmen, welche nicht deaktiviert+nicht gefrorenen sind (291 / mal gelesen)
|
neo4matrix Mitglied
Beiträge: 152 Registriert: 15.01.2008 HP™ z2 Tower G4 Workstation mit Intel® Core™ i9-9900K 8x 3.6 GHz-5.0 GHz 32 GB Arbeitsspeicher 1 TB HP Z Turbo PCIe® SSD NVIDIA® Quadro® P2200 mit 5 GB RAM HP™ 24" LPS LED TFT 16:10 ZR2440w. Windows 10 Pro, 64 Bit AutoCAD 2019 Design Suite Standard, SP1, 64 Bit ecscad 2019, v19.1.0.20, 64 Bit Microstation v8 2004, 32 Bit MicroStation CONNECT Edition Update 11 Microsoft Office 365, 32 Bit Microsoft Visio 2013, 32 Bit
|
erstellt am: 02. Sep. 2024 11:24 <-- editieren / zitieren --> Unities abgeben:
Hallo Gemeinde Wie ergänze ich das folgende LISP Schnipsel, dass es nur noch Elemente in die Auswahl mitnimmt, welche auf nicht ausgeschalteten und nicht gefrorenen Layern sind: (ssget "X" '((-4 . "<OR")(62 . 40)(62 . 44)(62 . 30)(62 . 34)(-4 . "OR>"))) Besten Dank für jeden Tipp. Gruss neo [Diese Nachricht wurde von neo4matrix am 03. Sep. 2024 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 02. Sep. 2024 12:19 <-- editieren / zitieren --> Unities abgeben: Nur für neo4matrix
Hallo Neo, ich glaube, das muss über eine gesonderte Funktion gemacht werden, weil es sich ja um Layereigenschaften handelt, und diese in der SSGET-Filterliste nicht direkt geprüft werden können. Wie folgt könnte es funktionieren, ist aber ungetestet: Code:
(defun c:test ( / AWS) (if(and (setq aws(ssget "X" '((-4 . "<OR")(62 . 40)(62 . 44)(62 . 30)(62 . 34)(-4 . "OR>")))) (setq aws (LayerCheck aws)) ) aws) ) (defun LayerCheck (aws / AWS1 N VLA-LAYER VLA-OBJ) (setq aws1 (ssadd)) (setq n 0) (repeat (sslength aws) (setq vla-obj (vlax-ename->vla-object(ssname aws n))) (setq vla-layer (vla-item(vla-get-blocks(vla-get-activedocument(vlax-get-acad-object))) (vla-get-layer vla-obj)) ) (if (and(=(vla-get-freeze vla-layer):vlax-false) (=(vla-get-LayerOn vla-layer):vlax-true)) (ssadd (ssname aws n)aws1) ) (setq n (+ n 1)) ) (if (>(sslength aws1)0) aws1) )
Arbeitsweise: 1. Auswahlsatz bilden 2. Gesonderte Funktion, in der der gesamte Auswahlsatz zum prüfen durchlaufen wird 3. Es wird zum Objekt der Eintrag der Layertabelle harausgezogen und auf die Eigenschaften FREEZE und LAYERON geprüft ------------------ viele Grüße Jörn http://www.bosse-engineering.com das Flächenstempel_Tool(2023) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADwiesel Moderator CAD4FM UG
Beiträge: 1989 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 02. Sep. 2024 12:19 <-- editieren / zitieren --> Unities abgeben: Nur für neo4matrix
|
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 02. Sep. 2024 12:30 <-- editieren / zitieren --> Unities abgeben: Nur für neo4matrix
Hi, Hi, >>"und nicht gefrorenen Layern sind:" SSGET Wahlmethode A bzw. ALL >>" welche auf nicht deaktivierten" Meinst du Layer mit der Eigenschaft EIN = Nein, also AUS ? "Deaktiviert" gibt es nicht. Dafür gibt es keine Wahlmethode, zumindest keine direkte wie X oder A, man könnte aber eine Fenster oder Kreuzenwahl nutzen, diese wählt nur Objekte welche angezeigt werden. Die für den häufigsten Fälle sauberste Variante wäre wohl: Layerliste erstellen (der ausgeschalteten und gefrorenen Layer), Auswahlsatz mit entsprechender Filterliste erstellen. Auswahlsatz erstellen, Layerliste erstellen (der ausgeschalteten und gefrorenen Layer), Objekte dieser Layer aus dem Auswahlsatz entfernen. @K.I. Bist du es selbst? Freut mich dich kennenzulernen Deine irgendwo herausgelesenen Gruppencodes sind für Layer-Objekte, nicht für grafische Objekte, Version-unabhängig - nie. Wenngleich man auch mal gc70 oder gc290 an Objekten finden kann, aber mit Layern haben sie dann nichts zutun.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
neo4matrix Mitglied
Beiträge: 152 Registriert: 15.01.2008 HP™ z2 Tower G4 Workstation mit Intel® Core™ i9-9900K 8x 3.6 GHz-5.0 GHz 32 GB Arbeitsspeicher 1 TB HP Z Turbo PCIe® SSD NVIDIA® Quadro® P2200 mit 5 GB RAM HP™ 24" LPS LED TFT 16:10 ZR2440w. Windows 10 Pro, 64 Bit AutoCAD 2019 Design Suite Standard, SP1, 64 Bit ecscad 2019, v19.1.0.20, 64 Bit Microstation v8 2004, 32 Bit MicroStation CONNECT Edition Update 11 Microsoft Office 365, 32 Bit Microsoft Visio 2013, 32 Bit
|
erstellt am: 03. Sep. 2024 08:14 <-- editieren / zitieren --> Unities abgeben:
hallo cadffm mit deaktiviert meine ich die Glühbirne EIN/AUS. Mein LISP Schnipsel soll nichts ausgeblendetes oder gefrorenes mitnehmen. So, wie wenn der User es mit der Maus markieren würde. Ein Fenster kommt darum nicht in Frage. Ich Kann "X" mit "A" ersetzen? Dann wären die gefrorenen Elemente schon mal weg? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 03. Sep. 2024 08:43 <-- editieren / zitieren --> Unities abgeben: Nur für neo4matrix
Zitat: Original erstellt von neo4matrix: mit deaktiviert meine ich die Glühbirne EIN/AUS.
In einer DWG werden keine Glühbirnen verbaut, sondern z.B. Modelle von Glühbirnen gezeichnet. Es gibt viele Möglichkeiten, diese modellhaften Zeichnungen so zu gestalten, dass sie eine ein- oder ausgeschaltete Glühbirne darstellen. Welche Methode verwendest Du? Eine Möglichkeit wäre, die Sichtbarkeit von Leuchtteilen durch Layer zu schalten. Dann geht es hier um Layer. Es könnte auch sein, dass dafür Blockreferenzen ausgetauscht werden, und dann geht es um Blockreferenzen. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 03. Sep. 2024 08:58 <-- editieren / zitieren --> Unities abgeben: Nur für neo4matrix
Hi, >>"Ein Fenster kommt darum nicht in Frage" Verstehe ich nicht, gerade mit deiner Erklärung ist doch die Fenster- , besser Kreuzenwahl, genau das was du beschreibst!? >>" Ich Kann "X" mit "A" ersetzen? Dann wären die gefrorenen Elemente schon mal weg?" Ja.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
neo4matrix Mitglied
Beiträge: 152 Registriert: 15.01.2008 HP™ z2 Tower G4 Workstation mit Intel® Core™ i9-9900K 8x 3.6 GHz-5.0 GHz 32 GB Arbeitsspeicher 1 TB HP Z Turbo PCIe® SSD NVIDIA® Quadro® P2200 mit 5 GB RAM HP™ 24" LPS LED TFT 16:10 ZR2440w. Windows 10 Pro, 64 Bit AutoCAD 2019 Design Suite Standard, SP1, 64 Bit ecscad 2019, v19.1.0.20, 64 Bit Microstation v8 2004, 32 Bit MicroStation CONNECT Edition Update 11 Microsoft Office 365, 32 Bit Microsoft Visio 2013, 32 Bit
|
erstellt am: 03. Sep. 2024 10:14 <-- editieren / zitieren --> Unities abgeben:
hallo Joern Bosse das scheint nicht zu funktionieren. Und ich bin auch nicht in der Lage, den Fehler zu finden. Sind das 2 Kommandos? Das zweite LAYERCHECK kann ich nicht in der Befehlszeile eingeben Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 03. Sep. 2024 11:55 <-- editieren / zitieren --> Unities abgeben: Nur für neo4matrix
|
neo4matrix Mitglied
Beiträge: 152 Registriert: 15.01.2008 HP™ z2 Tower G4 Workstation mit Intel® Core™ i9-9900K 8x 3.6 GHz-5.0 GHz 32 GB Arbeitsspeicher 1 TB HP Z Turbo PCIe® SSD NVIDIA® Quadro® P2200 mit 5 GB RAM HP™ 24" LPS LED TFT 16:10 ZR2440w. Windows 10 Pro, 64 Bit AutoCAD 2019 Design Suite Standard, SP1, 64 Bit ecscad 2019, v19.1.0.20, 64 Bit Microstation v8 2004, 32 Bit MicroStation CONNECT Edition Update 11 Microsoft Office 365, 32 Bit Microsoft Visio 2013, 32 Bit
|
erstellt am: 03. Sep. 2024 13:45 <-- editieren / zitieren --> Unities abgeben:
@cadffm Ziel der LISP soll sein, dass beim Ausführen alle gelben Elemente selektiert werden, und für einen nächsten Befehlt wie z.B. Löschen parat sind. Also ohne, dass der User mit der Maus etwas wählen muss. Code: (ssget "A" '((-4 . "<OR")(62 . 40)(62 . 44)(62 . 30)(62 . 34)(62 . 49151)(62 . 32767)(-4 . "OR>"))) (defun c:LetzteAuswahl ()(sssetfirst nil (ssget"_P"))) LetzteAuswahl
[Diese Nachricht wurde von neo4matrix am 03. Sep. 2024 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
neo4matrix Mitglied
Beiträge: 152 Registriert: 15.01.2008 HP™ z2 Tower G4 Workstation mit Intel® Core™ i9-9900K 8x 3.6 GHz-5.0 GHz 32 GB Arbeitsspeicher 1 TB HP Z Turbo PCIe® SSD NVIDIA® Quadro® P2200 mit 5 GB RAM HP™ 24" LPS LED TFT 16:10 ZR2440w. Windows 10 Pro, 64 Bit AutoCAD 2019 Design Suite Standard, SP1, 64 Bit ecscad 2019, v19.1.0.20, 64 Bit Microstation v8 2004, 32 Bit MicroStation CONNECT Edition Update 11 Microsoft Office 365, 32 Bit Microsoft Visio 2013, 32 Bit
|
erstellt am: 03. Sep. 2024 13:48 <-- editieren / zitieren --> Unities abgeben:
|
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 03. Sep. 2024 14:06 <-- editieren / zitieren --> Unities abgeben: Nur für neo4matrix
Zitat: Original erstellt von neo4matrix: @cadffm Ziel der LISP soll sein, dass beim Ausführen alle gelben Elemente selektiert werden, und für einen nächsten Befehlt wie z.B. Löschen parat sind. Also ohne, dass der User mit der Maus etwas wählen muss. Du darfst musst die Fenster-Koordinaten direkt im Lisp mitgeben! (ssget "_C" (getvar 'EXTMIN)(getvar 'EXTMAX) '((-4 . "<or")(62 . 30)(62 . 34)(-4 . "or>"))) [code](ssget "A" '((-4 . "<OR")(62 . 40)(62 . 44)(62 . 30)(62 . 34)(62 . 49151)(62 . 32767)(-4 . "OR>")))[/i]
Was soll denn das sein? -> (62 . 49151)(62 . 32767) gc62 für die Objektfarbe ist zuständig für die Angabe der ACI Farben, die gehen inkl. VonLayer und VonBlock von 0 bis 255. Kannst du mir eine Beispieldatei für die Fälle >255 zeigen? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 03. Sep. 2024 14:37 <-- editieren / zitieren --> Unities abgeben: Nur für neo4matrix
Zitat: Original erstellt von neo4matrix: Es kommt nur:
Code: Befehl: TEST ; Fehler: Automatisierungsfehler Schlüssel nicht gefunden
Ich war so frei und habe den Fehler korrigiert, dazu habe ich noch sssetfirst ergänzt, ansonsten hast du nichts von der Routine. Code: (defun c:test ( / AWS) (if(and (setq aws(ssget "X" '((-4 . "<OR")(62 . 40)(62 . 44)(62 . 30)(62 . 34)(-4 . "OR>")))) (setq aws (LayerCheck aws)) ) (sssetfirst nil aws) ) ) (defun LayerCheck (aws / AWS1 N VLA-LAYER VLA-OBJ) (setq aws1 (ssadd)) (setq n 0) (repeat (sslength aws) (setq vla-obj (vlax-ename->vla-object(ssname aws n))) (setq vla-layer (vla-item(vla-get-layers(vla-get-activedocument(vlax-get-acad-object))) (vla-get-layer vla-obj)) ) (if (and(=(vla-get-freeze vla-layer):vlax-false) (=(vla-get-LayerOn vla-layer):vlax-true)) (ssadd (ssname aws n)aws1) ) (setq n (+ n 1)) ) (if (>(sslength aws1)0) aws1) )
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
neo4matrix Mitglied
Beiträge: 152 Registriert: 15.01.2008 HP™ z2 Tower G4 Workstation mit Intel® Core™ i9-9900K 8x 3.6 GHz-5.0 GHz 32 GB Arbeitsspeicher 1 TB HP Z Turbo PCIe® SSD NVIDIA® Quadro® P2200 mit 5 GB RAM HP™ 24" LPS LED TFT 16:10 ZR2440w. Windows 10 Pro, 64 Bit AutoCAD 2019 Design Suite Standard, SP1, 64 Bit ecscad 2019, v19.1.0.20, 64 Bit Microstation v8 2004, 32 Bit MicroStation CONNECT Edition Update 11 Microsoft Office 365, 32 Bit Microsoft Visio 2013, 32 Bit
|
erstellt am: 03. Sep. 2024 14:49 <-- editieren / zitieren --> Unities abgeben:
@cadffm Parallel habe ich das mit punkt 1 und punkt 2 für den Bereich "_C" auch hinbekommen. Habe aber Zahlen genommen: (ssget"_C" '(-100000000 -100000000) '(100000000 100000000) Besten Dank. EXTMIN und EXTMAX ist der aktuelle Zeichnungsbereich im RAM? (62 . 49151) ist RGB der Farbe 30 (62 . 32767) ist RGB der Farbe 40 Red + (Green*256) + (Blue*65536) Beispiele: Farbe Weiss => RGB 255,255,255 => 16777215 30 => 255,127,0 => 32767 40 => 255,191,0 => 49151 Mein finaler Coder lautet nun:
Code: (ssget "_C" '(-100000000 -100000000) '(100000000 100000000) '((-4 . "<OR")(62 . 40)(62 . 44)(62 . 30)(62 . 34)(62 . 49151)(62 . 32767)(-4 . "OR>"))) (defun c:LetzteAuswahl ()(sssetfirst nil (ssget"_P"))) LetzteAuswahl
[Diese Nachricht wurde von neo4matrix am 03. Sep. 2024 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
neo4matrix Mitglied
Beiträge: 152 Registriert: 15.01.2008 HP™ z2 Tower G4 Workstation mit Intel® Core™ i9-9900K 8x 3.6 GHz-5.0 GHz 32 GB Arbeitsspeicher 1 TB HP Z Turbo PCIe® SSD NVIDIA® Quadro® P2200 mit 5 GB RAM HP™ 24" LPS LED TFT 16:10 ZR2440w. Windows 10 Pro, 64 Bit AutoCAD 2019 Design Suite Standard, SP1, 64 Bit ecscad 2019, v19.1.0.20, 64 Bit Microstation v8 2004, 32 Bit MicroStation CONNECT Edition Update 11 Microsoft Office 365, 32 Bit Microsoft Visio 2013, 32 Bit
|
erstellt am: 03. Sep. 2024 15:04 <-- editieren / zitieren --> Unities abgeben:
|
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 03. Sep. 2024 15:17 <-- editieren / zitieren --> Unities abgeben: Nur für neo4matrix
[QUOTE]Original erstellt von neo4matrix: @cadffm EXTMIN und EXTMAX ist der aktuelle Zeichnungsbereich im RAM?
[F1] Extmin/Extmax, Ich sage einfach mal "Ja" - Der kann zwar mal größer als der aktuell verwendete Zeichenbereich sein, aber nie kleiner, also sollte die Kreuzenwahl alles sichbare wählen (62 . 49151) ist RGB der Farbe 30 <- wie gesagt, ich denke gc62 ist nur für die ACI Farben 0-255 zuständig (62 . 32767) ist RGB der Farbe 40 [/i]<- wie gesagt, ich denke gc62 ist nur für die ACI Farben 0-255 zuständig Zusätzlich kommt noch der Umstand das diese RGB-Werte NICHT in DXF/DWG verwendung finden! Also falsche Werte in falschen Gruppencodes, diese Filter werden nie etwas filtern.
Red + (Green*256) + (Blue*65536) Beispiele: Farbe Weiss => RGB 255,255,255 => 16777215<- AUSNAHME was den Wert angeht, aber der gc bleibt auch hier fasch[i] 30 => 255,127,0 => 32767 40 => 255,191,0 => 49151 16777215 32767 16809982 <- Rein ACI30 bei schwarzem Hintergrund ist aber 16744192, zudem hast du 32767 im Code geschrieben, wobei aber weder 32767, 16809982 noch mein 16744192 ein Ergebnis liefern würden. Korrigiere mich, wenn ich daneben liege! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
neo4matrix Mitglied
Beiträge: 152 Registriert: 15.01.2008 HP™ z2 Tower G4 Workstation mit Intel® Core™ i9-9900K 8x 3.6 GHz-5.0 GHz 32 GB Arbeitsspeicher 1 TB HP Z Turbo PCIe® SSD NVIDIA® Quadro® P2200 mit 5 GB RAM HP™ 24" LPS LED TFT 16:10 ZR2440w. Windows 10 Pro, 64 Bit AutoCAD 2019 Design Suite Standard, SP1, 64 Bit ecscad 2019, v19.1.0.20, 64 Bit Microstation v8 2004, 32 Bit MicroStation CONNECT Edition Update 11 Microsoft Office 365, 32 Bit Microsoft Visio 2013, 32 Bit
|
erstellt am: 04. Sep. 2024 08:38 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von cadffm: [QUOTE]Also falsche Werte in falschen Gruppencodes, diese Filter werden nie etwas filtern.
Warum funktioniert es dann? Ich habe eine Test.dwg mit Linien mit den Farben 30+40 sowie RGB-Version. Und der Befehl markiert alle Linine. Auch die RGB Versionen Code: (defun c:LetzteAuswahl ()(sssetfirst nil (ssget"_A" '((-4 . "<OR")(62 . 30)(62 . 40)(62 . 49151)(62 . 32767)(-4 . "OR>"))))) LetzteAuswahl
[Diese Nachricht wurde von neo4matrix am 10. Sep. 2024 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 04. Sep. 2024 09:21 <-- editieren / zitieren --> Unities abgeben: Nur für neo4matrix
Moin, >>"Ich habe eine Test.dwg " Anmerkung: "Test.dwg" ist ein wirklich schlechter Name für Anhänge auf CAD.de, es wird doch nur 1 Upload-Verzeichnis pro User geführt in welchem alle Anhänge des Users gespeichert werden und wie es immer geschrieben steht: Neu schlägt Alt, du überschreibst die alte Datei gleichen Namens -> der alter Thread von zum Teil oder Vollständig zerstört >>"Warum funktioniert es dann?" >>" Und der Befehl markiert alle Linine. Auch die RGB Versionen" Weil du alles zusammen im Filter hast und in deinen Beispielen der weiterhin vorhandene gc62 den korrospondierenden(?) ACI Wert aufweist! Du solltest dir Objektdaten einmal ansehen wenn du diese manipulieren willst! EDIT Im Anhang findest du eine DWG mit 3 vier Kreispaaren, teste deine und meine Codeschnipsel in dieser Datei! Aber zuerst, schaue dir die Objektedaten an (entget(car(entsel))) /EDIT Versuche es doch mal damit: (sssetfirst nil (ssget"_A" '((-4 . "<OR")(62 . 49151)(62 . 32767)(-4 . "OR>")))) Und? Aber selbst wenn man es richtig schreibst, mit den Werten wird das nichts: (sssetfirst nil (ssget"_A" '((-4 . "<OR")(420 . 49151)(420 . 32767)(-4 . "OR>")(430 . ""))))
Und auch mit meinen Werten kann das Ergebnis "falsch" sein, diesen Code in meiner Datei: (sssetfirst nil (ssget"_A" '((-4 . "<OR")(420 . 16744192)(420 . 16760576)(-4 . "OR>")))) wohingegen es so funktioniert (allerdings gibt es ja Viele ähnliche Truecolor-Werte welche alle zB. dem ACI30 zugeschrieben werden) (sssetfirst nil (ssget"_A" '((-4 . "<OR")(420 . 16744192)(420 . 16760576)(-4 . "OR>")(430 . "")))) Ich hoffe mein letztes (richtig funktionierende) Beispiel hilft dir bei der Verbesserung deiner Funktion
Code: (defun c:LetzteAuswahl ()(sssetfirst nil (ssget"_A" '((-4 . "<OR")(62 . 30)(62 . 40)(62 . 49151)(62 . 32767)(-4 . "OR>"))))) LetzteAuswahl
[/i][/QUOTE] Das ist mir oben schon aufgefallen, wo/wie setzt du das ein? Ich beziehe mich da auf den Befehlsausruf zum Schluss, das ist echt verwirrend. Wo hast du das herumlieben und wann/wie führst du das aus? Das würde mich echt interessieren. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 04. Sep. 2024 09:51 <-- editieren / zitieren --> Unities abgeben: Nur für neo4matrix
Wobei ich anmerken möchte: Solange du ALLE Objekte wählen möchtest (ACI30, wie auch TRUECOLOR-Werte welche dem ACI30 angenähert sind), dann kannst du eigentlich einfach (62 . 30) filter und fertig! Möchtest du hingegen alle mit ACI30 und mit einem ganz bestimmten Truecolor-Wert, dann musst du es so machen wie ich oben zeigte. Dann kommt noch die Frage wie du es mit Objekten hälst welche eine Farbbuch-Farbe aufweisen, wenn du diese einschließen möchtest, dann muss man nichts weiter beachten, möchtest du diese aber ausschließen, dann kannst du es wie oben gezeigt mit (430 . "") erreichen (da wir annehmen das eine Farbbuch-Farbe auch immer einen Namen hat der mind. 1 Zeichen lang ist) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
neo4matrix Mitglied
Beiträge: 152 Registriert: 15.01.2008 HP™ z2 Tower G4 Workstation mit Intel® Core™ i9-9900K 8x 3.6 GHz-5.0 GHz 32 GB Arbeitsspeicher 1 TB HP Z Turbo PCIe® SSD NVIDIA® Quadro® P2200 mit 5 GB RAM HP™ 24" LPS LED TFT 16:10 ZR2440w. Windows 10 Pro, 64 Bit AutoCAD 2019 Design Suite Standard, SP1, 64 Bit ecscad 2019, v19.1.0.20, 64 Bit Microstation v8 2004, 32 Bit MicroStation CONNECT Edition Update 11 Microsoft Office 365, 32 Bit Microsoft Visio 2013, 32 Bit
|
erstellt am: 04. Sep. 2024 13:48 <-- editieren / zitieren --> Unities abgeben:
@cadffm WOW vielen Dank 🤯 OK, das wusste ich nicht mit dem Upload-Dateinamen 😥 (420 . x) kannte ich nicht. Das sind also die RGB Werte. Und wie berechne ich diese? meine Befehlszeile heisst also nun: Code: (defun c:LetzteAuswahl ()(sssetfirst nil (ssget"_C" '(-100000000 -100000000) '(100000000 100000000) '((-4 . "<OR")(62 . 40)(62 . 44)(62 . 30)(62 . 34)(420 . 16744192)(420 . 16760576)(-4 . "OR>")(430 . ""))))) LetzteAuswahl
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 04. Sep. 2024 14:42 <-- editieren / zitieren --> Unities abgeben: Nur für neo4matrix
>>"OK, das wusste ich nicht mit dem Upload-Dateinamen"Ja, das ist auch total bescheiden - aber wir User können es nicht ändern und die Chefetage sagt: Isso Siehe Anhang >>"(420 . x) kannte ich nicht." Den 430er dann vermutlich auch nicht, aber die Farbbücher werden ja auch eher selten verwendet.
>>"Das sind also die RGB Werte. Und wie berechne ich diese?" 420er sind die Truecolorwerte, der 62er existiert dennoch dazu. Der 430er ist die Farbbuch-Farbe, der 62er und 420er existieren dennoch dazu. Fertige Funktionen zum hin&her berechnen sollten imo alle in der Beispieldatei color-util.lsp zu finden, falls du das LispTutorial installiert hast. Suche im Programmverzeichnis nach der Datei - sollte in /Sample/VisualLISP/ liegen.
>>"meine Befehlszeile heisst also nun:" Ich verstehe es noch immer nicht. (defun c:LetzteAuswahl............) definiert eine Funktion und stellt diese als AutoCAD-Befehl zur Verfügung, das passiert für gewöhnlich durch laden einer Lispdatei (wie auch immer das geschieht). Danach steht dir der Befehl LetzteAuswahl zur Verfügung. Dein "meine Befehlszeile heisst also nun" macht mich noch kirre Hört sich so an als ob jemand eine dummer Textdatei öffnet, Text markiert, diesen in die Befehlszeile einfügt und sich über das Ergebnis freut, immer und immer wieder.. Statt die Funktion immer (automatisch) zur verfügung zu stellen und man einfach den Befehl LetzteAuswahl startet.
Moment mal. Mir fällt gerade auf das der Funktionsname allgemeingültig ist, die Funktion aber extrem spezifisch ist (auf bestimmte Farben abgestimmt). Lass mich raten, die "vorherigen Objekte" und ggf. auch die Farben werden zuvor durch ein anderes Tool erzeugt/verarbeitetet? Rätselraten macht Laune, besonders wenn die Auflösung noch genannt wird. >>(ssget"_C" '(-100000000 -100000000) '(100000000 100000000) Ich finde es zwar gut wenn nichts außerhalb dieses Fensters liegt, aber meine Vorschlag würde praktisch immer funktionieren, deine Fenster in besonderen Fällen (außerhalb 100000000) nicht.
>>"(420 . 16744192)(420 . 16760576)" Das macht praktisch keinen Sinn wenn du ohnehin gc62 Wert 30 und 40 filterst, dann sind die 420er überflüssig! (420 . 16744192)(420 . 16760576) wird immer auch gc62 30 bzw 40 aufweisen.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 04. Sep. 2024 14:43 <-- editieren / zitieren --> Unities abgeben: Nur für neo4matrix
|
neo4matrix Mitglied
Beiträge: 152 Registriert: 15.01.2008 HP™ z2 Tower G4 Workstation mit Intel® Core™ i9-9900K 8x 3.6 GHz-5.0 GHz 32 GB Arbeitsspeicher 1 TB HP Z Turbo PCIe® SSD NVIDIA® Quadro® P2200 mit 5 GB RAM HP™ 24" LPS LED TFT 16:10 ZR2440w. Windows 10 Pro, 64 Bit AutoCAD 2019 Design Suite Standard, SP1, 64 Bit ecscad 2019, v19.1.0.20, 64 Bit Microstation v8 2004, 32 Bit MicroStation CONNECT Edition Update 11 Microsoft Office 365, 32 Bit Microsoft Visio 2013, 32 Bit
|
erstellt am: 04. Sep. 2024 18:41 <-- editieren / zitieren --> Unities abgeben:
@cadffm: Danke für die Aufklärung. Dieses c:LetzteAuswahl ist nur eine Notlösung, weil (command "_select" "_p" "") nie funktioniert hat, und ich die Element markiert haben will. Allerdings sehe ich, dass es mit deinem LISP Code geht 🤯 Mit Befehlszeile meine ich: Während dem Testen kopiere ich das Ganze in die Befehlszeile. Sobald es läuft wie gewünscht entsteht daraus eine Schaltfläche oder LISP File. Den Rest muss ich noch anschauen... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 04. Sep. 2024 19:31 <-- editieren / zitieren --> Unities abgeben: Nur für neo4matrix
(command "_select" "_p" "") funktioniert nicht, weil der Befehl WAHL/SELECT früher nur einen Auswahlsatz erstellte, aber keine Markierung und keine Auswahl. In der Automation wird der alte Befehl verwendet, so funktionieren die bisherigen Scripte, Makros, (send)commands noch immer.. So würde es aktuell funktionieren: (progn(initcommandversion)(command "_select" "_p" "")) allerdings ist das eine schlechte Wahl 1. Du weißt nicht ob der Befehl zukünftig noch einmal relevant ändert (und dein code dann nicht mehr läuft) und 2. ist dieses "neue" Verhalten gekoppelt an die Einstellung von PICKADD, also musst du auch noch Pickadd kontrollieren damit dein Code immer sauber läuft. Dann doch lieber sssetfirst nutzen, das ist unabhängig von Pickadd und der AutoCAD-Version, zumindest wenn das erste Argument nil ist >>"Mit Befehlszeile meine ich: " DANKE, so macht das Sinn. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
neo4matrix Mitglied
Beiträge: 152 Registriert: 15.01.2008 HP™ z2 Tower G4 Workstation mit Intel® Core™ i9-9900K 8x 3.6 GHz-5.0 GHz 32 GB Arbeitsspeicher 1 TB HP Z Turbo PCIe® SSD NVIDIA® Quadro® P2200 mit 5 GB RAM HP™ 24" LPS LED TFT 16:10 ZR2440w. Windows 10 Pro, 64 Bit AutoCAD 2019 Design Suite Standard, SP1, 64 Bit ecscad 2019, v19.1.0.20, 64 Bit Microstation v8 2004, 32 Bit MicroStation CONNECT Edition Update 11 Microsoft Office 365, 32 Bit Microsoft Visio 2013, 32 Bit
|
erstellt am: 05. Sep. 2024 17:12 <-- editieren / zitieren --> Unities abgeben:
ich habe die color-util.lsp gefunden und mit appload geladen. ich habe keinen Plan, wie ich das lisp verwenden kann, um aus RGB Werten oder Index-Farb-Nummern einen 420er Code zu generieren 😥 OK so kann man es herausfinden. Element z.B. Linie zeichnen. RGB Farbe geben. Linie selektieren.
Code: (entget(car(entsel)))
Attribut 420 suchen. Fertig. [Diese Nachricht wurde von neo4matrix am 10. Sep. 2024 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
neo4matrix Mitglied
Beiträge: 152 Registriert: 15.01.2008 HP™ z2 Tower G4 Workstation mit Intel® Core™ i9-9900K 8x 3.6 GHz-5.0 GHz 32 GB Arbeitsspeicher 1 TB HP Z Turbo PCIe® SSD NVIDIA® Quadro® P2200 mit 5 GB RAM HP™ 24" LPS LED TFT 16:10 ZR2440w. Windows 10 Pro, 64 Bit AutoCAD 2019 Design Suite Standard, SP1, 64 Bit ecscad 2019, v19.1.0.20, 64 Bit Microstation v8 2004, 32 Bit MicroStation CONNECT Edition Update 11 Microsoft Office 365, 32 Bit Microsoft Visio 2013, 32 Bit
|
erstellt am: 10. Sep. 2024 17:52 <-- editieren / zitieren --> Unities abgeben:
Mein finales LISP "Auswahl_nach_Farbe.lsp", welches einige Befehle (F10, F40, F90) zur Verfügung stellt, um alle Elemente mit diversen Farb-Kombinationen zu selektieren, welche weder auf deaktivierten Layern (Glühbirne) sind, noch auf gefrorenen Layern sind. Für die Anpassung an Eure Bedürfnisse, könnt ihr mit dem LISP "ElementInfos.lsp" die TrueColor Werte bestehender Elemente mit der gewünschten Farbe auslesen. Der neue Befehl "ElementInfos" macht im Prinzip nur: (entget(car(entsel))) Schöne Grüsse, ich habe fertig. Mein Dank gilt: joern bosse und cadffm mfg neo Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
neo4matrix Mitglied
Beiträge: 152 Registriert: 15.01.2008 HP™ z2 Tower G4 Workstation mit Intel® Core™ i9-9900K 8x 3.6 GHz-5.0 GHz 32 GB Arbeitsspeicher 1 TB HP Z Turbo PCIe® SSD NVIDIA® Quadro® P2200 mit 5 GB RAM HP™ 24" LPS LED TFT 16:10 ZR2440w. Windows 10 Pro, 64 Bit AutoCAD 2019 Design Suite Standard, SP1, 64 Bit ecscad 2019, v19.1.0.20, 64 Bit Microstation v8 2004, 32 Bit MicroStation CONNECT Edition Update 11 Microsoft Office 365, 32 Bit Microsoft Visio 2013, 32 Bit
|
erstellt am: 10. Sep. 2024 18:01 <-- editieren / zitieren --> Unities abgeben:
|
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|