| |
| 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: Polylinie aus einer Liste erzeugen (1892 mal gelesen)
|
mundal Mitglied Techniker
Beiträge: 320 Registriert: 14.02.2005
|
erstellt am: 01. Apr. 2010 15:08 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, ich habe eine Liste mit mehreren x,y Koordinaten. Die Koordinaten aus der Liste sollen eine Polylinie werden. Ist dies mit LISP zu realisieren ? Wenn ja, könnt ihr mir einen Tipp geben wie ? Gruß Irene Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 01. Apr. 2010 15:19 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
|
mundal Mitglied Techniker
Beiträge: 320 Registriert: 14.02.2005
|
erstellt am: 01. Apr. 2010 15:46 <-- editieren / zitieren --> Unities abgeben:
|
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 01. Apr. 2010 16:07 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
|
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 01. Apr. 2010 20:16 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
Hallo, Du benötigst wirklich kein Tool, wenn Du es wie Thomas es vorgeschlagen hat vorgehst. Am besten installierst Du den Editor JFE (Jens File Editor) er ist kostenlos, mit Notepad geht es aber auch, da musst Du nur aufpassen, dass die Dateikennung .SCR geschrieben wird. Wenn Du die Koordinaten, so eingefügt hast wie Thomas es vogeschlagen hat, kannst Du in ACAD den Befehl SCRIPT eingeben, Deine Datei auswählen, das war es. Es ist wirklich ganz einfach, hier: http://www.lehrer.uni-karlsruhe.de/~za685/cad/script/scr.htm findest Du die Beschreibung. Gruß Theodor Schönwald www.cad-cnc.com
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mundal Mitglied Techniker
Beiträge: 320 Registriert: 14.02.2005
|
erstellt am: 02. Apr. 2010 09:01 <-- editieren / zitieren --> Unities abgeben:
|
neurosis Mitglied dipl.ing.
Beiträge: 224 Registriert: 22.08.2006
|
erstellt am: 02. Apr. 2010 09:47 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
|
mundal Mitglied Techniker
Beiträge: 320 Registriert: 14.02.2005
|
erstellt am: 02. Apr. 2010 09:58 <-- editieren / zitieren --> Unities abgeben:
Hallo, meine Liste sieht beispielsweise so aus: (((600,0) (700,100) (800,200)) ((300,10) (410,130) (500,200)) ((0,0) (100,100) (200,200)) (0,0)) diese Werte habe ich der Variablen entnommen. Die Liste wird für verschiedene Situationen immer anders aussehen, sprich länger werden, mit anderen Werten. Gruß Irene 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: 02. Apr. 2010 10:11 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
seh ich das richtig: in deinem bsp. gibt es als unterlisten ((600,0) (700,100) (800,200)) ((300,10) (410,130) (500,200)) ((0,0) (100,100) (200,200)) (0,0) sollen das jetzt 4 einzelne lwpolyline werden? und steht da wirklich ein komma als trennung zwischen x- und y-werten? ------------------ Marco Heuer www.arc-aachen.de Airport Office Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mundal Mitglied Techniker
Beiträge: 320 Registriert: 14.02.2005
|
erstellt am: 02. Apr. 2010 10:27 <-- editieren / zitieren --> Unities abgeben:
Hallo, nun, das Komma könnte ich ersetzen, das ist kein Problem. Es stimmt, es werden mehrere Polylinien nebeneinander gesetzt. Genau gesagt beschreibt jede Polylinie eine Zahl die dann am Ende einen Schriftzug ergeben soll. BSP: 023554454 Gruß Irene Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 02. Apr. 2010 10:47 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
Hallo Irene, wenn zwischen den Klammern Leerzeichen sind: - Im Editor mit Suchen und Ersetzen alle Klammern entfernen. - Das Wort _pline davor schreiben. Das war es, die X-, Y-Werte dürfen auch hintereinander stehen, wenn ein Leerzeichen als Trenner vorhanden ist. Wenn zwischen den Klammern "keine" Leerzeichen sind: - Alle doppelten Klammern durch eine Klammer ersetzen. - Danach alle ")(" Klammernpaare durch ein Leerzeichen ersetzen. - Die einzelnen Klammern die noch stehen bleiben entfernen. Auch das ist in einem Editor, mit Suchen und Ersetzen, sehr schnell zu machen. Wenn jedoch diese Arbeit täglich vorkommt, kann sie auch mit einer kleinen Lisp-Datei automatisiert werden, so dass keine Script-Datei erforderlich ist. Gruß Theodor Schönwald www.cad-cnc.com 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: 02. Apr. 2010 11:47 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
(setq xxx '(((600 0) (700 100) (800 200)) ((300 10) (410 130) (500 200)) ((0 0) (100 100) (200 200)) (0 0))) (defun test (lst) (mapcar '(lambda(pt-lst) (if (= (type (car pt-lst)) 'LIST) (entmake (append (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(67 . 0) '(8 . "0") '(6 . "CONTINUOUS") '(100 . "AcDbPolyline") (cons 90 (length pt-lst)) '(70 . 128) '(38 . 0.0) '(39 . 0.0) ) (apply 'append (mapcar '(lambda (pt) (list (cons 10 pt) '(40 . 0.0) '(41 . 0.0) '(42 . 0.0) ) ) pt-lst )) (list '(210 0.0 0.0 1.0)) ) ) ) ) lst ) ) ------------------ Marco Heuer www.arc-aachen.de Airport Office Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mundal Mitglied Techniker
Beiträge: 320 Registriert: 14.02.2005
|
erstellt am: 06. Apr. 2010 14:13 <-- editieren / zitieren --> Unities abgeben:
Hallo, jetzt habe ich meine Programmierkenntnisse in die Waagschale geworfen und konnte aus meiner Liste eine Scriptdatei erzeugen *JUHU*. Das Script möchte ich "mitten" in einer Lisproutine aufrufen: Befehl: command "script" "xyz.scr" Leider muss ich feststellen dass danach alle folgenden Anweisungen nicht mehr gemacht werden. Gibt es einen Trick wie ich dies umgehen kann. Grüße Irene Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 06. Apr. 2010 14:21 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
|
Steff179 Mitglied Geomatiker
Beiträge: 266 Registriert: 09.08.2007 AutoCAD 2014
|
erstellt am: 07. Apr. 2010 10:56 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
hallo irene ich schnall nicht ganz wiso du das mit script machen willst. du sagst ja du hast die werte aus einer variabel. wiso dann noch in ein script umformen wenn du das gleich weiterbearbeiten kannst? hast du dir die sache von neurosis mal angesehen? macht genau das was du willst. ist das nicht in deinem sinne oder weisst du nicht wie du das anwenden musst? gruss steff
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mundal Mitglied Techniker
Beiträge: 320 Registriert: 14.02.2005
|
erstellt am: 07. Apr. 2010 11:00 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, der Vorschlag (command "script" "xyz.scr") (while(/=(getvar "CMDACTIVE")0)(command)) funktioniert leider nicht. Am Vorschlag von Marcus habe ich gerade noch zu kämpfen ;-) Zúm Scriptvorschlag von Thomas: _polyline 1,1,0 2,5,0 7,8,0 Können in einem Script alle Befehle verwendet werden ? Habe es gerade mal mit dem Layerbefehl versucht, dort bleibt er nach folgender Angabe nach der ersten zeile im Befehl layer stehen. Mein Beispiel: _layer Ma Aussen FA 2 _layer Ma INNEN FA 3T _layer SE INNEN kopieren "F" -10,-10 10,10 -0,0 50,50 Ich habe die Eingaben bereits untereinander geschrieben un kam auch nicht weiter. Gruß Irene
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 07. Apr. 2010 11:10 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
|
Theodor Schoenwald Ehrenmitglied
Beiträge: 1672 Registriert: 16.04.2002
|
erstellt am: 07. Apr. 2010 13:34 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
Hallo Irene, nur zum Verständnis, so ist Deine Eingabe: _layer Ma Aussen FA 2 _layer Ma INNEN FA 3 Es gibt aber Befehle die zwei Return (Bestätigungen) benötigen. Ein Return kann auch mit einem Leerzeichen oder einem Zeilenumbruch gemacht werden. Entweder so (2 Leerzeichen): _layer Ma Aussen FA 2 _layer Ma INNEN FA 3 oder so (1 zsätzlicher Zeilenumbruch): _layer Ma Aussen FA 2 _layer Ma INNEN FA 3 Ich habe zum Verständnis Deine Wörter benutzt, besser ist es, so zu schreiben, wie Thmoas es vorgeschlagen hat. Gruß Theodor Schönwald www.cad-cnc.com
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
Beiträge: 1764 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2020 SP5.0 EPDM ---------------- Windows 10 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 09. Apr. 2010 09:25 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
Hallo Irene anbei ein kleines LISP mit einer Beispieldatei für Dein Problem Achtung: es erfolgt keine großartige Fehlerabfrage Was mM nach ganz nett ist ist, dass man sieht wie einfach man in LISP AutoCAD Befehle innerhalb eines Programms zusammenstellen und dann ausführen lassen kann.
------------------ Grüße Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |