Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Problem mit

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:  Problem mit (455 mal gelesen)
Martin Sigloch
Mitglied
Ingenieur


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

Beiträge: 259
Registriert: 07.11.2000

erstellt am: 17. Okt. 2002 18:54    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


tps_lgtoblock.txt

 
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

nahe
Ehrenmitglied



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

Beiträge: 1724
Registriert: 18.01.2001

arbeite mit:
Dell Precision 7750
i7 2,6 GHz 6 Kerne
32GB RAM
512GB SSD
NVIDIA Quadro RTX 4000
------------------------
SWX-2020 SP5.0
EPDM
----------------
Windows 10
----------------
VB.net
VB
VBA
ein wenig Swift am Mac

erstellt am: 18. Okt. 2002 06:10    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 Martin Sigloch 10 Unities + Antwort hilfreich

Hallo Martin

es liegt an der Abfrage
(if (= objinsert "insert") ....
der Vergleichstext "insert" gehört in Großbuchstaben geschrieben.
Wenn nicht zwischen Groß- und Kleinbuchstaben unterschieden werden
muss, empfiehlt es sich in LISP immer alles in Groß- oder Kleinbuchstaben umzuwandeln, um solche Fehler zu vermeiden.
Dafür gibt es die Funktion strcase.
In Deinem Fall würde ich aber einfach nur den Text groß schreiben.

Grüße
Heinz

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

Martin Sigloch
Mitglied
Ingenieur


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

Beiträge: 259
Registriert: 07.11.2000

erstellt am: 18. Okt. 2002 07:11    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 nahe:

der Vergleichstext "insert" gehört in Großbuchstaben geschrieben.

da wäre ich alleine nicht draufgekommen. 1000 Dank für die Antwort am frühen Morgen - Wochenende gerettet! 6:10 Uhr - Frühaufsteher oder durchgearbeitet?

Nochmals Danke

Martin

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

nahe
Ehrenmitglied



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

Beiträge: 1724
Registriert: 18.01.2001

arbeite mit:
Dell Precision 7750
i7 2,6 GHz 6 Kerne
32GB RAM
512GB SSD
NVIDIA Quadro RTX 4000
------------------------
SWX-2020 SP5.0
EPDM
----------------
Windows 10
----------------
VB.net
VB
VBA
ein wenig Swift am Mac

erstellt am: 18. Okt. 2002 07:14    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 Martin Sigloch 10 Unities + Antwort hilfreich

Hallo Martin

freut mich Dir geholfen zu haben :-)

P.S. Frühaufsteher

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