| |
| 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: Kreise ersetzen (2189 mal gelesen)
|
mundal Mitglied Techniker
Beiträge: 320 Registriert: 14.02.2005
|
erstellt am: 09. Nov. 2011 10:19 <-- editieren / zitieren --> Unities abgeben:
Hallo LISP-Forum, ich möchte in meiner Zeichnung alle enthaltenen Kreise durch eine andere Kontur bzw. anderen Durchmesser ersetzen. Kennt jemand diesbezüglich bereits fertige LISP-Programme ? Gruß Heinz
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 09. Nov. 2011 10:24 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
|
mundal Mitglied Techniker
Beiträge: 320 Registriert: 14.02.2005
|
erstellt am: 09. Nov. 2011 10:26 <-- editieren / zitieren --> Unities abgeben:
|
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 Alles
|
erstellt am: 09. Nov. 2011 10:34 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 09. Nov. 2011 10:34 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
|
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 09. Nov. 2011 10:42 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
Zitat: Original erstellt von mundal: Hallo, ich habe Grundkenntnisse in LISP Kann (mit viel zeit und Aufwand) vorhandene Programme anpassen. Gruß Heinz
na dann: 1) Auswahlsatz über alle kreise bilden (ssget "_X" '((0 . "CIRCLE"))) 2) Schleife über den Auswahlsatz bauen (while .. 2.a) Elementdaten aus dem aktuellen Kreis auslesen (entget ..) 2.b) Elementdaten ändern (subst ..) 2.c) Element aktualisieren (entmod ..) Ich denke, die Hinweise genügen, dass man daraus ein Tool basteln kann. Bei (konkreten) Fragen ... Grüße Holger
------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 09. Nov. 2011 10:47 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
|
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 09. Nov. 2011 10:56 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
Zitat: Original erstellt von CADmium: besser (repeat (sslength AUSWAHL) ....
denk an das Laufzeitverhalten und die Zeit, was die ständige Prüfung kostet .. wie Axel schon sagte: "...auch wenn die Prozessoren immer schneller werden, muss man sie deshalb noch lange nicht quälen ...."
... oder noch besser mit (mapcar '(lambda (EL) ..)(if aws (bau_elemli aws))) siehe dazu auch hier:
Grüße Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mundal Mitglied Techniker
Beiträge: 320 Registriert: 14.02.2005
|
erstellt am: 10. Nov. 2011 10:26 <-- editieren / zitieren --> Unities abgeben:
|
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 10. Nov. 2011 10:59 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
@mundal Glückwunsch! Dann zeige doch der Allgemeinheit dein Endprodukt! Vllt. finden sich noch Verbesserungsvorschläge aus denen du und alle anderen lernen können!? Oder der nächste Hilfesuchende kann es gebrauchen... ------------------ 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 |
Meldin Mitglied
Beiträge: 398 Registriert: 15.07.2011 ACA2020 Windows10
|
erstellt am: 10. Nov. 2011 15:30 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
Hallo also mal zu @Holger und @Thomas ich würde es mir bis aufs äußerste verkneifen diese Code Zeilen zu verwenden. Code: (bau_elemli ALISTE)(defun bau_elemli (asatz / n elemli) (setq n 0) (repeat (sslength asatz) (setq elemli (cons (ssname asatz n) elemli) n (1+ n) ) ) elemli )
da diese wohl sehr unübersichtlich sind und das ganze wohl auch nicht viel schneller oder auch langsamer ist als das.
Code: (mapcar 'cadr (ssnamex ALISTE))
------------------ Gruß Wolfgang Alias: Rabbit007 und Wolli1 die aus unerklärlichen Gründen aus dem System hier gelöscht wurden. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 10. Nov. 2011 16:01 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
|
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 10. Nov. 2011 16:11 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
... es führen bekanntlich viele Wege nach Rom. Das ssnamex ist mir so überhaupt nicht bewusst gewesen, dass es das gibt. Man lernt eben immernoch dazu. Und genau dafür ist ja auch so ein Forum da, weshalb es jetzt wirklich interessant wäre, wie die eigentliche Fragestellung nun gelöst wurde. Grüße! Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 11. Nov. 2011 07:27 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
|
mundal Mitglied Techniker
Beiträge: 320 Registriert: 14.02.2005
|
erstellt am: 11. Nov. 2011 09:32 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, hier das Ergebnis welches so heiss begehrt ist. Bitte nehmt zur Kenntnis dass ich kein Hauptberuflicher LISPLER bin Aber wenn ich schon mal in Aktion bin dann möchte ich mein Lispprogramm erweitern indem ich noch die Durchmesser begrenze. Beispiel: Alle Kreise mit Durchmesser 5 "tauschen". Ihr könnt mir dabei gerne wieder helfen :-) Wie bereits erwähnt--> ich bin kein Profi !!! Gruß Heinz (defun c:k2r () (setq AWS (ssget "_X" '((0 . "CIRCLE"))) ) (setq I -1) (repeat(sslength AWS) (setq OBJ(ssname AWS(setq I(1+ I)))) (setq DATA(entget OBJ)) (command "_-insert" "viereck" (cdr(assoc 10 DATA)) 1 1 0) (entdel OBJ) ) ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 11. Nov. 2011 09:42 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
|
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 11. Nov. 2011 09:45 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
Zitat: Original erstellt von mundal: Hallo Zusammen, hier das Ergebnis welches so heiss begehrt ist. Bitte nehmt zur Kenntnis dass ich kein Hauptberuflicher LISPLER binAber wenn ich schon mal in Aktion bin dann möchte ich mein Lispprogramm erweitern indem ich noch die Durchmesser begrenze. Beispiel: Alle Kreise mit Durchmesser 5 "tauschen". Ihr könnt mir dabei gerne wieder helfen :-) Wie bereits erwähnt--> ich bin kein Profi !!! Gruß Heinz (defun c:k2r () (setq AWS (ssget "_X" '((0 . "CIRCLE"))) ) (setq I -1) (repeat(sslength AWS) (setq OBJ(ssname AWS(setq I(1+ I)))) (setq DATA(entget OBJ)) (command "_-insert" "viereck" (cdr(assoc 10 DATA)) 1 1 0) (entdel OBJ) ) )
... dann ergänze den (ssget.. - Ausdruck wie folgt: (ssget "_X" '((0 . "CIRCLE")(40 . 5.0))) Bei Fragen ... Grüße Holger ------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mundal Mitglied Techniker
Beiträge: 320 Registriert: 14.02.2005
|
erstellt am: 11. Nov. 2011 09:55 <-- editieren / zitieren --> Unities abgeben:
Hallo Zusammen, erstmal danke für die Tipps. Übers Wochenende kann ich dann in Aktion treten und meine "Sotware" vollenden. Das Ergebnis stelle ioch dann sofort der Allgemeinheit zur Verfügung. !!! Vielleicht wird ja dann aus mir noch was !!! Gruß Heinz 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: 11. Nov. 2011 10:19 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
@ Holger das geht nie im leben! GC 40 ist der radius nicht der Durchmesser! ------------------ Gruß Wolfgang Alias: Rabbit007 und Wolli1 die aus unerklärlichen Gründen aus dem System hier gelöscht wurden. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4187 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 11. Nov. 2011 11:01 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
Zitat: Original erstellt von Meldin: @ Holger das geht nie im leben! GC 40 ist der radius nicht der Durchmesser!
... das kommt davon, wenn man das eben mal schnell aus dem Kopf runtertippt. Grüße Holger
------------------ Holger Brischke CAD on demand GmbH Individuelle Lösungen von Heute auf Morgen. defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
mundal Mitglied Techniker
Beiträge: 320 Registriert: 14.02.2005
|
erstellt am: 11. Nov. 2011 13:24 <-- editieren / zitieren --> Unities abgeben:
Hi Holger, trotz des GC 40 hat es funktioniert - nochmals Danke. Kann ich den fixen Wert hier 5.0 durch eine Variable ersetzen ? Bespiel (setq durchmesser 5.0 ) (ssget "X" '((0 . "CIRCLE") (-4 . ">=") (40 . durchmesser ))) --> so ist es wohl falsch ich erhalte eine Fehlermeldung Gruß Heinz
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 11. Nov. 2011 13:38 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
|
mundal Mitglied Techniker
Beiträge: 320 Registriert: 14.02.2005
|
erstellt am: 14. Nov. 2011 11:15 <-- editieren / zitieren --> Unities abgeben:
Hallo Thomas, danke für den Cod-Schnipsel. Auch an Dich die Frage, kann ich denn den Durchmesser variabel eingeben. Habs über WE versucht aber bin irgendwie nicht ans Ziel gekommen. Zudem habe ich mit den Vergleichsoperationen mein Problem. In allen Beispielen die ich aus dem Internet ziehe und zu starten versuche erhalte ich stets die Meldung: "Überzählige CDR-Exemplare in Listenpaar ..." Gruß Heinz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 14. Nov. 2011 11:31 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
|
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 14. Nov. 2011 11:57 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
Hi, oder geht's hier eher um die syntaktische Frage? Zitat: Original erstellt von mundal: Hi Holger, trotz des GC 40 hat es funktioniert - nochmals Danke. Kann ich den fixen Wert hier 5.0 durch eine Variable ersetzen ?Bespiel (setq durchmesser 5.0 ) (ssget "X" '((0 . "CIRCLE") (-4 . ">=") (40 . durchmesser ))) --> so ist es wohl falsch ich erhalte eine Fehlermeldung Gruß Heinz
Code: (setq ss (ssget "X" (list '(0 . "CIRCLE") '(-4 . ">=") (cons 40 halberdurchmesser) ) ) )
[EDIT]Variablenname bei GC 40 auf halberdurchmesser geändert für alle, die später mal auf den Thread stoßen[/EDIT] Gruß CADchup ------------------ CADmaro.de [Diese Nachricht wurde von CADchup am 15. Nov. 2011 editiert.] [Diese Nachricht wurde von CADchup am 15. Nov. 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: 14. Nov. 2011 17:06 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
@CADchup @CADmium @mundal So nochmals Achtung! Gerade als Anfänger kann das einen zur weißglut bringen wenn man Sachen probiert die nachher nicht funktionieren und Heinz wird hier kontinuierlich der gleiche Fehler präsentiert. Und wenn man immer einen Fehler vorgegaukelt bekommt und es dann einfach nicht funktioniert bleibt das Lispwissen auch rudimentär. Zum eigentlichen. Ich habe es oben schon einmal angemahnt. GC 40 ist der Radius nicht der Durchmesser! also bitte überall wo Durchmesser steht durch dieses ersetzen (/ Durchmesser 2.0) In CADmium´s Code bitte das (setq Y(cdr(assoc 40(entget X)))) durch das (setq Y(* 2.0(cdr(assoc 40(entget X))))) ersetzen. ------------------ Gruß Wolfgang Alias: Rabbit007 und Wolli1 die aus unerklärlichen Gründen aus dem System hier gelöscht wurden. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 14. Nov. 2011 20:06 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
|
Meldin Mitglied
Beiträge: 398 Registriert: 15.07.2011 ACA2020 Windows10
|
erstellt am: 14. Nov. 2011 21:54 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
|
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 14. Nov. 2011 21:56 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
@wolfgang der user soll doch mitdenken! und die mit ABSICHT eingebauten kleinen Hindernisse selber finden! Ein Erfolgserlebnis ist das Größte" ------------------ 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 |
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: 15. Nov. 2011 07:12 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
|
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 15. Nov. 2011 09:25 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
|
Meldin Mitglied
Beiträge: 398 Registriert: 15.07.2011 ACA2020 Windows10
|
erstellt am: 15. Nov. 2011 10:15 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
(defun c:Plausibilität (@Dorfy @Jörn @CADchup / ) (foreach Benutzer-Beitrag (list @Dorfy @Jörn @CADchup) (if (wcmatch Benutzer-Beitrag "* *,* *") (princ "\n Ja, da bin ich gleicher Meinung. ") (progn (princ "\n Wat ?! Warum sollte man eine Art von Plausibilität hier anwenden.") ;;(setvar "Kopfschütteln" "An") ; Kann bei Bedarf eingeschaltet werden. (princ "\n Also wenn du auf einen Fehler hingewiesen wirst, machst du also munter und falsch weiter! Weil irgendwann wird dir der Fehler ja selbst auffallen. Daher ist das für mich eher Ignoranz als Plausibilität") ;;(setvar "Kopfschütteln" "Aus") ; Kann bei Bedarf eingeschaltet werden. ) ) ) (princ "Programm wurde mit viel Freude und Humor erfolgreich abgeschlossen! . Bis bald " ) ) ------------------ Gruß Wolfgang Alias: Rabbit007 und Wolli1 die aus unerklärlichen Gründen aus dem System hier gelöscht wurden. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 15. Nov. 2011 10:21 <-- editieren / zitieren --> Unities abgeben: Nur für mundal
|