Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Block auf Layer

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:  Block auf Layer (679 mal gelesen)
Dober Heinz
Mitglied
Technischer Zeichner


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

Beiträge: 1143
Registriert: 20.12.2002

erstellt am: 14. Jul. 2005 15:48    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 Lispler

Suche ein Lisp wo ich meine Blöcke auf Layer (z.B. --E-Starkstrom) legen kann. Die Blöcke sind jetzt von Layer, möchte mir einen zweiten Blocksatz herrichten wo die Blöcke beim einfügen gleich auf den richtigen Layer eingefügt werden. sind ungefähr 500 blöcke und die alle Einzel änder ist viel aufwand.
danke heinz
mit Suche nichts gefunden

------------------
Heinz 

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

tunnelbauer
Ehrenmitglied V.I.P. h.c.
Bauingenieur



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

Beiträge: 7085
Registriert: 13.01.2004

ich hab eh keine Probleme damit...

erstellt am: 14. Jul. 2005 16:36    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 Dober Heinz 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Dober Heinz:
Die Blöcke sind jetzt von Layer....

Was ist passiert ? Wo sind die Blöcke jetzt ? VonLayer ? Was ist von Layer ? Ein Block kann nicht VonLayer sein....(das was sein kann ist, dass der Block mit der Farbeigenschaft VonLayer auf einem Layer xy liegt)

Zitat:
Original erstellt von Dober Heinz:
, möchte mir einen zweiten Blocksatz herrichten wo die Blöcke beim einfügen gleich auf den richtigen Layer eingefügt werden.

Und was soll passieren ? Wenn Blöcke eingefügt werden sollen und dies zB auf dem Layer 0 passiert, die Elemente des Blockes (also der Inhalt eines Blockes) auf einen bestimmten Layer sollen (also zB auf den Layer auf dem die Elemente gezeichnet sind - im Block) dann kann man das auch mit xplode machen.

(Falls was zu schwierig ist, um es in Worte zu fassen - einfach mal ein Beispiel posten mit erklärenden Worten - ist einfacher als wild drum herum reden...)

------------------
Grüsse

Thomas

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

Dober Heinz
Mitglied
Technischer Zeichner


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

Beiträge: 1143
Registriert: 20.12.2002

erstellt am: 14. Jul. 2005 17: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 Tunnelbauer

Nein Blöcke sind da mit der eigenschaft vom Layer null erstellt.
wenn ich nun den Block einfüge dann legt er mir den Block auf dem Layer der gerade aktiviert ist z.b. Layer "Mauer" und auch auf desen Farbe z.b Grau. das ist ok.  Nun will ich aber bei Blöcke einfügen, das er mir den Layer "E-Starkstrom anlegt und den Block auf desen Layer legt. Ich will das ich das Steuern kann wo er mir den Block hinlegt, ohne jedesmal den    Layer umschalten, (z.b E-Starkstrom auf E-Beleuchtung und so weiter) zu müssen und da eine block einfügen. will mir das aussuchen können wie ich die Blöcke einfüge auf Layer der Aktiv ist oder auf Layer mit Vorgabe auf welchen Layer.
danke heinz
Hoffe es ist verständlich
Habs nicht so mit schreiben. 

------------------
Heinz 

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

mapcar
Mitglied
CADmin



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

Beiträge: 1250
Registriert: 20.05.2002

Time flies like an arrow, fruit flies like a banana (Groucho Marx)

erstellt am: 15. Jul. 2005 02:18    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 Dober Heinz 10 Unities + Antwort hilfreich

> Habs nicht so mit schreiben

Na ja, andere müssen das aber lesen, um dir mit deinem Problem helfen zu können. Musst ja nicht gleich ein Bestseller-Autor werden, aber vielleicht ein bisschen Mühe geben? Großbuchstabe am Anfang eines Satzes, mal hier und da ein Komma oder ein Punkt? Dann können sich die Hilfewilligen einfach besser auf das Problem konzentrieren und sind nicht so von Nebensachen abgelenkt. Oder erwartest du Lösungen auf dem gleichen Niveau wie die Fragestellung?

Ich kann dir folgendes vorschlagen: Zuerst mach dir eine Tabelle, welcher Block auf welchem Layer landen soll. Dazu brauchst du ein System der Namenskonventionen, damit du nicht jeden Block einzeln auflisten musst. Wenn du das hast, also z.B. dass alle Blöcke E* auf den Layer "E" kommen sollen und alle F* auf Layer "F", dann kannst du dir über die Umsetzung Gedanken machen.

Da gibt es im Prinzip zwei Möglichkeiten:

1.) Du fügst die Inserts irgendwo ein und rufst dann hinterher ein kleines Progrämmchen auf, das anhand dieser Tabelle die Sache nachträglich ordnet.

2.) Du nimmst ein Reaktor-Programm, das gleich beim Einfügen den entsprechenden Layer aktuell schaltet und hinterher wieder den vorherigen Layer setzt.

Das mit der Tabelle ist dabei nicht allzu eng zu sehen. Man kann das auch so machen, dass jede Blockdefnition die Layer-Information gleich mitbringt (als konstantes Attribut, als EED oder Extension Dictionary). Das könnte man als 'verteilte' Tabelle bezeichnen.

Alles hat aber auch seine Nachteile: Bei einem Programm 'Im Nachhinein' könnte vergessen werden, es aufzurufen. Eine Reaktorlösung kann die Stabilität von AutoCAD deutlich negativ beeinflussen, und eine verteilte Tabelle ist im Gegensatz zu einer zentralen kaum wartbar.

