Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  BKS definieren

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:  BKS definieren (1201 mal gelesen)

Ex-Mitglied

erstellt am: 17. Mrz. 2008 08:03    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hallo an alle,

ich versuche hier krampfhaft, einen Einstieg in LISP zu bekommen und stolpere schon bein ersten Schritt.

Meinen Einstieg hatte ich mir folgendermaßen vorgestellt:

1. frage 3 Punkte ab
2. definiere einen neuen BKS-Ursprung
3. definiere ein BKS auf Basis der eingegebenen Punkte
4. drehe das BKS um die X-Achse
5. zeichne dort einen Kreis

Mein Ergebnis:

(setq startpunkt
  (getpoint "\nStartpunkt wählen: ")
)
(setq radius
  (getpoint "\nX wählen: ")
)
(setq richtung
  (getpoint "\nY wählen: ")
)
(command "bks" "_o" startpunkt)
(command "bks" startpunkt radius richtung)
(command "bks" "x" 90)
(command "_circle" startpunkt radius)


Wenn ich nun diesen Ablauf mehrfach hintereinander aufrufe, befindet sich der Kreis immer woanders. Auch das BKS liegt irgendwo im Raum. Wo habe ich mir hier den Zufallsgenerator eingebaut? Um die Punkte gereifen zu können, zeichne ich vorher orthogonal in x,y und z-Richtung eine Linie mit Länge 10. Oder liegt der Fehler in der unsauberen Ausführung des Befehls _circle, da die ganze Sache mit NIL beendet wird?


Lutz

------------------
Menschen mit T21 sind von Natur aus freundlich.
Wir sollten von ihnen lernen ...

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: 17. Mrz. 2008 08:17    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

du speicherst den Startpunkt .... z.b. 100,100,0 im WKS( bzw. 1. BKS)

und wenn du diese Koordianten weiterverwendest, beziehen sie sich immer auf das aktuelle BKS ... wenn du 's anders haben willst , guck dir die Funktion TRANS an.

------------------
  - 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


Ex-Mitglied

erstellt am: 17. Mrz. 2008 08:56    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

... tue ich. Danke für den Hinweis.

Da meine Taste F1 bei LISP versagt (warum auch immer, da kommt nur eine Fehlermeldung), werde ich heute abend mal das "Kochbuch" befragen.


Ich melde mich wieder ...

Lutz

------------------
Menschen mit T21 sind von Natur aus freundlich.
Wir sollten von ihnen lernen ...


Ex-Mitglied

erstellt am: 18. Mrz. 2008 00:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

So, im "Kochbuch" wird über trans nichts gesagt. Nach vielen Versuchen auf Basis der englischen Hilfe ergibt sich für mich die folgende Frage:

1. Wenn ich mit (trans startpunkt 0 1) versuche, die Koordinaten vom WKS in das UKS zu transformieren, wird doch aber sicherlich nicht der Wert von "startpunkt" sondern nur die Ergebnisrückgabe transformiert.

Daraus resultiert weiterhin, daß ja erst mal ein UKS vorhanden sein muß, auf das transformiert werden könnte.

2. Woher sollte ACAD wissen (falls mehrere UKS definiert sind), welches UKS es denn nehmen soll?

Offensichtlich erliege ich einem Irrtum, Befehlsabläufe aus ACAD in LISP übernehmen zu können. Stimmt wenigstens meine erste Annahme? Das, was ich vorhabe, werde ich wohl irgendwie anders realisieren müssen.


Lutz

------------------
Menschen mit T21 sind von Natur aus freundlich.
Wir sollten von ihnen lernen ...

Helmut Schepers
Mitglied



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

Beiträge: 35
Registriert: 01.11.2001

AutoCad 2000, AutoCAd 2002, Windows XP-pro
Treppenbau-Software

erstellt am: 18. Mrz. 2008 07:19    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

Guten Morgen Lutz,

versuche es einmal so

(defun c:test ()

  (setq startpunkt (getpoint "\nStartpunkt wählen: "))
  (setq radius    (getpoint "\nX wählen: "))
  (setq richtung  (getpoint "\nY wählen: "))
  (command "bks" "_o" startpunkt)
  (command "bks" "_3" startpunkt radius richtung)
  (command "bks" "x" 90)
  (command "_circle" (trans startpunkt 0 1) (trans radius 0 1))
  (command "bks" "_w")

)


dann sollten die Mittelpunkte deiner Kreise immer auf dem gewählten Startpunkt liegen und nicht irgendwo im Raum.
Ich hoffe es hilft dir weiter

------------------
mfg
Helmut Schepers
Homepage

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: 18. Mrz. 2008 08: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

Hallo,
ich habe ein bißchen rumexperimentiert, und bin mir jetzt aber gar nicht mehr sicher, ob es dem eigentlichen Problem von Lutz entspricht.

Mit folgendem Code kann man ein Kreis zeichnen, immer auf der Ebene, die über 2 Raumpunkte ausgewählt werden.

Das BKS wird dabei immer über ein Dummy-Objekt (Linie) gesetzt, und dann in der Drehung um die y-Achse angepasst, danach kann der Kreis gezeichnet werden.
[code]
(defun c:kreis-bks ( / ANG MP OBJ_LINE PKT)
  (if (and (setq mp (trans (getpoint "\nMittelpunkt angeben:")1 0))
  (setq pkt (trans (getpoint (trans mp 0 1) "\nPunkt für Radius angeben:")1 0)))
    (progn
      (setq ang (if (= (- (caddr pkt)(caddr mp)) 0.0)
  0.0
  (-(atan (/ (distance (reverse(cdr(reverse mp)))
      (reverse(cdr(reverse pkt))))
    (- (caddr pkt)(caddr mp))))(/ pi 2.0))))
      (entmake (list'(0 . "LINE")
    (cons 10 mp)
    (cons 11 pkt)))
      (setq obj_line (entlast))
      (command "_.ucs" "_e" (list obj_line (cdr(assoc 10 (entget obj_line)))))
      (command "_.ucs" "_y" (cond ((= (getvar "AUNITS")0) ;;;Dezimalgrad
  (*(/ ang pi)180.0))
  ((= (getvar "AUNITS")2) ;;;Gon
  (*(/ ang pi)200.0))
  ((= (getvar "AUNITS")3) ;;;Bogenmaß
  ang)
  ('T
  ang)))
      (command "_.circle" (trans mp 0 1)(distance mp pkt))
      (entdel obj_line)
      (command "_.ucs" "_w")
      )))
[code]

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

Jörn

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


Ex-Mitglied

erstellt am: 18. Mrz. 2008 09:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hallo an alle,

danke für die Tipps, daß werde ich mir in Ruhe heute abend mal anschauen. Irgendwie keimt wieder Hoffnung auf ...


Lutz

------------------
Menschen mit T21 sind von Natur aus freundlich.
Wir sollten von ihnen lernen ...


Ex-Mitglied

erstellt am: 19. Mrz. 2008 00:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat

Hallo Helmut,

das ist genau der Knackpunkt. Auf der Basis kann ich dann weitermachen, da nun auch der Kreis dort auftaucht, wo er hin soll.


Hallo Joern,

das ist zwar interessant, ...  ... aber ich verstehe es nicht. Das geht wohl schon 3 Schritte weiter und ich muß etwas kleiner anfangen. Danke trotzdem für die Anregungen.


Lutz


Nachtrag: ... nun auch aktuelle Sysinfo.(?)
------------------
Menschen mit T21 sind von Natur aus freundlich.
Wir sollten von ihnen lernen ...

[Diese Nachricht wurde von Lutz_G am 19. Mrz. 2008 editiert.]

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