| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: Brauche Hilfe (1878 mal gelesen)
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 17. Aug. 2011 11:30 <-- editieren / zitieren --> Unities abgeben:
Ich möchte gern an jeden Punkt eine Höhe schreiben lassen. Es habert daran wie ich die ausgelesen Punkthöhen an command "text" übergeben soll (defun c:xx ( / AWS OBJ DATA ) (prompt "\nPunkte wählen: \n") (setq AWS (ssget '((0 . "POINT")))) (progn (setq I -1) (repeat (sslength AWS) (setq OBJ (ssname AWS(setq I (1+ I)))) (setq DATA (entget OBJ)) (command "text" "s" "txt" (cdr (assoc 10 DATA))"" "0") (cdr (cdr(cdr(assoc 10 data)))) "" ) ) )
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 17. Aug. 2011 11:44 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 17. Aug. 2011 12:21 <-- editieren / zitieren --> Unities abgeben:
|
Meldin Mitglied
Beiträge: 398 Registriert: 15.07.2011 ACA2020 Windows10
|
erstellt am: 17. Aug. 2011 18:26 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Hallo so würde es z.B. auch gehen! Code: (defun c:xx (/ AWS OBJ DATA) (prompt "\nPunkte wählen: \n") (setq AWS (ssget '((0 . "POINT")))) (progn (setq I -1) (repeat (sslength AWS) (setq OBJ (ssname AWS (setq I (1+ I)))) (setq DATA (entget OBJ)) (command "_-text" (cdr (assoc 10 DATA)) "2.5" "0" (vl-princ-to-string (cdr (cdr (cdr (assoc 10 data))))) ) ) ) )
------------------ Gruß Wolfgang Alias: Rabbit007 und Wolli1 die aus unerklärlichen Gründen aus dem System hier gelöscht wurden. [Diese Nachricht wurde von Meldin am 17. Aug. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 22. Aug. 2011 09:47 <-- editieren / zitieren --> Unities abgeben:
verstehe subst und entmod micht richtig einzusetzen. Ein Beispiel dazu (setq NUM (getint "Wert eingeben:")) (if (setq AWS (ssget '((0 . "TEXT")))) (progn (setq I -1) (repeat (sslength AWS) (setq OBJ (ssname AWS(setq I (1+ I)))) (setq DATA (cdr (assoc 1 (entget OBJ)))) (setq ERG (+ (atoi DATA) NUM)) ) (entmod DATA (subst (cons 1 ERG) (cons 1 DATA) DATA)) [Diese Nachricht wurde von cadplayer am 22. Aug. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 22. Aug. 2011 11:27 <-- editieren / zitieren --> Unities abgeben:
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 22. Aug. 2011 11:36 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 22. Aug. 2011 12:42 <-- editieren / zitieren --> Unities abgeben:
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 22. Aug. 2011 12:44 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 22. Aug. 2011 12:46 <-- editieren / zitieren --> Unities abgeben:
rtos ... habs gerade gefunden woran liegt es, dass mir die Nachkommastellen nicht richtig addiert werden (setq NUM (getreal "Wert eingeben:")) (if (setq AWS (ssget '((0 . "TEXT")))) (progn (setq I -1) (repeat (sslength AWS) (setq OBJ (ssname AWS(setq I (1+ I)))) (setq DATA (cdr (assoc 1 (entget OBJ)))) (setq ERG (+ (atoi DATA) NUM)) ) (setq ERG (subst (cons 1 (rtos ERG 2 2)) (assoc 1 (entget OBJ)) (entget OBJ))) (entmod ERG) ) ) [Diese Nachricht wurde von cadplayer am 22. Aug. 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. Aug. 2011 13:41 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
|
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 22. Aug. 2011 13:44 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Zitat: Original erstellt von cadplayer: rtos ... habs gerade gefundenworan liegt es, dass mir die Nachkommastellen nicht richtig addiert werden ... (setq ERG (+ (atoi DATA) NUM)) ...
sie werden richtig addiert! vllt sollst du den Eingangswert DATA auch mit Kommastellen übergeben?!? atof? vllt.?
------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 22. Aug. 2011 16:54 <-- editieren / zitieren --> Unities abgeben:
Ich würde gern den Code etwas verbessern 1) Beispielsweise lässt sich der Aufruf NUE nur mit ESC-taste abbrechen. Besser wäre eine Nachfrage: "wollen sie fortsetzen mit NUE (einfache Nummerierung) oder NUP Nummerierung von Polylinien?" 2) Toppen würde, wenn die Datenbank schon untersucht wird, ob die Nummer bereits vergeben ist (princ "\nSelect routine Simple number [nue] or Polyline number [nup]\n") (defun c:nue () (simplenumber)) (defun c:nup () (polynumber)) (defun simplenumber ( / num pkt) (setq num (getreal "Select start number: ")) (if (= num) (progn (repeat 100 (setq pkt (getpoint "Select point: ")) (command "insert" "koordinatpunkt" pkt 1 1 0 (rtos NUM 2 0) "" ) (setq num (1+ num)) ) ) ) )
(defun polynumber ( / num ent entlst) (setq num (getreal "Select start number: ") num (- num 1)) (setq ent (car (entsel "\nSelect polyline "))) (setq entlst (entget ent) ) (if (= (cdr (assoc 0 entlst)) "LWPOLYLINE") (foreach gcpair entlst (cond ((= (car gcpair) 10) (setq num (1+ num)) (command "insert" "koordinatpunkt" (cdr gcpair) 1 1 0 (rtos NUM 2 0) "" )) ) ) ) ) [Diese Nachricht wurde von cadplayer am 24. Aug. 2011 editiert.]
[Diese Nachricht wurde von cadplayer am 24. Aug. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Meldin Mitglied
Beiträge: 398 Registriert: 15.07.2011 ACA2020 Windows10
|
erstellt am: 24. Aug. 2011 11:54 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Hallo, also ich kann dir auf deinem Weg nicht ganz folgen. Aber ich probiere mich mal. zu simplenumber: Warum fragst du als Eingabeaufforderung einen real Wert ab (getreal) und machst dann einen Int daraus (rtos NUM 2 0) . Benötigst du genau repeat 100 ? oder wusstest du nicht wie man eine fortwährende Schleife setzt? Ich habe mal simplenumber ein wenig gekürzt ohne Garantie das läuft da ich keine engl. Vers. besitze.
Code: (defun simplenumber ( / num) (if (setq num (1-(getint "Select start number: "))) (while T (command "insert" "koordinatpunkt" (getpoint "Select point: ") 1 1 0 )(itoa(setq num (1+ num))) "" ) ) )
zu polynumber: Sollte auch mal um einiges gekürzt werden! habe ich mir mal gespart. Auch das real Problem. Die var ent benötigst du gar nicht. Um an die GC 10 Werte zu kommen hätte ich das bevorzugt (vl-remove-if-not '(lambda (x)(= (car X)10))entlst) und nicht den schönen Cond missbraucht. Wenn du gewollt Unterbrechungen weiterverarbeiten willst solltest du dir mal *error* vl-catch-all-apply (vl-catch-all-error-p) anschauen.
Wenn du Entscheidungen abfragen willst schau dir mal getkword grread an. Kurzer Nachtrag noch um deine Datenbank wie du es hier nennst zu durchsuchen ob Einträge schon vorhanden sind wäre ssget für dich von Bedeutung. ------------------ Gruß Wolfgang Alias: Rabbit007 und Wolli1 die aus unerklärlichen Gründen aus dem System hier gelöscht wurden. [Diese Nachricht wurde von Meldin am 24. Aug. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadplayer Ehrenmitglied CADniker
Beiträge: 1833 Registriert: 28.04.2009 Windows 10 64bit system Autocad Civil3d 2020 ENGLISH Visual Studio 2019 OpenDCL.Runtime.9<P>
|
erstellt am: 24. Aug. 2011 14:39 <-- editieren / zitieren --> Unities abgeben:
Toll, nur zu wo es zu kürzen geht ... ich halte mit dir Leider sind meine Einsätze von Vlisp nur begrenzt, also aufbaufähig wie würde denn so eine routine ausschauen, die es erlaubt wieder an den Programmursprung zu gelangen. ungefähr so beim Drücken von ESC fragen Programmende ja/nein bei ja wiederum nach der Startnummer fragen. PS. (wie erklärt sich ESC via Lisp) 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: 24. Aug. 2011 14:57 <-- editieren / zitieren --> Unities abgeben: Nur für cadplayer
Zitat: Original erstellt von cadplayer: ... wie würde denn so eine routine ausschauen, die es erlaubt wieder an den Programmursprung zu gelangen. ...
ich helf dir mal beim Suchen einfach mit vl-catch-all-apply füttern - beißt auch nicht ------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |