Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Z-Coordinaten auf 0

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:  Z-Coordinaten auf 0 (1081 mal gelesen)
Christian01
Mitglied
Technischer Zeichner


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

Beiträge: 281
Registriert: 17.04.2007

erstellt am: 23. Mrz. 2015 07:01    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 liebe Community,

ich habe gerade mit LISP Programmieren angefangen.
Ich stehe jetzt aber in einer Sackgasse.

Mein Problem ist:
Wie bringe ich alle Linien auf die Z- Ebene 0?
Es betrifft nur die Z- Werte in der Elementliste 10.

Habe schon einen Code geschrieben aber irgendwie wird der Z- Wert nicht geändert, sondern bleibt gleich.

Code:

(defun C:LiZ0 (/)
(IF (setq obj (ssget "X" (list (cons 0 "LINE"))))
  (progn
    (setq z 0
          l (sslength obj))
  (while (< i l)
    (setq elem  (ssname obj i)
          elemli (entget elem)
          newh  '0.0            ; ?????????????????????
    )
    (IF (/= (cadddr elemli10) 0.0)
        (progn
          (setq elemli (subst newh
                              (cdddr (assoc 10 elemli))
                                elemli
                        )
          )
          (entmod elemli)
          (entupd elem)
        )
    )
; .............
  (setq z (1+ z))
  )
  (princ "\n FERTIG")
  )
  (princ "\n Irgendetwas ist schief gelaufen")
)
)
 

Danke für die die Hilfe.

Christian

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

Christian

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

jupa
Ehrenmitglied V.I.P. h.c.
Ruheständler


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

Beiträge: 6050
Registriert: 16.09.2004

WINDOWS Vista Ultimate SP2 (64bit), NVIDIA Geforce 9600M GT, AutoCAD 2013.

erstellt am: 23. Mrz. 2015 07:22    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 Christian01 10 Unities + Antwort hilfreich

Flüchtig drübergeschaut:
Nicht nur der Startpunkt der Linie (assoc 10 ...) , sondern auch deren Endpunkt (assoc 11 ...) muß bearbeitet/modifiziert werden. Ach nein, das willst Du ja ausdrücklich nicht

Für die Wertzuweisung zu newh genügt (setq newh 0.0), die 0.0 zu quotieren bringt nichts.

Achja, und in der IF-Schleife ist noch ein Tippfehler cdddr muß cadddr werden.

Und woher kommt auf einmal die Variable elemli10? in (IF (/= (cadddr elemli10) 0.0)


Jürgen


------------------
Bildung kommt nicht vom Lesen, sondern vom Nachdenken über das Gelesene. (Carl Hilty)

[Diese Nachricht wurde von jupa am 23. Mrz. 2015 editiert.]

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

cadffm
Moderator
良い精神




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

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 23. Mrz. 2015 07:27    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 Christian01 10 Unities + Antwort hilfreich

Du mußt die anzupassende Liste neu erstellen, aber zunächst noch etwas anderes:

Deine Entityliste kann (nach den UNS vorliegenden Informationen) einen oder mehrere gc10 enthalten,
das macht die Geschichte dann noch etwas aufwändiger.

Für den Fall das es nur um einen gc10 geht:
(subst (reverse (cons 0.0 (cdr(reverse (assoc 10 elemli)))))(assoc 10 elemli)elemli)
oder
(subst (list 10 (cadr(assoc 10 elemli)) (caddr(assoc 10 elemli)))(assoc 10 elemli)elemli)
oder
oder
..

da gibt es viele Möglichkeiten, viel wichtiger wäre es daher die Fälle zu berücksichtigen in denen
es auch mal um gc11 geht, mehrere gc10 oder auch einen anderen Hochzugvewktor gc210

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

spider_dd
Mitglied



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

Beiträge: 1111
Registriert: 27.11.2003

Win 10Pro
Intel(R) Core(TM) i7-7700
NVIDIA Quadro P1000
ACAD, Civil-3D 2018

erstellt am: 23. Mrz. 2015 08:13    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 Christian01 10 Unities + Antwort hilfreich

Hallo Christian,

m. E. kann Deine Schleife nicht funktionieren. An Anfang setzt Du z = 0 und zählst am Ende dann auch z hoch, in der Schleife arbeitest Du aber mit i ((while (< i l) ...  und (ssname obj i)).

Gruß
Thomas

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

Christian01
Mitglied
Technischer Zeichner


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

Beiträge: 281
Registriert: 17.04.2007

erstellt am: 23. Mrz. 2015 08: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

@Jürgen

Danke für die Fehler.
Beim vielen Herumprobieren und Test haben sich woll diese Fehler eingeschlichen.

Code:

(setq elemli10Z  (cadddr (assoc 10 elemli)

(IF (/= elemli10Z 0.0)



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

Christian

[Diese Nachricht wurde von Christian01 am 23. Mrz. 2015 editiert.]

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

Christian01
Mitglied
Technischer Zeichner


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

Beiträge: 281
Registriert: 17.04.2007

Briscad V22
ACAD MAP 2019
Win 10 Pro 64bit
Intel, 4x 3,0 GHz, 8GB RAM
2 x 24" TFT

erstellt am: 23. Mrz. 2015 08:51    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

Code:
  (while (< z l)
    (setq elem  (ssname obj i)
          elemli (entget elem)
          newh  0.0
          elemli10Z (cadddr (assoc 10 elemli))
    )
    (IF (/= elemli10Z) 0.0)
        (progn
          (setq elemli (subst newh
                              (cdddr (assoc 10 elemli))
                                elemli
                        )
          )
          (entmod elemli)
          (entupd elem)
        )
    )

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

Christian

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

jupa
Ehrenmitglied V.I.P. h.c.
Ruheständler


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

Beiträge: 6050
Registriert: 16.09.2004

WINDOWS Vista Ultimate SP2 (64bit), NVIDIA Geforce 9600M GT, AutoCAD 2013.

erstellt am: 23. Mrz. 2015 09:43    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 Christian01 10 Unities + Antwort hilfreich

Sebastians (cadffm) Hinweise gelesen (und verstanden)?

Jürgen

------------------
Bildung kommt nicht vom Lesen, sondern vom Nachdenken über das Gelesene. (Carl Hilty)

[Diese Nachricht wurde von jupa am 23. Mrz. 2015 editiert.]

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

spider_dd
Mitglied



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

Beiträge: 1111
Registriert: 27.11.2003

Win 10Pro
Intel(R) Core(TM) i7-7700
NVIDIA Quadro P1000
ACAD, Civil-3D 2018

erstellt am: 23. Mrz. 2015 11:13    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 Christian01 10 Unities + Antwort hilfreich

Hallo Christian,

m. E. kannst Du Dir auch das Ermitteln von elemli10Z und den nachfolgenden if Vergleich sparen. Es schadet ja nichts, wenn der Wert schon 0.0 ist, ihn nochmal darauf zu setzen, und dafür fallen einige Zeilen Code weg.

Gruß
Thomas

ps. meine Hinweise weiter oben gesehen?

[Diese Nachricht wurde von spider_dd am 23. Mrz. 2015 editiert.]

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