| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: maximale anzahl von auswahlsätzen ... ??? (2394 mal gelesen)
|
argh Mitglied
Beiträge: 41 Registriert: 02.11.2006
|
erstellt am: 05. Apr. 2007 15:31 <-- editieren / zitieren --> Unities abgeben:
|
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1734 Registriert: 11.10.2004 Window 10 ACAD 2021 CIVIL 2021 BricsCAD V14-V22 Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz 16.0GB RAM NVIDIA GeForce GTX 1050<P>
|
erstellt am: 05. Apr. 2007 15:41 <-- editieren / zitieren --> Unities abgeben: Nur für argh
|
argh Mitglied
Beiträge: 41 Registriert: 02.11.2006
|
erstellt am: 05. Apr. 2007 17:22 <-- editieren / zitieren --> Unities abgeben:
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 05. Apr. 2007 17:37 <-- editieren / zitieren --> Unities abgeben: Nur für argh
mit activeX kannst du die Auswahlsatzobjekte löschen, ansonsten ist IMHO bei 127 Schluß. (vlax-for ITEM (vla-get-SelectionSets(vla-get-activedocument(vlax-get-acad-object))) (vla-delete ITEM) ) ------------------ - 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 |
argh Mitglied
Beiträge: 41 Registriert: 02.11.2006
|
erstellt am: 10. Apr. 2007 09:06 <-- editieren / zitieren --> Unities abgeben:
|
argh Mitglied
Beiträge: 41 Registriert: 02.11.2006
|
erstellt am: 10. Apr. 2007 12:21 <-- editieren / zitieren --> Unities abgeben:
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 10. Apr. 2007 14:39 <-- editieren / zitieren --> Unities abgeben: Nur für argh
hmm .. scheint so ... habs mal mit (setq i 0) (repeat 260 (setq i (1+ i)) (set (read(strcat "AWS"(itoa i))) (ssadd)) (princ "\n") (princ i) ) in einem jungfäulichen ACAD mit einer Zeichnung getestet .. bei 127 ist Schluß. Anschließend in einer neuen, parallel geöffneten Zeichnung (SDI=0) kommt dann bei erstem (ssadd) erneut die Fehlermeldung "Fehler: Maximale Anzahl von Auswahlsätzen überschritten", was darauf schließen läßt, das da wohl ein anderer Namespaces für die Auswahlsätze genutzt wird , als bei der ActivX-Variante, wo die Selectionssets innerhalb des Dokumentes verwaltet werden. Sorry fürs nicht weiterhelfen
------------------ - 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 |
argh Mitglied
Beiträge: 41 Registriert: 02.11.2006
|
erstellt am: 10. Apr. 2007 15:01 <-- editieren / zitieren --> Unities abgeben:
.. so nun hab ich so ziemlich alles probiert was ich im netz gefunden hab .. (gc) oder kleine funktionen zum löschen der selection sets .. hat alles nicht funktioniert. mir ist aufgefallen, dass "align", welches ich ziemlich häufig benutze die ganze sache erheblich verschlimmert. anscheinend benutzt "align" intern auch selection sets und hinterlässt diese dann im speicher. "align" war vorher schon ein problem, da es bei mir keine koordinaten mit mehr als 4 nachkommastellen vernünftig verarbeitet (folge: objekte lagen falsch im raum). wenn ich "align" auskommentiere kann ich bei weitem länger arbeiten ohne den selection-set-überlauf zu bekommen! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 823 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 12. Apr. 2007 02:42 <-- editieren / zitieren --> Unities abgeben: Nur für argh
Zitat: Original erstellt von argh: .. so nun hab ich so ziemlich alles probiert was ich im netz gefunden hab .. (gc)
Das Problem rührt daher, dass Picksets keine echten LISP-Daten sind, sondern sowas ähnliches wie Pointer auf offene Dateien. Ich habe schon vor vielen Jahren aufgegeben, in meinen Programmen Picksets zu verwenden. Jedes Pickset wird bei mir unmittelbar nach Erzeugung in eine Liste von Entitynamen umgewandelt, und mit dieser Liste kann man dann völlig LISP-konform weiter arbeiten, ohne auf irgend welche Begrenzungen der Datenstrukturen Rücksicht nehmen zu müssen. Verlust an Performance musst Du dabei nicht befürchten - eher im Gegenteil ... Code:
(defun mapent (fun ss / i) (repeat (setq i (sslength ss)) ((lambda (proc args / ss fun i) (apply proc args ) ) fun (list (ssname ss (setq i (1- i)))) ) ) )(defun ss2el (ss / res) (mapent (function (lambda (en) (setq res (cons en res)))) ss ) res ) (defun el2ss (eset / sset x) (setq sset (ssadd)) (mapcar '(lambda (x) (if (= 'ENAME (type x)) (setq sset (ssadd x sset)) ) ) eset ) sset )
Tom Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |