Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  Frieren von Xref-Layern mit Schleife

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:  Frieren von Xref-Layern mit Schleife (171 mal gelesen)
T_Kaulen
Mitglied
Architekt


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

Beiträge: 122
Registriert: 04.06.2004

Bricscad V21.1.06 Ultimate / 64bit
Windows 10 64bit

erstellt am: 02. Apr. 2005 21:47    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,
hab ein kleines Lispprogramm (lfx) mit dem ich ausgewählte Xref-Layer einzeln frieren kann. würde das ganze gern in der Form umschreiben wie ebenfalls angehängtes Lispprogramm (lfr) mit dem ich beliebig viele Zeichnungsobjekte auswählen kann, deren Layer dann gefroren werden. Die Schleife darin eingebaute Schleife läßt sich allerdings nicht so einfach übertragen (jedenfalls nicht mit meinen Lisp-Kentnissen).
Beide Lisproutinen hab ich vor langer Zeit mal geschrieben und kann mich mangels Übung an einzelheiten der Lispfunktionen nicht mehr so genau erinnern....
Wäre total nett, wenn sich jemand der mehr Ahnung davon hat meiner erbarmen würde und eine solche Schleife in die Funktion "lfx" einbauen würde, so dass ich auch dort beliebig viele Xref-Objekte könnte deren Layer (nicht der Xref-Einfüge-Layer !) dann gefroren würden.


Gruß
Thomas Kaulen

(defun c:lfr ()
(setvar "cmdecho" 0)
(prompt "\nBitte die Objekte auf den zu frierenden Layern wählen ")
(setq AUSW (ssget))
(if (= NIL AUSW)
  (setq COUNT 0)
  (setq COUNT (sslength AUSW)))
(while (> COUNT 0)
(setq COUNT (1- COUNT))
(setq ELEMENT (ssname AUSW COUNT))
(setq ENT (entget ELEMENT))
(setq L_NAME (cdr (assoc 8 ENT)))
(if (= L_NAME (getvar "CLAYER"))
(prompt (strcat "\nKann den Layer " L_NAME " nicht frieren, da es sich um den AKTUELLEN Layer handelt."))
(command "._LAYER" "_freeze" L_NAME "")
)
)
)


(defun c:lfx (/ olderr ocmd oosmd oblp zo)
  (setq olderr  *error* *error* myerror)
(setq ocmd (getvar "cmdecho"))
(setq oosmd (getvar "osmode"))
(setq oblp (getvar "blipmode"))
(setvar "cmdecho" 0)
(prompt "\nBitte XREF-, BLOCK-OBJEKT auf dem zu frierender Layer wählen ")
(setq zo (entget (car (nentsel))))
(setq L_NAME (cdr (assoc 8 zo)))
(setvar "cmdecho" 0)
  (if (= L_NAME (getvar "CLAYER"))
(prompt (strcat "\nKann den Layer " L_NAME " nicht frieren, da es sich um den AKTUELLEN Layer handelt."))
(command "._layer" "_freeze" L_NAME "" "")
)
(setvar "cmdecho" ocmd)
(setvar "osmode" oosmd)
(setvar "blipmode" oblp)
(setq *error* olderr)
(princ)
)

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

Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.

erstellt am: 03. Apr. 2005 09:31    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 T_Kaulen 10 Unities + Antwort hilfreich

Verschaltelte Objekte kann man nur mittels nentsel auswählen, ssget hilft da nicht weiter!
Versuchs mal mit diesem Ansatz:

(defun c:lfr (/ OBJ LAYER LAYERLISTE OCMD)
  (setq OCMD (getvar "cmdecho"))
  (princ "\nBitte die XREF-Objekte auf den zu frierenden Layern wählen: ")
  (while (setq OBJ(car(nentsel)))
    (setq LAYER(cdr(assoc 8(entget OBJ))))
    (if (and(not(member LAYER LAYERLISTE))(/= LAYER (getvar "CLAYER")))
      (setq LAYERLISTE(cons LAYER LAYERLISTE))
    ) 
  )
  (foreach LAYER LAYERLISTE   
    (command "._LAYER" "_freeze" LAYER "")
  )
  (setvar "cmdecho" OCMD) 
)

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

T_Kaulen
Mitglied
Architekt


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

Beiträge: 122
Registriert: 04.06.2004

erstellt am: 03. Apr. 2005 10: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

Zitat:
Original erstellt von CADmium:
Verschaltelte Objekte kann man nur mittels [b]nentsel auswählen, ssget hilft da nicht weiter!
Versuchs mal mit diesem Ansatz:

(defun c:lfr (/ OBJ LAYER LAYERLISTE OCMD)
  (setq OCMD (getvar "cmdecho"))
  (princ "\nBitte die XREF-Objekte auf den zu frierenden Layern wählen: ")
  (while (setq OBJ(car(nentsel)))
     (setq LAYER(cdr(assoc 8(entget OBJ))))
     (if (and(not(member LAYER LAYERLISTE))(/= LAYER (getvar "CLAYER")))
       (setq LAYERLISTE(cons LAYER LAYERLISTE))
     ) 
  )
  (foreach LAYER LAYERLISTE   
    (command "._LAYER" "_freeze" LAYER "")
  )
  (setvar "cmdecho" OCMD) 
)

[/B]



Danke,
aber nach Laden und aufrufen des Programms werden zwar Objekte zur Auswahl abgefragt, aber es wird kein verschachtelter Xre-Layer gefroren.
- Mach ich da was falsch ?
- Haben wir aneinander vorbeigeredet ?
- Die Funktion "defun c:lfx" die ich gepostet hatte benutzt doch auch "nentsel" es fehlt nur die Schleife zur Abfrage mehrerer Layer bzw. Auswahl mehrerer Objekte.

Gruß
Thomas K.

--> Habe gerade festgestellt, dass das Programm nur dann nicht funktioniert, wenn man in Xrefs enthaltene Blöcke auf den Layern, welche gefroren werden sollen anwählt. Dort scheint die Verschachtelung der Layerinformation demnach "noch tiefer" zu sitzen und über die Funktion nicht herausfilterbar. ODER DOCH ?

Deine Lisproutine funktioniert demanch doch, aber eben nur bei direkten Zeichnungselementen des Xrefs, nicht bei Blöcken des Xrefs.

Nochmals Danke
Thomas K.

[Diese Nachricht wurde von T_Kaulen am 03. Apr. 2005 editiert.]

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