Message 1 of 4
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Hello everyone,
I have the following problem:
This Lisp finds a region on the current layer and then creates a hatch.
This hatching should be placed on the newly created layer.
But unfortunately the hatching is placed on the current layer.
Can someone help me further?
Thank you Tom
(defun c:CreateHatchRegion ()
(if (setq objLayer (getvar "clayer")) ; Hole den aktuellen Layer
(progn
;; Hole die Layer-Eigenschaften des aktuellen Layers
(setq currentLayerData (tblsearch "LAYER" objLayer))
(setq currentLayerColor (cdr (assoc 62 currentLayerData))) ; Farbe des aktuellen Layers
;; Suche nach einer Region auf dem aktuellen Layer
(setq sel (ssget "X" (list (cons 8 objLayer) (cons 0 "REGION"))))
;; Wenn eine Region gefunden wurde
(if sel
(progn
(setq ent (ssname sel 0)) ; Wähle das erste gefundene Objekt
;; Erstelle eine SOLID-Schraffur auf der Region
(command "_hatch" "SOLID" "1" "0" ent "")
;; Hole die zuletzt erstellte Schraffur
(if (setq lastHatch (entlast))
(progn
;; Setze die Transparenz auf 90%
(command "_CHPROP" lastHatch "" "_transparency" "90" "")
)
)
;; Generiere den neuen Layernamen (aktueller Layer + "_Schraffur")
(setq newLayer (strcat objLayer "_Schraffur"))
;; Überprüfe, ob der neue Layer bereits existiert
(if (not (tblsearch "LAYER" newLayer)) ; Wenn der Layer nicht existiert
(progn
;; Erstelle den Layer mit den gleichen Attributen wie der aktuelle Layer
(command "._LAYER" "M" newLayer "_Color" currentLayerColor "")
)
)
;; Setze den Layer der Schraffur auf den neuen Layer
(command "_CHPROP" lastHatch "" "_Layer" newLayer "")
(princ "\nSchraffur mit Transparenz und dem neuen Layer erstellt.")
)
)
(princ "\nKeine Region auf dem aktuellen Layer gefunden.")
)
(princ "\nKein aktueller Layer gefunden.")
)
(princ) ; Beende die Ausgabe
)
Solved! Go to Solution.