Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Layer ändern mit oder ohne Auswahlsatz

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:  Layer ändern mit oder ohne Auswahlsatz (1957 mal gelesen)
MARTINLE
Mitglied
Tischler


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

Beiträge: 485
Registriert: 18.10.2007

AUTOCAD 2016,
MS Windows7, 64-bit

erstellt am: 10. Sep. 2013 14:16    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!

Komm mal wieder nicht weiter......


Folgende Aufgabe soll in einem Klick erledigt werden:

1) Setze den Layer auf den Namen Abdeckplatte. (der Layer ist in der Zeichnung schon vorhanden)
2) Wenn Objekte ausgewählt sind (Griffe aktiv) dann ändere den Layer der markierten Objekte auch in

Layer Abdeckplatte.
3) Wenn kein Objekt ausgewählt ist dann soll das Programm enden.

Zur Zeit ist es so:
Es kommt immer die Objektauswahl und wenn man beendet dann wird der Layer wieder zurückgestellt.
Nur wenn ein Objekt bereits ausgewählt ist dann funktioniert es.

Bitte um eure Hilfe.

Lg. Martin 

Das Buttonmakro lautet: ^C^C(if(null c:Abdeckplatte)(load"Abdeckplatte"));Abdeckplatte


(defun c:Abdeckplatte ()
(command "-layer" "se" "Abdeckplatte" "" )
  (tolayer
    (ssget "_:L") ;;selection
    "Abdeckplatte"        ;;Layer
    )
  (princ)
)

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

spider_dd
Mitglied



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

Beiträge: 1111
Registriert: 27.11.2003

Win 10Pro
Intel(R) Core(TM) i7-7700
NVIDIA Quadro P1000
ACAD, Civil-3D 2018

erstellt am: 10. Sep. 2013 14:50    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 MARTINLE 10 Unities + Antwort hilfreich

Hallo Martinle,

hier fehlt noch der Code für die Funktion tolayer
Da können wir nicht wissen, was diese Funktion macht.

Gruß
Thomas

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

MARTINLE
Mitglied
Tischler


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

Beiträge: 485
Registriert: 18.10.2007

AUTOCAD 2016,
MS Windows7, 64-bit

erstellt am: 10. Sep. 2013 15:15    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 Thomas!

Ich habe gesucht aber keine Funktion  tolayer gefunden. 
Ich habe schon ewig rumgeschnipselt und diese " tolayer" Funktion scheint übrig geblieben zu sein. Komisch ist nur, dass das Lisp funktioniert wenn ein Objekt markiert ist.

lg. Martin

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: 10. Sep. 2013 15:15    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 MARTINLE 10 Unities + Antwort hilfreich

quick & dirty:

(if (setq AWS (cadr(ssgetfirst)))
    (progn
      (command "_layer" "_make" "ABDECKPLATTE" "")
      (mapcar
        '(lambda(X / D)
            (and(=(type(cadr X))'ENAME)
                (setq D(entget (cadr X)))
                (entmod(subst (cons 8 "ABDECKPLATTE")(assoc 8 D)D))
            )   
          )
          (ssnamex AWS)
      )
    )
    (command "_layer" "_make" "ABDECKPLATTE" "")
  )
     

------------------
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

MARTINLE
Mitglied
Tischler


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

Beiträge: 485
Registriert: 18.10.2007

AUTOCAD 2016,
MS Windows7, 64-bit

erstellt am: 10. Sep. 2013 15:25    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 Thomas!

Dich kenn ich ja!
Danke für die Hilfe!
Beim Laden kommt aber die Fehlermeldung: Fehler: no function definition: /AWS

Ich hab es so gemacht:

(c:Abdeckplatte (/AWS)
(if (setq AWS (cadr(ssgetfirst)))
    (progn
      (command "_layer" "_make" "ABDECKPLATTE" "")
      (mapcar
        '(lambda(X / D)
            (and(=(type(cadr X))'ENAME)
                (setq D(entget (cadr X)))
                (entmod(subst (cons 8 "ABDECKPLATTE")(assoc 8 D)D))
            )   
          )
          (ssnamex AWS)
      )
    )
    (command "_layer" "_make" "ABDECKPLATTE" "")
  )
)

lg. Martin

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: 10. Sep. 2013 15:37    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 MARTINLE 10 Unities + Antwort hilfreich

(defun c:Abdeckplatte (/ AWS)
(if (setq AWS (cadr(ssgetfirst)))
    (progn
      (command "_layer" "_make" "ABDECKPLATTE" "")
      (mapcar
        '(lambda(X / D)
            (and(=(type(cadr X))'ENAME)
                (setq D(entget (cadr X)))
                (entmod(subst (cons 8 "ABDECKPLATTE")(assoc 8 D)D))
            )   
          )
          (ssnamex AWS)
      )
    )
    (command "_layer" "_make" "ABDECKPLATTE" "")
  )
)

------------------
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

MARTINLE
Mitglied
Tischler


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

Beiträge: 485
Registriert: 18.10.2007

AUTOCAD 2016,
MS Windows7, 64-bit

erstellt am: 10. Sep. 2013 15:56    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 Thomas!

Wenn ich das Lisp in die Zeichnung Lade und den Befehl Abdeckplatte in die Befehlszeile eingebe funktioniert alles wunderbar. Nur wenn ich über den Button starte mit

^C^C(if(null c:Abdeckplatte)(load"Abdeckplatte"));Abdeckplatte

dann wird immer "Objekte wählen" ausgegeben.
Dies passiert nur wenn kein Objekt ausgewählt ist!
Woran kann das liegen?

lg. Martin

[Diese Nachricht wurde von MARTINLE am 10. Sep. 2013 editiert.]

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

MARTINLE
Mitglied
Tischler


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

Beiträge: 485
Registriert: 18.10.2007

AUTOCAD 2016,
MS Windows7, 64-bit

erstellt am: 10. Sep. 2013 16: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

Hallo Thomas!

Nochmal genauer:
Wenn ein Objekt markiert ist funktioniert es auch im "Button" wunderbar.
Nur wenn kein Objekt markiert ist kommt die Abfrage "Objekt wählen".
Wenn kein Objekt gewählt ist sollte das Lisp nach der Layerumstellung einfach enden (ohne Objekt wählen).

lg. Martin

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: 11. Sep. 2013 09:35    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 MARTINLE 10 Unities + Antwort hilfreich

ein Leerzeichen im Buttonmakro zu viel, was den letzten Befehl wieder aufruft ?  .... Im Programm selbst wird nirgends zur Objektauswahl aufgefordert !

------------------
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

MARTINLE
Mitglied
Tischler


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

Beiträge: 485
Registriert: 18.10.2007

AUTOCAD 2016,
MS Windows7, 64-bit

erstellt am: 11. Sep. 2013 09:45    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 Thomas.

Ich hab's noch mal getestet und herausgefunden wenn ich eine neue Zeichnung anfange und nur dein Lisp verwende funktionieren beide varianten.
Wenn ich aber mein ursprüngliches Programm aufrufe und danach wieder dein Lisp dann kommt die Abfrage Objekt wählen.
Die Lösung ist für mich einfach:
Altes Lisp raus--> neues rein! Dann passt es. 

Danke für deine Hilfe!

Lg. Martin

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