Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  lisp und höhenlinien

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:  lisp und höhenlinien (1898 mal gelesen)
piper
Mitglied


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

Beiträge: 7
Registriert: 20.09.2004

erstellt am: 20. Sep. 2004 21: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,

hat jemand schon mal eine lisp-routine gefunden mit der man aus 2d-höhenlinien ein 3d-höhenschichtmodell machen kann?

ich versuche nämlich gerade, mir sowas zu basteln, aber ich komm nicht wirklich weiter.
angenommen, ich hab drei höhenlinien und ich möchte, dass die erste 10m hoch ist, die zweite 20m und die dritte 30m und zwar in der reihenfolge, wie ich die linien markiert habe.
so, dann wird ein selektion set erstellt- mit
(setq ss(ssget))

und dann kann ich dieses set extrudieren, mit

(princ (setq hb (getreal "\nBitte die Schichthöhe angeben:"))) ;angeben der höhe

(command "_extrude" ss"" hb"" ) ;extrudieren der ausgewählen linien (ss) mit höhe (hb)

und jetzt bräuchte ich eine schleife die dafür sorgt, das die zweite höhenlinie 20m hoch wird, also sozusagen hb + hb, und die dritte 30m also hb + hb + hb
und da komm ich nicht weiter
kann mir bitte bitte jemand helfen!

viele grüße
piper

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 20. Sep. 2004 21:21    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 piper 10 Unities + Antwort hilfreich

Hallo Piper!
Am besten eignet sich dazu eine repeat-schleife.
Als Grundgerüst so in etwa:

(if (and(setq ss(ssget))
        (setq hb(getreal "\nBitte die Schichthöhe angeben:"))
    )
  (progn
    (setq index -1)
    (repeat (sslength ss)
      (command "_extrude" (ssname ss (setq INDEX(1+ INDEX)))  "" (* (+ 1 Index) hb) "" )
    )
  )
)

P.S. wenn du in die Lispprogrammierung einsteigen willst, kann ich dir
Mapcar's Seiten sehr empfehlen.

------------------
  - Thomas -

[Diese Nachricht wurde von CADmium am 20. Sep. 2004 editiert.]

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

piper
Mitglied


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

Beiträge: 7
Registriert: 20.09.2004

erstellt am: 21. Sep. 2004 13:29    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 CADmium,

vielen dank für deine hilfe!
es funktioniert genauso wie ich es mir vorgestellt habe- einfach klasse!
auch die seiten von mapcar, wirklich originell!

also nochmals danke
piper

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

piper
Mitglied


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

Beiträge: 7
Registriert: 20.09.2004

erstellt am: 28. Sep. 2004 16:15    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,

ich hätte da nochmal ein weiteres problem.
ich hab das programm noch etwas modifiziert und möchte am ende noch eine abfrage machen, ob die volumenkörper vereinigt werden sollen,
dazu möchte ich die objekte, die extrudiert worden sind, die ja eigentlich unter "ss" im selection set stehen müssten, dann an "_union" übergeben.
allerdings sagt autocad: 
"Sollen die Schichten vereinigt werden? j/n:j
_union
Objekte wählen:  0 gefunden
Objekte wählen:
Befehl: nil"

und irgendwie spiel ich da schon den ganzen tag dran rum und es klappt doch nicht :-(

wäre prima, wenn mir da noch mal jemand helfen könnte!
hier mal die routine:
(defun c:toll ()
  (command "_layer" "_new" "Gelände" "_color" 74 "Gelände" "SEtzen" "Gelände" "")
  (princ "\nBitte die Linien der Reihe nach von Außen nach Innen anklicken!")
  (if (and (setq ss (ssget))
  (setq sh (getreal "\nBitte die Schichthöhe angeben:"))
  )
    (progn
      (setq index -1)
      (repeat (sslength ss)
(command "_extrude" (ssname ss (setq INDEX (1+ INDEX))) "" (* (+ 1 Index) sh) ""))))

  (princ "\nSollen die Schichten vereinigt werden?") ;ist nicht toll, aber wenigstens klappt es
  (setq frage (getstring " j/n:"))
  (if
    (= frage "n")
    (exit)
  )

  (command "_union" ss"" ) ;hier gehts dann irgendwie nicht weiter
 
)

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 28. Sep. 2004 16:25    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 piper 10 Unities + Antwort hilfreich

kann nicht gehen .. ss enthält ja immer noch die "Namen" der Polylinien, und nicht der Körper. dafür mußte einen neuen Auswahlsatz kreieren.. so ungefähr ... klammern ect. mußte abgleichen..

(setq Koerper_ss(ssadd))
(setq index -1)
(repeat (sslength ss)
  (command "_extrude" (ssname ss (setq INDEX (1+ INDEX))) "" (* (+ 1 Index) sh) "")))
  (ssadd (entlast Koerper-ss))
)
(command "_union" Koerper-ss "" )

