Schraffuren auf einem mal erstellen / Rund um AutoCAD
9TomCat 18. Mai. 2020, 14:07

Hallo und Guten Tag,
gibt es eine Möglichkeit in einer Zeichnung viele vorhandene Polylinien (geschlossen) gleichzeitig zu schraffieren, wobei die Schraffur jeweils auf dem Layer erstellt wird, auf welchem sich die jeweilige Polylinie befindet? Ich sehr wohl wieder mal den Wald vor lauter Bäumen nicht …
Gruß TomCat

Osawa 18. Mai. 2020, 15:15

Moinmoin,

ich weiß nicht, ob ich Dich richtig verstanden habe, aber Du kannst einfach alle zu schraffierenden Polylinien auf einmal auswählen, dann hast Du ein großes Schraffurobjekt, das sich aus den Teilflächen der Polylinien zusammensetzt.

Im Dialogfeld "Schraffur und Abstufung" unter "Umgrenzungen" auf "Hinzufügen: Objekte auswählen" klicken und alle geschlossenen Geometrien wählen, die schraffiert werden sollen, fertig!


9TomCat 18. Mai. 2020, 15:55

Hej Osawa,
vielen Dank für die Antwort, ja so weit so gut.
Ja, das funktioniert so, aber dann liegen alle Schraffuren auf dem aktuellen Layer. Ich habe jedoch z.B. 20 Layer mit Polylinien und die Schraffuren sollen jeweils auf dem Layer liegen, auf welchen auch die Polylinien liegen. Und das klappt leider bei mir nicht
TomCat

Osawa 18. Mai. 2020, 16:02


screenshot_67.png

 
Alles klar, um die Layerzugehörigkeit gehts im Kern...

Da fällt mir leider keine Lösung mit Bordmitteln ein. Du kannst zwar anstatt eines großen Schraffurobjekts auch Einzelobjekte erstellen, aber soweit ich weiß, liegen die immer auf einem gemeinsamen Layer wenn sie in einem (Schraffur-)Rutsch erstellt werden.

Edit: Du meinst, als gäbe es in dem Pulldown "Layer" (s. Screenshot) noch den Eintrag "wie Umgrenzungsobjekt"?! Wäre ja ganz cool eigentlich! Leider alles Konjunktiv 

cadwomen 18. Mai. 2020, 17:03

..... mhh Makro
Layer durch piken aktuell setzten, im Anschluss Schraffur aufrufen Objekt vorheriges??


morgen dann evtl Zeit , jetzt Feierabend

cu cw

Zitat:
Original erstellt von Osawa:
Alles klar, um die Layerzugehörigkeit gehts im Kern...

Da fällt mir leider keine Lösung mit Bordmitteln ein. Du kannst zwar anstatt eines großen Schraffurobjekts auch Einzelobjekte erstellen, aber soweit ich weiß, liegen die immer auf einem gemeinsamen Layer wenn sie in einem (Schraffur-)Rutsch erstellt werden.

Edit: Du meinst, als gäbe es in dem Pulldown "Layer" (s. Screenshot) noch den Eintrag "wie Umgrenzungsobjekt"?! Wäre ja ganz cool eigentlich! Leider alles Konjunktiv  


9TomCat 19. Mai. 2020, 11:53

Hallo und guten Tag,
@Osawa  ja, ganz genau solche Funktion suche ich … ok, gibt es wohl nicht
Ja eigentlich schade, ich hätte gedacht, dass solch Anwendungsfall häufiger vorkommt und gefragt ist. 

@Cadwomen    ja, könnte man machen (also Layer aktuell setzen und dann alle Polylinien auswählen und schraffieren, aber das wäre ja die Dibbel-Dabbel-Tour), ich wollte alle Polylinen auswählen und die Schraffuren sollten jeweils auf dem Layer erscheinen, welcher auch die Polylinie enthält.
… ja Makro würde bestimmt gehen ;-)

LG
TomCat

cadwomen 19. Mai. 2020, 13:22

Hy TomCat

^C^C_Laymcur;\-schraff;E;solid;A;\;;

wäre mal der erste Ansatz , leider bekomm ich es grad nicht hin das das einmalgepickte Objekt mit "v" wieder hergezogen wird somit muss man dae objekt 2x picken, was sein mus das in den Schraffeigenschaften eingestellt ist "aktuellen Layer verwenden"

mit ner Lisp lise sich das ganz anderst händeln, aber nicht mein .. immer noch nicht , was fürs nächste Leben

cu cw

Andreas Kraus 21. Mai. 2020, 17:17

Das kleine Lisp sollte helfen.
Viel Spass damit 

Code:
(vl-load-com)
(foreach ent_name (vl-remove-if-not
      '(lambda (dummy) (= (type dummy) 'ENAME))
      (mapcar 'cadr (ssnamex (ssget)))
    )
    (if (equal (getvar "hpname") "SOLID")
      (command "schraff" (getvar "hpname") ent_name "")
      (command "schraff" (getvar "hpname") "" "" ent_name "")
    )
    (setq ht_data (entget (entlast)))
    (entmod (subst (assoc 8 (entget ent_name))
  (assoc 8 ht_data)
  ht_data
    )
    )
  )

9TomCat 25. Mai. 2020, 09:26


AutoCadSchraffurFehler.png

 
Hallo Andreas,
vielen, vielen Dank für die Mühe, hab mich schon sehr gefreut. Aber irgendwie wird mir ein Fehler ausgegeben, also ich kann noch die Objekte auswählen, aber dann wird ein Startpunkt gefragt 

Hab dem Lisp-Code

defun c:trschraf (/) 

vorangestellt, also "trschraf" zum starten, ist doch richtig oder?

Gruß Tom

Andreas Kraus 25. Mai. 2020, 20:47

Ah, mit _SOLID hab ich nicht gerechnet 

So sollte das klappen:

Code:
(vl-load-com)
(foreach ent_name (vl-remove-if-not
    '(lambda (dummy) (= (type dummy) 'ENAME))
    (mapcar 'cadr (ssnamex (ssget)))
  )
  (if (member (getvar "hpname") '("SOLID" "_SOLID"))
    (command "schraff" (getvar "hpname") ent_name "")
    (command "schraff" (getvar "hpname") "" "" ent_name "")
  )
  (setq ht_data (entget (entlast)))
  (entmod (subst (assoc 8 (entget ent_name))
(assoc 8 ht_data)
ht_data
  )
  )
)

9TomCat 26. Mai. 2020, 10:27

Hallo Andreas,
vielen vielen Dank, das ist ja mal so richtig genial, ich freu mich riesig.  Also es klappt super damit  
Vielen Grüße
Tom

[Diese Nachricht wurde von 9TomCat am 26. Mai. 2020 editiert.]