Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Rund um AutoCAD
  Anzahl Auswahlsätze

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:  Anzahl Auswahlsätze (850 mal gelesen)
FlorianP
Mitglied
Verm.-Ing


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

Beiträge: 44
Registriert: 04.12.2002

AutoCAD Map 2000i

erstellt am: 29. Sep. 2005 16:12    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,

ich hab mir ein Programm gebastelt, bei dem einige Auswahlsätze nacheinander erstellt werden.

Leider sind es für AutoCAD zuviel Auswahlsätze.

Gibt es eine Möglichkeit einen Auswahlsatz freizugeben um Platz für einen neuen zu machen?
Oder gibt es eine Systemvariable, wo man die Anzahl der Auswahlsätze erhöhen kann?

Viele Grüße

Florian

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

tunnelbauer
Ehrenmitglied V.I.P. h.c.
Bauingenieur



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

Beiträge: 7085
Registriert: 13.01.2004

Sie nannten ihn google.

erstellt am: 29. Sep. 2005 16:17    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 FlorianP 10 Unities + Antwort hilfreich

Hi,

könntest du bitte mal dein Anliegen konkretisieren !? Mit was kreierst du diese Auswahlsätze ? Und zuviele ? Das klingt jetzt etwas merkwürdig... Und wenn du auch noch verrätst für was du diese benötigst, dann gibts ja sogar vielleicht ein Work-Around (falls es wirklich zuviele sein sollten).

------------------
Grüsse

Thomas

[Diese Nachricht wurde von tunnelbauer am 29. Sep. 2005 editiert.]

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

Bernhard GSD
Mitglied



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

Beiträge: 482
Registriert: 29.08.2002

AutoCAD 2020(Deu); Windows 10 PRO x64(Deu)

erstellt am: 29. Sep. 2005 16:29    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 FlorianP 10 Unities + Antwort hilfreich

In Lisp-Programmen sollten Auswahlsätze immer in lokale Variablen gespeichert werden, die sind dann nur in der Funktion / in der Programm gültig, danach wird der Auswahlsatzspeicher freigegeben.

Code:

(defun c:lispprg( / aws1 aws2 aws3 ....)
...
)



------------------
Gruß aus Wien
Bernhard 

[Diese Nachricht wurde von Bernhard GSD am 29. Sep. 2005 editiert.]

[Diese Nachricht wurde von Bernhard GSD am 29. Sep. 2005 editiert.]

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

cad-intensiv
Mitglied
CAD-Anbieter


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

Beiträge: 31
Registriert: 14.06.2005

erstellt am: 29. Sep. 2005 17:39    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 FlorianP 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von FlorianP:
Hallo,

ich hab mir ein Programm gebastelt, bei dem einige Auswahlsätze nacheinander erstellt werden.

Leider sind es für AutoCAD zuviel Auswahlsätze.

Gibt es eine Möglichkeit einen Auswahlsatz freizugeben um Platz für einen neuen zu machen?
Oder gibt es eine Systemvariable, wo man die Anzahl der Auswahlsätze erhöhen kann?


Ich würde hier ganz dringend empfehlen, die Auswahlsätze vor der Zuweisung an Variablen jeweils in Listen von Entity-Namen umzuwandeln. Dann kannst Du so viele "Auswahlsätze" haben wie Du willst, und v.a. gibt es dann keine unerwünschten Seiteneffekte mehr, die PICKSETs mit sich bringen (PICKSETs sind nur Zeiger auf einen Auswahlsatz, also ungefähr so etwas wie der Dateideskriptor, den man mit den Funktion (open <filename> ) erhält).

Robert

------------------
Lisp-Seminare in Wien am 25. und 26. Sep 2005 und später in München, Frankfurt, Köln , Berlin ... -> Infos unter cad-intensiv@gmx.de

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

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



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

Beiträge: 2490
Registriert: 02.11.2001

Windows 10 64bit
AutoCAD Architecture 2018/2019 (deu/eng)
AEC-Collection 2019 (Revit und Zeugs)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung (mies implementierter Schrott)

erstellt am: 29. Sep. 2005 18: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 FlorianP 10 Unities + Antwort hilfreich

Hi Florian,
ui zuviele Auswahlsätze...
Das hört sich interessant und nach systematischem Fehler an ;-).
Poste doch mal Deinen Code, da werden wir bestimmt viele Vorschläge für Optimierungen haben...

------------------
Ciao,
Marc

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

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



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

Beiträge: 2490
Registriert: 02.11.2001

Windows 10 64bit
AutoCAD Architecture 2018/2019 (deu/eng)
AEC-Collection 2019 (Revit und Zeugs)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung (mies implementierter Schrott)

erstellt am: 29. Sep. 2005 18:41    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 FlorianP 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von cad-intensiv:
Ich würde hier ganz dringend empfehlen, die Auswahlsätze vor der Zuweisung an Variablen jeweils in Listen von Entity-Namen umzuwandeln

Mal aus Interesse:
Hast Du schon mal untersucht wie sich das auf die Performance bei Massenverarbeitung auswirkt?
Ist das Übertragen von Auswahlsätzen in Listen sehr rechenintensiv?

Magst Du dem Florian eine solche Funktion auch als Beispiel hier posten? Ich glaube nicht, dass er so etwas mal eben aus dem Handgelenk schüttelt.

------------------
Ciao,
Marc

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

cad-intensiv
Mitglied
CAD-Anbieter


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

Beiträge: 31
Registriert: 14.06.2005

erstellt am: 29. Sep. 2005 22:34    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 FlorianP 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von marc.scherer:
Mal aus Interesse:
Hast Du schon mal untersucht wie sich das auf die Performance bei Massenverarbeitung auswirkt?
Ist das Übertragen von Auswahlsätzen in Listen sehr rechenintensiv?

Magst Du dem Florian eine solche Funktion auch als Beispiel hier posten? Ich glaube nicht, dass er so etwas mal eben aus dem Handgelenk schüttelt.


Auf die Performance wirkt sich das nicht spürbar aus, Du kannst es ja gerne mal selber testen. Vermutlich ergeben sich dadurch sogar eher Performancegewinne, denn man kann ja jetzt mit sehr effizienten Listenoperationen auf die Elemente in den Auswahlsätzen zugreifen - und zwar ohne sich darüber Gedanken machen zu müssen, ob man dabei die bekannten Seiteneffekte auslöst.

Und wenn jemand nicht weiss, wie er aus einem Auswahlsatz mit drei Zeilen Lisp eine Liste der Entitynamen generiert, dann sollte er halt vielleicht doch eher erst mal einen Kurs belegen, anstatt sich hier zu einer Lösung durch zu betteln. Ich denke, dass das wirklich jeder hinkriegt, der auch nur elementare Lisp-Kenntnisse hat.

Aber wenn Du selbst schon nachfragst, will ich mal ein wenig meine Handgelenke schütteln:

Code:

(defun ss-to-el (ss / counter el)
  (repeat (sslength ss)
    (setq el (cons (ssname ss (counter+ 'counter 0)) el))
  )
)

Damit doch noch etwas Lehrreiches für die Allgemeinheit rüber kommt, verwende ich hier für's Initialisieren auf Startwert und Hochzählen von Zählern eine einfache Hilfsfunktion (counter+ 'counter 0). Diese Funktion gibt's hier gratis dazu :-)

Code:

(defun counter+ (var start)
  (if (not (eval var))
    (set var start)
    (set var (1+ (eval var)))
  )
)

Robert

------------------
Lisp-Seminare in Wien am 25. und 26. Sep 2005 und später in München, Frankfurt, Köln , Berlin ... -> Infos unter cad-intensiv@gmx.de

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

FlorianP
Mitglied
Verm.-Ing


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

Beiträge: 44
Registriert: 04.12.2002

AutoCAD Map 2000i

erstellt am: 30. Sep. 2005 07:57    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


S13_BMA-an-ELR.zip

 
Hallo und guten Morgen euch allen,

hey, das ist ja echt super klasse die vielen Antworten.

Nun kurz zum ersten:

Mein Programm soll Blöcke innerhalb eines Polygons finden. Das Polygon entspricht einem Raum und der Block ist ein Brandmelder.
Ich will mit dem Programm herausfinden, in welchem RAum der Branmelder sitzt.

Meine vorgehensweise:

Ich erstell mir ein Auswahlsatz mit allen Raumpolygonen. Danach arbeite ich jedes einzelne Polygon durch und erstell wiederum ein Auswahlsatz wobei ich alle enthaltenen Brandmelder selektiere.
D.h. ich erstell flür jeden Raum einen Auswahlsatz.

Zu dem Vorschlag von Bernhard,
hab ich gleich umgesetzt, hat jedoch nichts gebracht.
Normalerweise mach ich schon alle Variablen zu lokalen Variablen, doch zum Programmieren hab ich sie immer global, da ich dann sie auch abfragen kann.

Zu Roberts Idee kann ich noch nichts sagen, da ich es erst noch testen muss. Aber nochmals zu meinem Verständnis, ich erstell einen Auswahlsatz und weise die enthaltenen Objekte mit ihren Entitynamen einer Liste zu.
Einen Auswahlsatz habe ich doch dann auch erstellt!? Nur nicht einer Variable zugewiesen.

Im Anhang sende ich mal den Quellcode mit.

Vielen, vielen Dank schon mal im voraus.

Florian

Oh, ich muss mal mein Profil umstellen, da wir neuerdings auf Map 3D 2005 gewechselt haben.

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

CADmium
Moderator
Maschinenbaukonstrukteur




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

Beiträge: 13508
Registriert: 30.11.2003

Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.

erstellt am: 30. Sep. 2005 08:03    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 FlorianP 10 Unities + Antwort hilfreich

zu deinem geplanten Programm gucke dir mal auch diesen Thread an

------------------
- Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

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

marc.scherer
Ehrenmitglied V.I.P. h.c.
CAD-Administrator



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

Beiträge: 2490
Registriert: 02.11.2001

Windows 10 64bit
AutoCAD Architecture 2018/2019 (deu/eng)
AEC-Collection 2019 (Revit und Zeugs)
Wenn sich's nicht vermeiden läßt:
D-A-CH Erweiterung (mies implementierter Schrott)

erstellt am: 30. Sep. 2005 09:09    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 FlorianP 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von cad-intensiv:
Und wenn jemand nicht weiss, wie er aus einem Auswahlsatz mit drei Zeilen Lisp eine Liste der Entitynamen generiert, dann sollte er halt vielleicht doch eher erst mal einen Kurs belegen,...

lol, am besten belegt er den Kurs dann bei Dir?

Zitat:
Original erstellt von cad-intensiv:
Ich denke, dass das wirklich jeder hinkriegt, der auch nur elementare Lisp-Kenntnisse hat.

ICH denke, da liegst Du falsch. Wenn jemand schon 'nen Programmier- Background hat sicherlich. Wenn das aber nicht der Fall ist, kommt man auf solche Winkelzüge gar nicht erst, geschweige denn fängt man an zu modularisieren. Ich kenn' das noch aus meiner Anfangszeit, wäre mir nie eingefallen so etwas... Wenn ich mir meinen alten Code so anschaue ist das alles extrem kompliziert gedacht und umständlich, so ist das halt' wenn man einfach so drauf los codet und nur einen Teil der internen Funktionen kennt / begreift.

Finde ich aber klasse, das Du dem Kollegen noch 'ne vernünftige Sub nachgeschoben hast!


------------------
Ciao,
Marc

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

Bernhard GSD
Mitglied



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

Beiträge: 482
Registriert: 29.08.2002

AutoCAD 2020(Deu); Windows 10 PRO x64(Deu)

erstellt am: 30. Sep. 2005 09:12    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 FlorianP 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von FlorianP:

Normalerweise mach ich schon alle Variablen zu lokalen Variablen, doch zum Programmieren hab ich sie immer global, da ich dann sie auch abfragen kann.

Auch ich teste Programme global, die Produktionsversion ist dann aber lokal. Beim Testen ab und an mal eine neue Zeichnung anfangen oder ACAD neu starten.

------------------
Gruß aus Wien
Bernhard

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

archtools
Mitglied



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

Beiträge: 823
Registriert: 09.10.2004

Entwickler für AutoCAD, BricsCAD u.a., alle Systeme

erstellt am: 30. Sep. 2005 10:12    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 FlorianP 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von FlorianP:

Einen Auswahlsatz habe ich doch dann auch erstellt!? Nur nicht einer Variable zugewiesen.

Ja, und das ist der Casus Knaxus. Wie ich schon sagte: diese Zeiger auf die PICKSETs sind ganz ähnlich wie die Zeiger auf offene Dateien, und aufgrund schlampiger und nie korrigierter Programmierung von AutoCAD kann man halt nur eine begrenzte Anzahl von Auswahlsätzen gleichzeitig "offen" halten. In dem Moment, in dem Du eine Variable mit einem Zeiger auf einen Auswahlsatz auf NIL setzt, wird dieser Auswahlsatz geschlossen.

Damit Du die Sache etwas leichter verstehst, probier mal folgendes:

(setq ss1 (ssget)) ; Auswahlsatz bilden
-> <Selection set: 2>
(sslength ss1) ; Wie viele Elemente sind drin (bei mir 5)
-> 5
(setq ss-backup ss1) ; Backup von ss1 bilden
-> <Selection set: 2>
(ssdel (ssname ss1 0) ss1) ; aus dem Ausweahlsatz ss1 erstes Element entfernen, beachte, dass das Ergebnis nicht wieder an ss1 gebunden wird!
(sslength ss1) ; wie viele Elemente sind in ss1?
-> 4 ; und das, obwohl wir das Ergebnis von ssdel nicht in die Variable zurück geschrieben haben!
(sslength ss-backup)
-> 4 ; und sogar ss-backup hat jetzt vier nur noch Elemente, obwohl wir das ssdel doch auf ss1 angewendet haben und nicht auf ss-backup!

Verständlich wird das, wenn man weiss, dass ein Pickset der Art <Selection set: 2> in AutoLISP eben nur ein Zeiger auf eine andere Struktur ist. Es gibt hier nur einen einzigen (!) Auswahlsatz, und der Zeiger darauf wird an zwei verschiedene Variablen gebunden. Das ssdel verändert den einen und einzigen Auswahlsatz in diesem Beispiel, und egal, ob ich mir diesen Auswahlsatz via ss1 oder via ss-backup ansehe: er ist immer derselbe.

Jetzt sollte Dir klar sein, warum meine Lösung keine Probleme bereitet: es wird ja an keiner Stelle ein Auswahlsatz an eine Variable geunden. Ein Auswahlsatz wird erzeugt, es wird eine Liste daraus gemacht, und der Auswahlsatz wird ins Nirvana geschickt.

Wenn Du für irgend welche (command ...) Aufrufe später wieder einen Auswahlsatz aus den Entity-Listen benötigst, dann musst Du also wieder einen neuen Auswahlsatz erzeugen. Das geht so:

Code:

(defun el-to-ss (el / ss)
  (setq ss (ssadd))
  (mapcar (function (lambda (en) (ssadd en ss))) el)
  ss
)

Robert

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