------------------
- Thomas -
"Bei 99% aller Problemen ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

fuchsi
Mitglied
Programmierer c#.net Datawarehouse


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

Beiträge: 1201
Registriert: 14.10.2003

AutoCad Version 2012 deu/enu
<P>Windows 7 64bit

erstellt am: 28. Sep. 2004 16:29    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 piper 10 Unities + Antwort hilfreich

nein, bemi extrudieren wird ein komplett neues objekt erstellt, und das original (deine linien) je nach einstellung der systemvariable sowieso (fällt mir gerade nicht ein) gelöscht. das heisst der auswahlsatz ss ist nacht dem extrude nicht mehr verwendbar.

du müsstest nach dem
(command "_extrude" ...) in einem auswahlsatz die neue erstellten volumenkörper speichern
in etwa so (ungetestet)


(defun c:toll ()
  (command "_layer" "_new" "Gelände" "_color" 74 "Gelände" "SEtzen" "Gelände" "")
  (princ "\nBitte die Linien der Reihe nach von Außen nach Innen anklicken!")
  (if (and (setq ss (ssget))
  (setq sh (getreal "\nBitte die Schichthöhe angeben:"))
  )
    (progn
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
      (setq NeuSS (ssadd)) ; lerrene auswahlsatz erzeugen
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
      (setq index -1)
      (repeat (sslength ss)
(command "_extrude" (ssname ss (setq INDEX (1+ INDEX))) "" (* (+ 1 Index) sh) "")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  (setq NeuSS (ssadd (entlast) NeuSS)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
)))

  (princ "\nSollen die Schichten vereinigt werden?") ;ist nicht toll, aber wenigstens klappt es
  (setq frage (getstring " j/n:"))
  (if
    (= frage "n")
    (exit)
  )

  (command "_union" Neuss"" ) ;hier gehts dann irgendwie nicht weiter
 
)


Hoffe ich habe mich mit den () nicht verhaut

------------------
WWW.FFZELL.AT.TC

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

piper
Mitglied


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

Beiträge: 7
Registriert: 20.09.2004

erstellt am: 28. Sep. 2004 17:36    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

jau, sowas in der art hab ich mir ja schon gedacht-
jetzt funktionierts!
besten dank an euch!

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

Kramer24
Ehrenmitglied V.I.P. h.c.
Architekt


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

Beiträge: 5881
Registriert: 09.11.2001

Acad Architecture 2023
WIN 10

erstellt am: 02. Okt. 2004 17:15    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 piper 10 Unities + Antwort hilfreich

Hallo Piper,

bin sehr an der Lisp interessiert, erhalte aber die Fehlermeldung: Fehler: Falsch formatierte Liste in Eingabe (ADT2004)

Weiß jemand Rad???

Danke und Grüße, Lothar

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

piper
Mitglied


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

Beiträge: 7
Registriert: 20.09.2004

erstellt am: 02. Okt. 2004 20:35    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 lothar,

ich kenne mich zwar noch nicht so gut mit lisp aus, aber wenn es ein problem mit einer falsch formatierten liste gibt, fehlt normalerweise irgendwo ne klammer.

hier ist mal das programm wie ich es jetzt nutze:

(defun c appen ()

  (setq layfr (getstring "Soll ein Gelände-Layer erstellt werden? n/j:"))                 
  (if (= layfr "j")
    (progn
        (command "_layer" "_new" "Gelände" "_color" 74 "Gelände" "SEtzen" "Gelände" "")
)
      )
 
  (princ "\nBitte die Linien der Reihe nach von Außen nach Innen anklicken!")           
  (if (and (setq ss (ssget))                                                           
  (setq sh (getreal "\nBitte die Schichthöhe angeben:"))                         
  )
    (progn
      (setq neu-ss (ssadd))                                                           
      (setq liste -1)
      (repeat (sslength ss)                                                             
(command "_extrude" (ssname ss (setq liste (1+ liste))) "" (* (+ 1 liste) sh) "")
(setq neu-ss (ssadd (entlast) neu-ss))))                                       
    )

  (setq frage (getstring "Sollen die Schichten vereinigt werden? j/n:"))             
    (if (= frage "j")
    (progn
(command "_union" neu-ss "" )                                                 
    )
    )
)                                                                                       
 
(princ"\nPappen erzeugt eine Art Schichtmodell.\nStart mit \"Pappen\"")
(princ)                                                                           

also ich arbeite auch mit adt2004 und bei mir läufts ohne probleme!

viele grüße
piper

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



Elektrokonstrukteur (m/w/d)
M...
Anzeige ansehenKonstruktion, Visualisierung
piper
Mitglied


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

Beiträge: 7
Registriert: 20.09.2004

erstellt am: 02. Okt. 2004 20:41    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

weiß nicht, wieso da jetzt ein smiley ist- liegt wohl an der tastenkombination-
ersetze den smiley durch einen doppelpunkt und pappen

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