Ich würde zur ersten Lösung neigen: der Aufruf kann zwar vergessen werden, aber das ist keine Verschlechterung, da man ja ohne ein Programm sowieso vergessen könnte, den Block auf dem richtigen Layer einzufügen. Da kann's also nur besser werden, oder es bleibt so schlecht wie es ist, allerdings mit weniger Aufwand.

Reaktor-Lösungen sind problematisch: Ich habe hier mal ein Programm gepostet, das Bemaßungen auf dem Maßstab entsprechende Layer verteilt. Es schiebt auch auf Wunsch alle Schraffuren auf einen Schraff-Layer usw., alle Texte auf einen Text-Layer usw. Man braucht sich gar nicht mehr um diese Dinge zu kümmern. Aber: Wenn man dann eine Ellipse und anschließend einen Strahl zeichnet, kackt AutoCAD gnadenlos ab.

Also, was soll's werden?

Gruß, Axel Strube-Zettler

------------------
Meine AutoLisp-Seiten Mein Angriff auf dein Zwerchfell Mein Lexikon der Fotografie Mein gereimtes Gesülze

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

Dober Heinz
Mitglied
Technischer Zeichner


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

Beiträge: 1143
Registriert: 20.12.2002

erstellt am: 15. Jul. 2005 06:08    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 Alex

Danke für Antwort, das höhrt sich alles recht komplieziert an ich lass das lieber. Ich werde das mit den Werkzeugpaletten lösen.Da kann ich unter Eigenschaften auch festlegen auf welchen Layer er mir den Block einfügt. Muss mir alles halt 2x mal machen, einmal auf Layer was ich mir einstell "E-Starkstrom" und einmal auf Layer "--aktuell" verwenden.
danke heinz

------------------
Heinz 

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 15. Jul. 2005 10: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 Dober Heinz 10 Unities + Antwort hilfreich

Hallo Heinz,
so kompliziert ist das gar nicht. Ich habe an axel's Vorschlag angeknüpft, im Nachhinein die Blöcke auf die vereinbarten Layer umzulegen. Im folgenden Lisp mußt Du die Liste anpassen, ich habe beispielsweise die Blöcke "Test1" und "Test2" mit den Layern "Layer1" und "Layer2" verwendet. Auf Groß- und Kleinschreibung ist zu achten. Viel Spaß beim ausprobieren:

(defun c:block_layer ( / liste aws layer)
  (setq liste (list
'("Test1" "Layer1");;;Liste mit Block und zugehörigem Layer, => anpassen
'("Test2" "Layer2")))
  (princ "\nBitte Blöcke auswählen:")

  (if(setq aws (ssget (list'(0 . "INSERT"))))
    (progn
      (setq n 0)
      (repeat (sslength aws)
(if (assoc (cdr(assoc 2 (entget(ssname aws n)))) liste)
  (progn
    (setq layer(cadr(assoc (cdr(assoc 2 (entget(ssname aws n)))) liste)))
    (JB_layer_entmake layer 7);;;Farbe für Layer, die noch nicht existieren
    (JB_layer_ein layer)
    (JB_layer_tauen layer)
    (entmod (subst (cons 8 layer)
  (assoc 8 (entget(ssname aws n)))
  (entget(ssname aws n))))
    (princ (strcat "\n Block \""(cdr(assoc 2 (entget(ssname aws n))))"\" auf Layer \""layer"\""))
    ))
(setq n (+ n 1))))
    (alert "Es wurden keine Blöcke gewählt."))
  (princ "\nEnde")
  (princ))

;;;Layer erstellen, wenn noch nicht vorhanden
(defun jb_layer_entmake (layer farbe /)
  (if (not (tblsearch "LAYER" layer))
    (entmake (list '(0 . "LAYER")
  '(100 . "AcDbSymbolTableRecord")
  '(100 . "AcDbLayerTableRecord")
  (cons 2 layer)
  '(70 . 0)
  (cons 62 farbe)
  '(6 . "CONTINUOUS")
  '(290 . 1)))))
;;;Layer einstellen, wenn er ausgeschaltet ist
(defun jb_layer_ein  (layer /)
  (if (< (cdr (assoc 62 (tblsearch "LAYER" layer))) 0)
    (progn
      (entmod
(subst
  (cons 62
(* -1 (cdr (assoc 62 (tblsearch "LAYER" layer)))))
  (assoc 62 (tblsearch "LAYER" layer))
  (entget (tblobjname "LAYER" layer))))
      (alert (strcat "\nDer Layer " layer " wurde eingeschaltet.")))))
;;;Layer tauen, wenn er gefroren ist
(defun jb_layer_tauen  (layer /)
  (if (= (cdr (assoc 70 (tblsearch "LAYER" layer))) 1)
    (progn (entmod (subst (cons 70 0)
  (assoc 70 (tblsearch "LAYER" layer))
  (entget (tblobjname "LAYER" layer))))
  (alert (strcat "\nDer Layer " layer " wurde getaut.")))))

------------------
viele Grüße

Jörn

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

Dober Heinz
Mitglied
Technischer Zeichner


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

Beiträge: 1143
Registriert: 20.12.2002

erstellt am: 15. Jul. 2005 11: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 Jörn
Danke dir, werde es mal Testen ob ich klar komm damit.

mfg heinz

------------------
Heinz 

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