Hallo Experten,
in dem hier abgedruckten Lips Tool gibt es folgendes Problem:
Es muß eine Abfrage erfolgen, ob das ausgewählte Element ein Block ist. Wenn ja, dann soll das Programm beedet werden.
Leider funktioniert das nicht. Das ausgewählte Element ist ein Block und trotzdem wird die Anweisung (stop) nicht ausgeführt.
Wer kann helfen? Ich häng das auch noch als txt-file an.
Gruß Martin
;Dieses Tool erstellt einen Auswahlsatz über eine Layergruppe und erzeugt daraus einen gleichnamigen Block
(defun C:tps_lgtoblock ()
(setq lold (getvar "clayer"))
(setq cmdold (getvar "cmdecho"))
(setq eold (getvar "menuecho"))
(setq osold (getvar "osmode"))
(setvar "menuecho" 0)
(setvar "cmdecho" 0)
(defun makeblock ()
(setq la (cdr (assoc 8 obj))) ;Gruppe 8 ist Layername
(setq zeichen (- (strlen la) 5)) ;subtrahiert von der Gesamtzahl der Zeichen den Wert 5 (z.B -am_7) und gibt somit die Länge der Zeichenkette zurück
(setq lg (substr la 1 zeichen)) ;reduziert die Zeichenkette auf "zeichen". Das erste Zeichen ist der Start der Zeichenkette.
(setq summla (strcat lg "*"));fügt zum Layergruppennamen * hinzu
(setq bp (getpoint "\nBasispunkt angeben \n"))
(setq as (ssget "X" (list (cons 8 summla))));holt alle Objekte der Layergruppe
(command "._-purge" "bl" lg "n")
(command "._-block" lg bp as "");Block wird erzeugt
(setvar "osmode" 0)
(command "._-layer" "_set" (strcat lg "-am_0") "");Layergruppe wird gesetzt
(command "._-insert" lg bp "1" "1" "0");Block wird eingefügt
(prompt "\nBlock wurde erzeut und eingefügt \n")
(setvar "osmode" osold)
(setvar "menuecho" eold)
(setvar "cmdecho" cmdold)
(command "._-layer" "_set" lold "")
(princ)
(quit)
)
(defun stop ()
(prompt "\nDas gewählte Element ist bereits ein Block - bitte mittels LISTE überprüfen")
(setvar "menuecho" eold)
(setvar "cmdecho" cmdold)
(command "._-layer" "_set" lold "")
(princ)
(quit)
)
(setq obj (car (entsel "\nObjekt in gewuenschter Layergruppe anklicken")))
(setq obj (entget obj)) ;Objektdatengruppen suchen
(setq objinsert (cdr (assoc 0 obj)));Gruppe 0 ist Objektbezeichnung
(if (= objinsert "insert") (stop) (makeblock));Abfrage, ob Objekt bereits ein Block ist
)
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP