| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
|
Autor
|
Thema: Polylinien und Kreisbögen in einem Lisp (1158 mal gelesen)
|
aufi Mitglied Vermessungstechniker
Beiträge: 16 Registriert: 04.03.2009
|
erstellt am: 04. Mrz. 2009 13:31 <-- editieren / zitieren --> Unities abgeben:
Hallo Lisp Gemeinschaft, ich bin noch Lisp Anfänger und habe ien Problem beim Programmieren. Ich habe eine Pline erstellt mit (getpoint) diese danach versetzt und in der Mitte der beiden Linien einen Blöck mit messen erstellt. Leider ist jetzt mein Wissen am Ende. Ich möcht nämlich nicht nur eine Pline mit Geraden sondern auch mit Kreisbogen (welchen ich mit (getpoint) definieren kann) erstellen, weiss aber nicht wie ich das anfangen soll. Ich stell euch mein LISP Programm MAUER herein damit ihr seht was ich meine. Vielleicht kann mir ja wer helfen. Danke aufi (defun c:Mauer (/ Breite pl wi wi1 pt1 pt2 pta ptb vpl) ;;********* Unterprogramm Faktorändern der Blöcke *************** (defun Faktoraendern (/ inspt entnam c) (setq ss (ssget "X" (list (cons 0 "INSERT") (cons 8 "msymbolhilfe")))) (if ss (progn (repeat (sslength ss) (setq inspt (cdr (assoc 10 (entget (setq entnam (ssname ss (setq c (if c (1+ c) 0)))))))) (command "_scale" entnam "" inspt Breite))))) ;;********* Unterprogramm Resizer änder Faktor der Blöcke *************** ;;********* Unterprogramm Breite **************************************** (defun Breite () (setq Breite (getreal "\nBreite eingeben in Meter (Aktuelle Breite = 0.25 m): ")) (if (null Breite) (setq Breite 0.25)) ) ;;********* Unterprogramm Breite **************************************** (setvar "CLAYER" "MAUER") (setvar "CMDECHO" 0) (Breite) (command "_pline" (setq pta (setq pt1 (getpoint))) (setq ptb (setq pt1 (getpoint pt1))) "") (setq pl (entlast)) (setq wi (angle pta ptb)) (setq wi1 (+ wi (/ Pi 2.0))) (while (setq pt2 (getpoint pt1)) (command "_pline" pt1 pt2 "") (command "_pedit" (entlast) "_j" pl "" "") (setq pt1 pt2) (setq pl (entlast)) ) (command "_.offset" Breite pl (polar pta wi1 10) "") (setq vpl (entlast)) (setvar "CLAYER" "MAUER_K") (command "_change" vpl "" "_p" "_la" "MAUER_K" "") (command "_-layer" "_m" "MSYMBOLHILFE" "_s" "MSYMBOLHILFE" "") (command "messen" pl "b" "Mauersymbol" "j" "20") (Faktoraendern) (command "_change" ss "" "_p" "_la" "MAUER_K" "") (setvar "CLAYER" "0") (command "-laydel" "_n" "msymbolhilfe" "" "_y") (princ) (setvar "CMDECHO" 1) ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 04. Mrz. 2009 14:10 <-- editieren / zitieren --> Unities abgeben: Nur für aufi
|
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 04. Mrz. 2009 14:11 <-- editieren / zitieren --> Unities abgeben: Nur für aufi
Hi, nur so als Gedanke (command "_pline") (while (/=(getvar "CMDACTIVE")0)(command pause)) Edit: siehe Befehlszeile ... Kreisbogen... vllt reicht es ja schon... mfg heiko [Diese Nachricht wurde von Dorfy am 04. Mrz. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
aufi Mitglied Vermessungstechniker
Beiträge: 16 Registriert: 04.03.2009
|
erstellt am: 05. Mrz. 2009 14:16 <-- editieren / zitieren --> Unities abgeben:
Danke Dorfy für die schnelle Antwort, Aber kannst mir bitte helfen wie ich den Befehl in mein Lisp einbauen soll?. Die ersten beiden Punkte der Pline soll immer eine Gerade sein die ich mit getpoint picke und danach soll ich dann die Auswahl haben für Kreisbogen (normale Befehlszeile von acad) oder einer neuen Geraden mit getpoint. mfg aufi
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 05. Mrz. 2009 14:25 <-- editieren / zitieren --> Unities abgeben: Nur für aufi
mach einfach ein Bild oder ne dwg, was das Ergebnis des ganzen sein soll und lad es hoch .. ------------------ - 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 |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 05. Mrz. 2009 14:30 <-- editieren / zitieren --> Unities abgeben: Nur für aufi
Hi, tausch mal die Zeilen oben gegen diese Zeile (command "_pline" (setq pta (setq pt1 (getpoint))) (setq ptb (setq pt1 (getpoint pt1))) "") vllt gefällt es ja schon wenn nicht siehe CADmium mfg heiko Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 05. Mrz. 2009 14:44 <-- editieren / zitieren --> Unities abgeben: Nur für aufi
Wenn ich einen Namen gefunden hätte, könnte ich Dich mit Namen ansprechen. Zu Deinem Problem ein ganz anderer Ansatz: Es ist manchmal einfacher verschiedene Element wie Linien und Bögen als Linien und Bögen zu zeichnen und zum Schluss den Konturzug in eine Polylinie umzuwandeln. Dabei funktioniert auch folgendes Beispiel: Linie mit Bogen. Eine Linie zeichnen und danach der Befehl Bogen verwenden. Wenn dem Bogen kein Anfangspunkt gegeben wird, wird er automatisch tangential an die vorher gezeichnete Linie angeschlossen und es genügt die Angabe des Endpunkts. Das Beispiel kannst Du per Hand durchspielen und wenn es nützlich ist, Deine Lispdatei um bauen. Gruß Theodor Schönwald Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
aufi Mitglied Vermessungstechniker
Beiträge: 16 Registriert: 04.03.2009
|
erstellt am: 06. Mrz. 2009 09:10 <-- editieren / zitieren --> Unities abgeben:
Hallo Dorfy, Ich weiss schon das ich die Zeile austauschen kann, aber danach funktioniert das ganze Lisp nicht mehr. Weil ich ja die ersten beiden Punkt benötige um die Richtung des Versatzes zuerstellen bzw. für das Einfügen der Blöcke mit messen. mfg Aufi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 06. Mrz. 2009 09:18 <-- editieren / zitieren --> Unities abgeben: Nur für aufi
Hi, ??? (command "_pline" (setq pta (setq pt1 (getpoint))) (setq ptb (setq pt1 (getpoint pt1)))) (while...) mfg heiko Edit: Brauchst du nur die ersten beiden Stützpunkte oder auch weitere? [Diese Nachricht wurde von Dorfy am 06. Mrz. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
aufi Mitglied Vermessungstechniker
Beiträge: 16 Registriert: 04.03.2009
|
erstellt am: 06. Mrz. 2009 09:38 <-- editieren / zitieren --> Unities abgeben:
|
aufi Mitglied Vermessungstechniker
Beiträge: 16 Registriert: 04.03.2009
|
erstellt am: 06. Mrz. 2009 09:42 <-- editieren / zitieren --> Unities abgeben:
|
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 06. Mrz. 2009 09:56 <-- editieren / zitieren --> Unities abgeben: Nur für aufi
|
aufi Mitglied Vermessungstechniker
Beiträge: 16 Registriert: 04.03.2009
|
erstellt am: 06. Mrz. 2009 10:00 <-- editieren / zitieren --> Unities abgeben:
|
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 06. Mrz. 2009 10:10 <-- editieren / zitieren --> Unities abgeben: Nur für aufi
Hi Aufi, die "" am Ende entfernt? (command "_pline" (setq pta (setq pt1 (getpoint)));zweimal setq? (setq ptb (setq pt1 (getpoint pt1)))) (while (/=(getvar "CMDACTIVE")0)(command pause)) (setq pl (entlast)) mfg heiko [Diese Nachricht wurde von Dorfy am 06. Mrz. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
aufi Mitglied Vermessungstechniker
Beiträge: 16 Registriert: 04.03.2009
|
erstellt am: 06. Mrz. 2009 10:39 <-- editieren / zitieren --> Unities abgeben:
Hi Dorfy Danke jetzt klappts, habe die "" am schluß übersehen. Habe noch einen Text eigefügt das die Leute wissen das man jetzt K und L drücken kann damit man Kreisbögen und Linien Zeichnet. mfg aufi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |