Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Gruppieren mit AutoLISP

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Gruppieren mit AutoLISP (1998 mal gelesen)
DivePete
Mitglied


Sehen Sie sich das Profil von DivePete an!   Senden Sie eine Private Message an DivePete  Schreiben Sie einen Gästebucheintrag für DivePete

Beiträge: 5
Registriert: 22.02.2017

erstellt am: 22. Feb. 2017 11:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo liebe Foren-Mitglieder

Ich habe mich heute in diesem Forum angemeldet, da ich nicht mehr weiter weiss und auch mit Google bin ich nicht mehr weitergekommen. Wir sind im Lüftungsbau tätig und zeichnen daher immer mal wieder Lüftungskanäle. Um den Zeichnungsaufwand zu verringern, habe ich versucht ein kleines LISP-Programm zu schreiben, welches die Kanäle durch Eingabe von Parametern automatisch erzeugt. Das Programm funktioniert gut.
Die Kanäle werden häufig in der Zeichnung verschoben. Bis jetzt muss ich immer alle Linien mühsam markieren und manuell gruppieren. Ich möchte gerne, dass die erzeugten Linien automatisch als Gruppe definiert werden. Leider habe ich nicht herausgefunden, wie das gruppieren mit (Auto)LISP möglich ist. Oder stelle ich mir das zu einfach vor?

Es wäre super, wenn mir jemand weiterhelfen könnte. Vielen Dank im Voraus 

Hier noch der Code zu meinem kleine Programm:
(defun c:knl( / p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 breite laenge )
(setq p1 (getpoint "\nEinfuegepunkt waehlen: "))
(setq breite (GETREAL "\nKanalbreite eingeben: "))
(setq laenge (GETREAL "\nKanallaenge eingeben: "))

(setq p2 (polar p1 0 laenge))
(setq p3 (polar p2 (/ pi 2) breite))
(setq p4 (polar p1 (/ pi 2) breite))
(setq p5 (polar p4 (/ pi 2) 25))
(setq p6 (polar p1 (/(* pi 3)2) 25))
(setq p7 (polar p3 (/ pi 2) 25))
(setq p8 (polar p2 (/(* pi 3)2) 25))
(setq p9 (polar p4 0 20))
(setq p10 (polar p1 0 20))
(setq p11 (polar p3 pi 20))
(setq p12 (polar p2 pi 20))

(setvar "CLAYER" "0.3  ------------")
(command "linie" p1 p10 p12 p2 ""
"linie" p4 p9 p11 p3 ""
"linie" p5 p6 ""
"linie" p7 p8 "")
(setvar "CLAYER" "0.2  ------------")
(command "linie" p9 p10 ""
"linie" p11 p12 "")
)

Liebe Grüsse
Beat

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Meldin
Mitglied



Sehen Sie sich das Profil von Meldin an!   Senden Sie eine Private Message an Meldin  Schreiben Sie einen Gästebucheintrag für Meldin

Beiträge: 381
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 22. Feb. 2017 11:42    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für DivePete 10 Unities + Antwort hilfreich

Wären dynamische Böcke dafür nicht sinnvoller?

------------------
Gruß Wolfgang

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Rembetiko
Mitglied
CAD-Konstrukteur


Sehen Sie sich das Profil von Rembetiko an!   Senden Sie eine Private Message an Rembetiko  Schreiben Sie einen Gästebucheintrag für Rembetiko

Beiträge: 101
Registriert: 06.10.2015

erstellt am: 22. Feb. 2017 11:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für DivePete 10 Unities + Antwort hilfreich

InsertSMI('  %20');
Erschrocken
InsertSMI('  %20');

Wer um Himmelswillen kommt heute noch auf die Idee Lüftungskanäle mittels LISP-Routinen zu konstruieren? Oder warum? Das wurde vielleicht mal 1990 so gemacht, es gibt doch hinreichend Tools oder Applikationen die einem diese Arbeit nun wirklich erleichtern....

------------------
*So spielt das Leben sagte der Clown und malte sich ein Lächeln ins Gesicht*

[Diese Nachricht wurde von Rembetiko am 22. Feb. 2017 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadffm
Moderator
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 22. Feb. 2017 12:30    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für DivePete 10 Unities + Antwort hilfreich

Abgesehen davon ob man nicht vielleicht mit dem passenden Programm für diese Aufgabe arbeiten sollte.

Dynamische Blöcke sicher zum großen Teil sinnvoll eingesetzt werden könnten.

Ein normaler Block mit XY-Skalierung auch eine Kompromisslösung darstellt.

So würde ich schon mal eine geschlossene Polylinie + Linie den fünf Einzellinien vorziehen.

Ob man dann noch eine Gruppierung der 2 Objekte benötigt?

Falls ja: Für die Geometrie ist ja schon kein Lisp notwendig, auch nutzt du zum erstellen normale Autocadbefehle(Linie),
genau so kannst du auch den Befehl Gruppe benutzen zum gruppieren.

Anhand der geposteten Zeilen denke ich aber nicht das dir die Info ausreicht um es selbst umzusetzen?


Aber: Ich würde diese Art der Erstellung überhaupt nicht weiter verfolgen, das ist grausam!

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

DivePete
Mitglied


Sehen Sie sich das Profil von DivePete an!   Senden Sie eine Private Message an DivePete  Schreiben Sie einen Gästebucheintrag für DivePete

Beiträge: 5
Registriert: 22.02.2017

erstellt am: 22. Feb. 2017 13:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo Wolfgang

Zum Zeichnen verwende ich ProgeCAD. Da werden Dynamische Blöcke leider nicht unterstützt 

Gruss

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Meldin
Mitglied



Sehen Sie sich das Profil von Meldin an!   Senden Sie eine Private Message an Meldin  Schreiben Sie einen Gästebucheintrag für Meldin

Beiträge: 381
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 22. Feb. 2017 13:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für DivePete 10 Unities + Antwort hilfreich

Laut Google scheint es die zu geben. Aber wie es da schon steht.
Zitat:
progeCAD Professional,die beste Low Cost AutoCAD Alternative ...

------------------
Gruß Wolfgang

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

DivePete
Mitglied


Sehen Sie sich das Profil von DivePete an!   Senden Sie eine Private Message an DivePete  Schreiben Sie einen Gästebucheintrag für DivePete

Beiträge: 5
Registriert: 22.02.2017

erstellt am: 22. Feb. 2017 13:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
Original erstellt von Rembetiko:
InsertSMI('   %20');
Erschrocken
InsertSMI('   %20');

Wer um Himmelswillen kommt heute noch auf die Idee Lüftungskanäle mittels LISP-Routinen zu konstruieren? Oder warum? Das wurde vielleicht mal 1990 so gemacht, es gibt doch hinreichend Tools oder Applikationen die einem diese Arbeit nun wirklich erleichtern....


Hallo Rembetiko

Ich bin auf die Idee gekommen, das so zu erstellen... Von meiner Arbeit sind vlt. 5-10% von welchen ich in die Konstruktion stecke. Und das automatische Erstellen ist für mich bereits eine Verbesserung und Vereinfachung zur bisherigen Arbeitsweise.
Leider kenne ich die Tools und Applikationen nicht. Ich arbeite mit ProgeCAD und wenn es Tools gibt, die mich von den Kosten her nicht in den Ruin treiben  , schaue ich mir diese gerne an.

Vielen Dank für weitere Hinweise und Tipps

Gruss

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Rembetiko
Mitglied
CAD-Konstrukteur


Sehen Sie sich das Profil von Rembetiko an!   Senden Sie eine Private Message an Rembetiko  Schreiben Sie einen Gästebucheintrag für Rembetiko

Beiträge: 101
Registriert: 06.10.2015

AutoCAD Rel. 2.6 bis AutoCAD 2018
C.A.T.S. Applikation
AutoCAD Design Suite Ultimate 2017
Dell Precision 3620
Intel i7-7700K 4,2 GHz
32 GB Arbeitsspeicher
NVidia Quadro M2000
Windows 10 Pro 64-Bit
HP Designjet 2500 PS

erstellt am: 22. Feb. 2017 13:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für DivePete 10 Unities + Antwort hilfreich

Bei ProgeCAD muß ich passen, ist mir noch nie über den Weg gelaufen und von daher keinen blassen Schimmer was das kann oder nicht.....

Es wäre sicher geschickter Deine Systeminfo entsprechend zu ergänzen oder es bei der Thread-Eröffnung zumindest kund zu tun. Soweit ich sehe gibt es hier auch nicht wirklich ein Forum dazu...

------------------
*So spielt das Leben sagte der Clown und malte sich ein Lächeln ins Gesicht*

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Andreas Kraus
Mitglied
Elektrotechniker


Sehen Sie sich das Profil von Andreas Kraus an!   Senden Sie eine Private Message an Andreas Kraus  Schreiben Sie einen Gästebucheintrag für Andreas Kraus

Beiträge: 1356
Registriert: 11.01.2006

WIN 10
ACAD 2022

erstellt am: 22. Feb. 2017 14:25    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für DivePete 10 Unities + Antwort hilfreich

Ich zeichne alles was "Meterware" ist (Trassen, Rohre, Trageschienen,...) mit Multilinien.
Für meinen Bedarf ideal.

------------------
Geht nicht, gibts nicht

Gruß
Andreas

http://kraus-cad.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

DivePete
Mitglied


Sehen Sie sich das Profil von DivePete an!   Senden Sie eine Private Message an DivePete  Schreiben Sie einen Gästebucheintrag für DivePete

Beiträge: 5
Registriert: 22.02.2017

erstellt am: 22. Feb. 2017 14:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Zitat:
Original erstellt von cadffm:
Abgesehen davon ob man nicht vielleicht mit dem passenden Programm für diese Aufgabe arbeiten sollte.

Dynamische Blöcke sicher zum großen Teil sinnvoll eingesetzt werden könnten.

Ein normaler Block mit XY-Skalierung auch eine Kompromisslösung darstellt.

So würde ich schon mal eine geschlossene Polylinie + Linie den fünf Einzellinien vorziehen.

Ob man dann noch eine Gruppierung der 2 Objekte benötigt?

Falls ja: Für die Geometrie ist ja schon kein Lisp notwendig, auch nutzt du zum erstellen normale Autocadbefehle(Linie),
genau so kannst du auch den Befehl Gruppe benutzen zum gruppieren.

Anhand der geposteten Zeilen denke ich aber nicht das dir die Info ausreicht um es selbst umzusetzen?


Aber: Ich würde diese Art der Erstellung überhaupt nicht weiter verfolgen, das ist grausam!


Hallo cadffm

So wie der Kanal jetzt gezeichnet ist würde man 1 Polylinie und mindestens 4 weitere Linien benötigen (mit überlagerten Linien). Ich denke 5 Objekte zu einer Gruppe zusammenzufassen macht Sinn, wenn ich diese häufiger verschieben muss.

Wie Du richtig erkannt hast, befasse ich mich erst neu mit LISP. Ich bin kein Programmierer und daher ist das Programm auch aus einfachsten Funktionen aufgebaut. Mein kleines LISP-Programm macht jedoch was es soll und es hilft mir meine Arbeit ein wenig zu vereinfachen. Jedoch wäre das Programm noch besser, wenn die erzeugten Linien automatisch gruppiert würden. Dies bringe ich mit meinen LISP-Kenntnissen nicht hin. Deshalb habe ich diesen Thread eröffnet.

Wenn ich den CAD-Befehl für gruppieren mit Lisp ausführe, muss ich ja trotzdem die Objekte manuell markieren. So komme ich leider auch nicht weiter 

Für Antworten die mir weiter helfen bin ich wirklich dankbar...

Gruss

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Peter2
Ehrenmitglied V.I.P. h.c.




Sehen Sie sich das Profil von Peter2 an!   Senden Sie eine Private Message an Peter2  Schreiben Sie einen Gästebucheintrag für Peter2

Beiträge: 3701
Registriert: 15.10.2003

Win 10/64 Pro
AutoCAD MAP 3D 2018
BricsCAD 22

erstellt am: 22. Feb. 2017 14:52    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für DivePete 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von DivePete:
...muss ich ja trotzdem die Objekte manuell markieren. ...

Nein. Mache dir vor dem Zeichnen der Elemente einen leeren Auswahlsatz (Befehl: ssadd), füge jedes Element nach der Erstellung mit (entlast) dazu und übergib dann dem Gruppenbefehl die Variable, die den Auswahlsatz speichert.

------------------
Für jedes Problem gibt es eine einfache Lösung.
Die ist aber meistens falsch. ;-)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadffm
Moderator
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 22. Feb. 2017 15:02    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für DivePete 10 Unities + Antwort hilfreich

Es bleibt dir überlassen die Objekte per Hand zu wählen, oder das Programm
so anzupassen das es selbstständig die Objekte ermittelt und dem Gruppen-Befehl übergibt.

Ich denke du wirst durch ProgeCAD und Lisp nicht eingeschränkt an dieser Stelle  

Code:
(progn
(setq NewElements (ssadd))
(setq ELEM (entlast)) ; hier merken, welches Objekt aktuell "das Letzte" ist
(command "_.CIRCLE" "20,20" "5")
(command "_.CIRCLE" "20,20" "6")
(if ELEM ; Wenn vorher bereits Objekte vorhanden waren
(while (setq elem (entnext ELEM)); in einer Schleife alle neuen Elemente in einen Auswahlsatz packen (ssadd)
  (ssadd ELEM NewElements)
)
        (setq NewElements (ssget "_X" (list(cons 410 (getvar "CTAB")))))
)
(command "_copy" NewElements "" "0,0" "20,0")
)

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

DivePete
Mitglied


Sehen Sie sich das Profil von DivePete an!   Senden Sie eine Private Message an DivePete  Schreiben Sie einen Gästebucheintrag für DivePete

Beiträge: 5
Registriert: 22.02.2017

erstellt am: 22. Feb. 2017 16:50    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo cadffm

Vielen Dank für die Hilfe. Mit Deiner Codevorlage habe ich es genau so hinbekommen, wie ich mir es vorgestellt habe! Mit meinen "Programmierkenntnissen" hätte ich das nie und nimmer geschafft.

Vielen, vielen Dank   

Gruss Beat

PS: Kann ich den Thread irgendwie als "erledigt" markieren?

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Meldin
Mitglied



Sehen Sie sich das Profil von Meldin an!   Senden Sie eine Private Message an Meldin  Schreiben Sie einen Gästebucheintrag für Meldin

Beiträge: 381
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 22. Feb. 2017 16:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für DivePete 10 Unities + Antwort hilfreich

Ja der grüne Haken in der Antwort

------------------
Gruß Wolfgang

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz