| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY WIRD VON NVIDIA ZUM HÄNDLER DES JAHRES GEWÄHLT, eine Pressemitteilung
|
Autor
|
Thema: Länge und breite von einem gerade gezeichneten Rechteck auswerten (2385 mal gelesen)
|
udouk Mitglied
Beiträge: 13 Registriert: 26.08.2009 Win XP SP3 ACAD 2007
|
erstellt am: 22. Mrz. 2011 11:35 <-- editieren / zitieren --> Unities abgeben:
Hallo CAD.DE-ler Ich hab ein Problem. ich möchte in innerhalb einer lisp-funktion die länge und breite eines gerade mit COMAND (siehe unten) gezeichneten Rechteckes in 2 variablen eintragen. Probiere schon länger rum, komme aber nicht weiter. also soweit bin ich (progn (setq RTP1 (getpoint "\n1. Taschenecke wählen:")) (command "_rectang" "ob" TASCHTIEF "_non" RTP1 pause) MFG UDOUK
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
neurosis Mitglied dipl.ing.
Beiträge: 224 Registriert: 22.08.2006
|
erstellt am: 22. Mrz. 2011 12:25 <-- editieren / zitieren --> Unities abgeben: Nur für udouk
hallo udok, folgendes setzt die laenge und breite eines rechtecks in 2 variablen (das zuletzt gezeichnete element muss ein rechteck sein): Code:
(setq lst (apply 'append (mapcar '(lambda (x) (if (= 10 (car x)) (list (cdr x)) ) ) (entget (entlast)) ) ) ) (setq var1 (distance (car lst) (cadr lst)) var2 (distance (cadr lst) (caddr lst)))
gruss marco------------------ Marco Heuer www.arc-aachen.de Airport Office [Diese Nachricht wurde von neurosis am 22. Mrz. 2011 editiert.] 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: 22. Mrz. 2011 12:25 <-- editieren / zitieren --> Unities abgeben: Nur für udouk
mach mal den Erklärbär - Schritt für Schritt was du machst (Eingabe) und was das Lisp machen soll ;-) mit entlast kommst du ans letzte Objekt, im GC10 Stecken die Stützpunkte (Ecken) den Rest kann man dann ausrechnen (lassen)?! Du kannst aber auch beim Zeichnen des Rechtecks über getpoint bzw bei Eingabe von Werten diese "abfangen" und in Variablen packen. Also nochmal BITTE Schritt für Schritt erklären... Edit: da war wohl einer schneller... und dann die simple Methode gewählt...
------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." [Diese Nachricht wurde von Dorfy am 22. Mrz. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wronzky Ehrenmitglied V.I.P. h.c. CAD-Dienstleistungen für Architekten
Beiträge: 2154 Registriert: 02.05.2005 CAD: AutoCAD 2.6 bis 2014 ADT 2005 - 2014 Arcibem System: Windows 2000, XP, NO VISTA Internet-Startseite: http://www.archi.de
|
erstellt am: 22. Mrz. 2011 12:40 <-- editieren / zitieren --> Unities abgeben: Nur für udouk
oder einfach mit getcorner? Code: (progn (setq RTP1 (getpoint "\n1. Taschenecke wählen:")) (setq RTP2 (getcorner RTP1 "\n2. Taschenecke wählen:")) (command "_rectang" "ob" TASCHTIEF "_non" RTP1 RTP2) (setq l (abs (- (car rtp1) (car rpt2)))) ....
Grüsse, Henning ------------------ Henning Jesse VoxelManufaktur Computer-Dienstleistungen für Architekten und Ingenieure http://www.voxelman.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
udouk Mitglied
Beiträge: 13 Registriert: 26.08.2009 Win XP SP3 ACAD 2007
|
erstellt am: 22. Mrz. 2011 13:28 <-- editieren / zitieren --> Unities abgeben:
@marco: SUPER!!! - genau das was ich wollte. Damit ich aber nicht dumm sterbe, könntest Du mir kurz in Stichworten erklären, was diese Zeilen machen? Ich hatte es auch schon mit entget, entlast & assoc probiert - bei einem Kreis klappt das Radius auslesen wunderbar, aber bei dem Rechteck kam da ne wirre Liste raus. Allen anderen, die mir helfen wollten - VIELEN DANK @Henning: Das mit der 2.Punktvariable hatte ich mir schon als Übergangslösung überlegt, aber es ist doch schöner wenn man mit COMMAND ein Rechteck wirklich zeichnet - sieht bei der Punktauswahl besser aus, da man das Rechteck angedeutet sieht. [Diese Nachricht wurde von udouk am 22. Mrz. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spider_dd Mitglied
Beiträge: 1144 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 22. Mrz. 2011 13:39 <-- editieren / zitieren --> Unities abgeben: Nur für udouk
Hallo udouk, gib mal (entget (ssname (ssget) 0)) in die Befehlszeile ein und wähle dann Dein Rechteck aus. Die Klammerblöcke mit einer 10 vorn (= 10 (car x)) in der "wirren Liste" enthalten die Eckpunkte des Rechtecks (Stützpunkte der Polylinie). Daraus lassen sich dann die Abmessungen errechnen. Gruß Thomas [edit] buhcstabneverwrustler [/edit] [Diese Nachricht wurde von spider_dd am 22. Mrz. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
neurosis Mitglied dipl.ing.
Beiträge: 224 Registriert: 22.08.2006
|
erstellt am: 22. Mrz. 2011 13:49 <-- editieren / zitieren --> Unities abgeben: Nur für udouk
- mit "(entget (entlast))" kommst du an die elementdaten des zuletzt erstellten elements ran. - mit "(mapcar '(lambda(x) (if (= 10 (car x)) (list (cdr x)))))" wird in den elementdaten nach den koordinaten aller stuetzpunkte der lwpolyline gesucht und diese als sublisten in einer liste zurueckgegeben. - mit "(apply '(append" werden alle nil-werte der liste entfernt - in der liste stehen jetzt 4 koordinatenlisten (bei einem rechteck-element) wirf mal den debugger an ... gruss marco ------------------ Marco Heuer www.arc-aachen.de Airport Office Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wronzky Ehrenmitglied V.I.P. h.c. CAD-Dienstleistungen für Architekten
Beiträge: 2154 Registriert: 02.05.2005 CAD: AutoCAD 2.6 bis 2014 ADT 2005 - 2014 Arcibem System: Windows 2000, XP, NO VISTA Internet-Startseite: http://www.archi.de
|
erstellt am: 22. Mrz. 2011 14:11 <-- editieren / zitieren --> Unities abgeben: Nur für udouk
|
udouk Mitglied
Beiträge: 13 Registriert: 26.08.2009 Win XP SP3 ACAD 2007
|
erstellt am: 22. Mrz. 2011 14:35 <-- editieren / zitieren --> Unities abgeben:
|
udouk Mitglied
Beiträge: 13 Registriert: 26.08.2009 Win XP SP3 ACAD 2007
|
erstellt am: 22. Mrz. 2011 14:45 <-- editieren / zitieren --> Unities abgeben:
|
spider_dd Mitglied
Beiträge: 1144 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 22. Mrz. 2011 21:43 <-- editieren / zitieren --> Unities abgeben: Nur für udouk
Zitat: Original erstellt von udouk: DEBUGGER?? Wie werfe ich den denn an???
Setze im VL-Editor im Quelltext an der Dich interessierenden Stelle einen Haltepunkt (RMT Haltepunkt ein oder "Hand-Symbol" in der unteren Symbolleiste). Nach dem Laden und Starten des Lisp-Progs stoppt der Ablauf und Du kommst in den VL-Editor. Dort hast Du dann in der Symbolleiste die Optionen für Einzelschritt, Prozedurschritt ... usw. und auch die Möglichkeit den Inhalt von Variablen und Funktionen zu prüfen. HTH Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wronzky Ehrenmitglied V.I.P. h.c. CAD-Dienstleistungen für Architekten
Beiträge: 2154 Registriert: 02.05.2005 CAD: AutoCAD 2.6 bis 2014 ADT 2005 - 2014 Arcibem System: Windows 2000, XP, NO VISTA Internet-Startseite: http://www.archi.de
|
erstellt am: 22. Mrz. 2011 22:26 <-- editieren / zitieren --> Unities abgeben: Nur für udouk
|