Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Objektfang + Verschieben - Lisp-Programmierung

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:  Objektfang + Verschieben - Lisp-Programmierung (1614 mal gelesen)
Micha2107
Mitglied
Stuttgart

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

Beiträge: 2
Registriert: 15.02.2007

erstellt am: 15. Feb. 2007 17:42    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 zusammen,

ich hab folgendes Problem:

Ich habe diese Aufgabe bekommen und soll sie in LISP programmieren:

Objektfang für diese Aktion auf Zentrum, Endpunkt (mit,end) einstellen. Ein Objekt selektieren und es an P1 verschieben. Dazu sollen Sie den Selektierungs-Punkt als Basispunkt der Verschiebung vorgeben.

mein bisheriger Programmtext:

Code:
(defun c:yy (/ pline1 pline2)
(setvar "osmode" 5)
  (if (setq pline1 (car (entsel "\nPolylinie wählen:")))
    (progn
      (command "_.copy" pline1 "" '(0 0 0) '(0 0 0))
      (setq pline2 (entlast))
      (command "_.move"
      pline2
      ""
      pause
      )
    )
  )
  (princ)
)

aber anscheinden ist das was ich programmiert habe, nicht das Gewünschte, aber nur leider weiß ich nicht, wo der Fehler liegt.

Wäre nett, wenn mir jemand weiterhelfen könnte.

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

Ex-Mitglied
joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 15. Feb. 2007 18:08    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 Micha2107 10 Unities + Antwort hilfreich

Hallo Micha,
also so wie ich die Aufgabe verstehe würde ich das folgendermaßen machen:
Code:

(defun c:yy (/ pline1)
(setvar "osmode" 5)
  (if (setq pline1 (entsel "\nPolylinie wählen:"))
    (command "_.move" (car pline1) "" (cadr pline1) pause)
     
  )
  (princ)
)

Die Funktion "entsel" gibt Dir eine Liste zurück, das erste Element ist der Objektname, das zweite Element ist die Pickkoordinate. Über "car" und "cadr" kommst Du dann an diese Elemente ran.
Und an P1 verschieben denke ich mal, es handelt sich um einen frei wählbaren Punkt, deswegen das "pause" im Command-Befehl.

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

Jörn

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

Andreas Kraus
Mitglied
Elektrotechniker


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

Beiträge: 1356
Registriert: 11.01.2006

WIN 10
ACAD 2022

erstellt am: 15. Feb. 2007 18:12    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 Micha2107 10 Unities + Antwort hilfreich

so vielleicht ?

(defun c:x (/ mem_osmode ent_name p)
  (setq mem_osmode (getvar "osmode"))
  (setvar "osmode" 5)
  (setq ent_name (car (nentselp (setq p (getpoint)))))
  (command "_.move" ent_name "" p pause)
  (setvar "osmode" mem_osmode)
  (princ)
)

Gruß
Andreas

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

Micha2107
Mitglied
Stuttgart

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

Beiträge: 2
Registriert: 15.02.2007

erstellt am: 15. Feb. 2007 18: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

@Rabbit007:

Damit hatte ich am Anfang auch Probleme, aber es ist eben eine "vom Computer generierte" Aufgabe

@joern bosse:

dein Programmtext ist mir einleuchtend und ich denke so werde ich es dann auch machen, nur was mache ich mit dem "Endpunkt (mit end)" ???
Weil "osmode 5" beinhaltet ja eigentlich den Objektfang für zentrum und endpunkt

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 15. Feb. 2007 18: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 Nur für Micha2107 10 Unities + Antwort hilfreich

Hallo Micha,
(setvar "OSMODE" 1)??? Dann hast Du nur den Endpunkt.

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

Jörn

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 15. Feb. 2007 18: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 Micha2107 10 Unities + Antwort hilfreich

Nochmal Hallo Micha,
Du kannst das "end" aber auch direkt in den Command-Befehl einbauen, geht auch:
Code:

(defun c:yy (/ pline1)
(setvar "osmode" 5)
  (if (setq pline1 (entsel "\nPolylinie wählen:"))
    (command "_.move" (car pline1) "" (cadr pline1) "end" pause)
   
  )
  (princ)
)

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

Jörn

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

Ex-Mitglied
Ex-Mitglied
Theodor Schoenwald
Ehrenmitglied



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

Beiträge: 1672
Registriert: 16.04.2002

erstellt am: 15. Feb. 2007 20:00    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 Micha2107 10 Unities + Antwort hilfreich

Hallo Micha2107

nur so,
hast Du die Aufgabe von der Firma bekommen, bei der Du arbeitest oder suchst Du jemand als Hausaufgabenhilfe?

Gruß
Theodor Schönwald

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: 15. Feb. 2007 20:45    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 Micha2107 10 Unities + Antwort hilfreich

 
Zitat:
Original erstellt von Rabbit 007:
Äm
Sorry doch nicht mehr Jörns Code !!!               
Da in der Aufgabe ja schließlich osmode vreädert werden muß
und entsel keine Zentrum oder endpunke fängt wäre ich hierfür
Code:
(defun c:yy (/ p1) (setvar "osmode" 5) (command "_.move" (setq p1 (getpoint)) "" p1))


... auf was soll denn _move angewandt werden ? Auf ne Koordinate ? ..

nun ja... zurück zur (Haus)Aufgabe:
man braucht Osmode gar nicht setzen sondern nur Jörns Code etwas abwandeln:

(defun c:yy (/ OBJ)
  (if (setq OBJ (entsel "\nObjekt wählen:"))
    (command "_.move" (car OBJ) "" (cadr OBJ) "_end,_mid" pause) 
  )
  (princ)
)

... aber wenn die Aufgabe es unbedingt wünscht...(wer sich sowas immer ausdenkt    )


wenn allerdings der ENTSEL-PKT auch ein END oder Mittelpunkt sein soll
kann man ja noch ein (osnap (cadr OBJ)"_end,_mid") rumbasteln, erscheint mir aber sinnlos ... da von Pickboxgröße und gewähltem Objekt abhängig, aber als Randinfo..


@Theodor : Gute Frage !!! ... ich hoffe der Fragesteller lernt trotzdem was aus den Antworten.

------------------
      - Thomas -
"Bei 99% aller Probleme 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

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