| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Mit SAP ERP/PLM den Anlagenbau perfekt organisiert - NEUMAN & ESSER GROUP (CIDEON, SAP, ERP, PLM, CAD), ein Anwenderbericht |
Autor
|
Thema: Doppelte Linien/Elemente im Block (6645 mal gelesen)
|
SimonGB Mitglied Project Engineer
Beiträge: 37 Registriert: 26.11.2009 WIN 7 Intel Xeon Quad Core W3565 @3,2GHz; 24GB RAM NVIDIA Quadro 2000 1 GB DDR5 Creo elements/direct modeling Creo elements/direct drafting Acad 2012 Acad Mechanical 2012 Inventor Fusion 2012
|
erstellt am: 26. Jan. 2011 17:47 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen. Hat einer eine Idee wie ich viele doppelte Linien/Elemente in viele verschiedene Blöcke und Block in Blöcke und Block in Blöcke in Blöcke und und und... löschen kann? Mit dem Befehl overkill kann man ja nur direkt die Objekte auswählen... Danke für eure Hilfe Gruß Simon Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Kramer24 Ehrenmitglied V.I.P. h.c. Architekt
Beiträge: 5896 Registriert: 09.11.2001 Acad Architecture 2023 WIN 10
|
erstellt am: 26. Jan. 2011 18:19 <-- editieren / zitieren --> Unities abgeben: Nur für SimonGB
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 Hinweis: Meine Mitarbeit auf CAD.DE ist fakultativ, unentgeltlich und beruht nur auf einem ausgeprägtem Helfersyndrom.
|
erstellt am: 27. Jan. 2011 08:16 <-- editieren / zitieren --> Unities abgeben: Nur für SimonGB
|
SimonGB Mitglied Project Engineer
Beiträge: 37 Registriert: 26.11.2009 WIN 7 Intel Xeon Quad Core W3565 @3,2GHz; 24GB RAM NVIDIA Quadro 2000 1 GB DDR5 Creo elements/direct modeling Creo elements/direct drafting Acad 2012 Acad Mechanical 2012 Inventor Fusion 2012
|
erstellt am: 27. Jan. 2011 08:28 <-- editieren / zitieren --> Unities abgeben:
Danke für eure schnellen Antworten. Es sind allerdings mehrere hundert Blöcke. Is ne Ableitung ausm 3D und ne Fremdzeichnung die ich abspecken will. Programmierbar ist sovieles wenn mans kann... Ich dachte sowas gibts schon. Is ja net so abwägig in mehreren Blöcken doppelte Linien zu löschen?!?! Danke nochmals. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1451 Registriert: 11.01.2006 WIN 10 ACAD 2022 BricsCAD V23
|
erstellt am: 27. Jan. 2011 08:43 <-- editieren / zitieren --> Unities abgeben: Nur für SimonGB
|
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1451 Registriert: 11.01.2006 WIN 10 ACAD 2022 BricsCAD V23
|
erstellt am: 27. Jan. 2011 08:58 <-- editieren / zitieren --> Unities abgeben: Nur für SimonGB
So, ferdisch Ich habs zwar mal kurz getestet und denke daß es geht aber wenn was ist - melden. Ich hab die Programme die noch gebraucht werden auch dazukopiert und hoffentlich nichts vergessen. Ist noch nicht die endgültige Version weil ich da grade am Basteln bin aber die meißten Objekte werden schon aussortiert. Ach ja - die Bedienung: k_e008 eintippen (vorher natürlich das ganze Ding laden) - entweder Objekte wählen - oder NICHTS wählen, dann wird alles bearbeitet auch in Blöcken Viel Spass damit (defun c:k_e008 (/ DATA1 DATA2 DATA_LIST ENT_LIST ENT_NAME N) ;;; Doppelte Objekte löschen (defun k_e008_ent_list (ent_list) (setq n (length ent_list)) (setq data_list (vl-sort (mapcar '(lambda (ent_name) (princ (strcat "\r" (itoa n) " ")) (setq n (1- n)) (list (vl-princ-to-string (vl-sort (append (k_del_ent_gruppe (entget ent_name) (list -1 5 100 330 340 350 360) ) (k_get_data ent_name "*") ) '(lambda (s1 s2) (< (vl-princ-to-string (car s1)) (vl-princ-to-string (car s2)) ) ) ) ) ent_name ) ) ent_list ) '(lambda (d1 d2) (< (car d1) (car d2)) ) ) ) (print "Daten verarbeiten") (print) (setq n (length data_list)) (mapcar '(lambda (data1 data2) (princ (strcat "\r" (itoa n) " ")) (setq n (1- n)) (if (equal (car data1) (car data2)) (vla-delete (vlax-ename->vla-object (nth 1 data1))) ) ) (reverse (cdr (reverse data_list))) (cdr data_list) ) ) (if (setq ent_list (k_satz->entlist (ssget))) (k_e008_ent_list ent_list) (progn (vlax-for block (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)) ) (setq ent_list nil) (vlax-for obj block (setq ent_list (cons (vlax-vla-object->ename obj) ent_list)) ) (k_e008_ent_list ent_list) ) ) ) (princ) ) (defun k_del_ent_gruppe (ent_data gruppe_list / l gruppe) (if (/= (type gruppe_list) 'list) (setq gruppe_list (list gruppe_list)) ) (foreach gruppe gruppe_list (setq l (length ent_data) ent_data (vl-remove (assoc gruppe ent_data) ent_data) ) (while (/= l (length ent_data)) (setq l (length ent_data) ent_data (vl-remove (assoc gruppe ent_data) ent_data) ) ) ) ent_data ) (defun k_get_data (ent_name bez / att_list obj_name data data_list dyn_list ENT_DATA EXDAT OBJ PROP ) (if (= (type ent_name) 'vla-object) (setq ent_name (vlax-vla-object->ename ent_name)) ) (setq obj_name (vlax-ename->vla-object ent_name)) (if (and (vlax-property-available-p obj_name "hasattributes") (= (vla-get-hasattributes obj_name) :vlax-true) (not (minusp (vlax-safearray-get-u-bound (vlax-variant-value (vla-getattributes obj_name) ) 1 ) ) ) ) (setq att_list (mapcar '(lambda (obj) (list (vla-get-tagstring obj) (vla-get-textstring obj)) ) (vlax-safearray->list (vlax-variant-value (vla-getattributes obj_name) ) ) ) ) ) (if (and (vlax-property-available-p obj_name "isdynamicblock" ) (= (vla-get-isdynamicblock obj_name) :vlax-true) ) (setq dyn_list (vl-remove 'nil (mapcar '(lambda (prop) (if (= (vla-get-show prop) :vlax-true) (list (vla-get-propertyname prop) (vlax-variant-value (vla-get-value prop)) ) ) ) (if (vl-catch-all-error-p (vl-catch-all-apply 'vlax-safearray->list (list (vlax-variant-value (vla-getdynamicblockproperties obj_name ) ) ) ) ) nil (vlax-safearray->list (vlax-variant-value (vla-getdynamicblockproperties obj_name ) ) ) ) ) ) ) ) (setq ent_data (entget ent_name (list "KRAUS"))) (if (setq exdat (assoc -3 ent_data)) (progn (setq exdat (cdr (assoc "KRAUS" (cdr exdat)))) (while exdat (setq data_list (cons (list (cdr (nth 0 exdat)) (cdr (nth 1 exdat))) data_list ) ) (setq exdat (cddr exdat)) ) ) ) (cond ((= (type bez) 'str) (if (= bez "*") (progn (setq data (append att_list data_list dyn_list ) ) ) (progn (if (assoc bez dyn_list) (setq data (nth 1 (assoc bez dyn_list))) (if (assoc bez att_list) (setq data (nth 1 (assoc bez att_list))) (if (assoc bez data_list) (setq data (nth 1 (assoc bez data_list))) ) ) ) ) ) ) ((= (type bez) 'list) (setq data (mapcar '(lambda (bez / data) (cond ((assoc bez dyn_list) (setq data (nth 1 (assoc bez dyn_list))) ) ((assoc (strcase bez) dyn_list) (setq data (nth 1 (assoc (strcase bez) dyn_list))) ) ((assoc bez att_list) (setq data (nth 1 (assoc bez att_list))) ) ((assoc (strcase bez) att_list) (setq data (nth 1 (assoc (strcase bez) att_list))) ) ((assoc bez data_list) (setq data (nth 1 (assoc bez data_list))) ) ((assoc (strcase bez) data_list) (setq data (nth 1 (assoc (strcase bez) data_list))) ) ) (list bez data) ) bez ) ) ) ) data ) (defun k_satz->entlist (satz / n ent_list) (if (= (type satz) 'PICKSET) (progn (setq n (sslength satz)) (repeat (sslength satz) (setq n (1- n)) (setq ent_list (cons (ssname satz n) ent_list)) ) ) ) ) ------------------ Gruß Andreas http://kraus-cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
SimonGB Mitglied Project Engineer
Beiträge: 37 Registriert: 26.11.2009 WIN 7 Intel Xeon Quad Core W3565 @3,2GHz; 24GB RAM NVIDIA Quadro 2000 1 GB DDR5 Creo elements/direct modeling Creo elements/direct drafting Acad 2012 Acad Mechanical 2012 Inventor Fusion 2012
|
erstellt am: 27. Jan. 2011 09:08 <-- editieren / zitieren --> Unities abgeben:
|
Mancunian Mitglied
Beiträge: 11 Registriert: 01.02.2011 ACAD 2011
|
erstellt am: 01. Feb. 2011 14:33 <-- editieren / zitieren --> Unities abgeben: Nur für SimonGB
|
cadffm Moderator 良い精神
Beiträge: 22171 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 01. Feb. 2011 14:47 <-- editieren / zitieren --> Unities abgeben: Nur für SimonGB
|
Mancunian Mitglied
Beiträge: 11 Registriert: 01.02.2011 ACAD 2011
|
erstellt am: 01. Feb. 2011 14:50 <-- editieren / zitieren --> Unities abgeben: Nur für SimonGB
|
cadffm Moderator 良い精神
Beiträge: 22171 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 01. Feb. 2011 15:12 <-- editieren / zitieren --> Unities abgeben: Nur für SimonGB
|
Mancunian Mitglied
Beiträge: 11 Registriert: 01.02.2011 ACAD 2011
|
erstellt am: 01. Feb. 2011 15:15 <-- editieren / zitieren --> Unities abgeben: Nur für SimonGB
Befehl: (LOAD "C:/Program Files/Autodesk/ACADM2011_DE/Support/k_e008.lsp") Objekte wählen: 1 gefunden Objekte wählen: 1 "Daten verarbeiten" ; Fehler: Überzählige rechte Klammer in Eingabe Keine Ahnung woher das kommt
So habe ich es in die LSP Datei eingetragen: "(defun c:k_e008 (/ DATA1 DATA2 DATA_LIST ENT_LIST ENT_NAME N)" (vl-load-com) ;;; Doppelte Objekte löschen (defun k_e008_ent_list (ent_list) (setq n (length ent_list)) (setq data_list (vl-sort (mapcar '(lambda (ent_name) (princ (strcat "\r" (itoa n) " ")) (setq n (1- n)) (list (vl-princ-to-string (vl-sort (append (k_del_ent_gruppe (entget ent_name) (list -1 5 100 330 340 350 360) ) (k_get_data ent_name "*") ) '(lambda (s1 s2) (< (vl-princ-to-string (car s1)) (vl-princ-to-string (car s2)) ) ) ) ) ent_name ) ) ent_list ) '(lambda (d1 d2) (< (car d1) (car d2)) ) ) ) (print "Daten verarbeiten") (print) (setq n (length data_list)) (mapcar '(lambda (data1 data2) (princ (strcat "\r" (itoa n) " ")) (setq n (1- n)) (if (equal (car data1) (car data2)) (vla-delete (vlax-ename->vla-object (nth 1 data1))) ) ) (reverse (cdr (reverse data_list))) (cdr data_list) ) ) (if (setq ent_list (k_satz->entlist (ssget))) (k_e008_ent_list ent_list) (progn (vlax-for block (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object)) ) (setq ent_list nil) (vlax-for obj block (setq ent_list (cons (vlax-vla-object->ename obj) ent_list)) ) (k_e008_ent_list ent_list) ) ) ) (princ) ) (defun k_del_ent_gruppe (ent_data gruppe_list / l gruppe) (if (/= (type gruppe_list) 'list) (setq gruppe_list (list gruppe_list)) ) (foreach gruppe gruppe_list (setq l (length ent_data) ent_data (vl-remove (assoc gruppe ent_data) ent_data) ) (while (/= l (length ent_data)) (setq l (length ent_data) ent_data (vl-remove (assoc gruppe ent_data) ent_data) ) ) ) ent_data ) (defun k_get_data (ent_name bez / att_list obj_name data data_list dyn_list ENT_DATA EXDAT OBJ PROP ) (if (= (type ent_name) 'vla-object) (setq ent_name (vlax-vla-object->ename ent_name)) ) (setq obj_name (vlax-ename->vla-object ent_name)) (if (and (vlax-property-available-p obj_name "hasattributes") (= (vla-get-hasattributes obj_name) :vlax-true) (not (minusp (vlax-safearray-get-u-bound (vlax-variant-value (vla-getattributes obj_name) ) 1 ) ) ) ) (setq att_list (mapcar '(lambda (obj) (list (vla-get-tagstring obj) (vla-get-textstring obj)) ) (vlax-safearray->list (vlax-variant-value (vla-getattributes obj_name) ) ) ) ) ) (if (and (vlax-property-available-p obj_name "isdynamicblock" ) (= (vla-get-isdynamicblock obj_name) :vlax-true) ) (setq dyn_list (vl-remove 'nil (mapcar '(lambda (prop) (if (= (vla-get-show prop) :vlax-true) (list (vla-get-propertyname prop) (vlax-variant-value (vla-get-value prop)) ) ) ) (if (vl-catch-all-error-p (vl-catch-all-apply 'vlax-safearray->list (list (vlax-variant-value (vla-getdynamicblockproperties obj_name ) ) ) ) ) nil (vlax-safearray->list (vlax-variant-value (vla-getdynamicblockproperties obj_name ) ) ) ) ) ) ) ) (setq ent_data (entget ent_name (list "KRAUS"))) (if (setq exdat (assoc -3 ent_data)) (progn (setq exdat (cdr (assoc "KRAUS" (cdr exdat)))) (while exdat (setq data_list (cons (list (cdr (nth 0 exdat)) (cdr (nth 1 exdat))) data_list ) ) (setq exdat (cddr exdat)) ) ) ) (cond ((= (type bez) 'str) (if (= bez "*") (progn (setq data (append att_list data_list dyn_list ) ) ) (progn (if (assoc bez dyn_list) (setq data (nth 1 (assoc bez dyn_list))) (if (assoc bez att_list) (setq data (nth 1 (assoc bez att_list))) (if (assoc bez data_list) (setq data (nth 1 (assoc bez data_list))) ) ) ) ) ) ) ((= (type bez) 'list) (setq data (mapcar '(lambda (bez / data) (cond ((assoc bez dyn_list) (setq data (nth 1 (assoc bez dyn_list))) ) ((assoc (strcase bez) dyn_list) (setq data (nth 1 (assoc (strcase bez) dyn_list))) ) ((assoc bez att_list) (setq data (nth 1 (assoc bez att_list))) ) ((assoc (strcase bez) att_list) (setq data (nth 1 (assoc (strcase bez) att_list))) ) ((assoc bez data_list) (setq data (nth 1 (assoc bez data_list))) ) ((assoc (strcase bez) data_list) (setq data (nth 1 (assoc (strcase bez) data_list))) ) ) (list bez data) ) bez ) ) ) ) data ) (defun k_satz->entlist (satz / n ent_list) (if (= (type satz) 'PICKSET) (progn (setq n (sslength satz)) (repeat (sslength satz) (setq n (1- n)) (setq ent_list (cons (ssname satz n) ent_list)) ) ) ) ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22171 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 01. Feb. 2011 15:23 <-- editieren / zitieren --> Unities abgeben: Nur für SimonGB
Die Anführungszeichen waren wohl ein Missverständnis, du solltest nur (vl-load-com) ergänzen, mache aus "(defun c:k_e008 (/ DATA1 DATA2 DATA_LIST ENT_LIST ENT_NAME N)" wieder (defun c:k_e008 (/ DATA1 DATA2 DATA_LIST ENT_LIST ENT_NAME N) dann laden und starten und wenn er nach einem Objekt fragt einfach Enter drücken . ------------------ CAD.de System-Angaben - CAD on demand - User:FAQ(Acad) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mancunian Mitglied
Beiträge: 11 Registriert: 01.02.2011 ACAD 2011
|
erstellt am: 01. Feb. 2011 15:28 <-- editieren / zitieren --> Unities abgeben: Nur für SimonGB
Irgendwie stelle ich mich im Moment massiv zu doof an: Wenn ich es starte kommt folgendes: Befehl: (LOAD "C:/Program Files/Autodesk/ACADM2011_DE/Support/k_e008.lsp") K_SATZ->ENTLIST Danach aber gar nix mehr
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Mancunian Mitglied
Beiträge: 11 Registriert: 01.02.2011 ACAD 2011
|
erstellt am: 02. Feb. 2011 08:50 <-- editieren / zitieren --> Unities abgeben: Nur für SimonGB
|
Andreas Kraus Mitglied Elektrotechniker
Beiträge: 1451 Registriert: 11.01.2006 WIN 10 ACAD 2022 BricsCAD V23
|
erstellt am: 02. Feb. 2011 10:23 <-- editieren / zitieren --> Unities abgeben: Nur für SimonGB
Bin wieder fit (war krank) so - und los gehts, ja mein "vl-load-com-Problem" ich vergess es immer wieder Ich hab das mal ergänzt und als LSP-Datei angehängt, außerdem hab ich ne VLX gemacht. Welche du benutzt sollte egal sein. Probiers aus, sollte gehn. Bei mir gehts ------------------ Gruß Andreas http://kraus-cad.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3334 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 02. Feb. 2011 10:27 <-- editieren / zitieren --> Unities abgeben: Nur für SimonGB
|
Küssi1 Mitglied Konstrukteur
Beiträge: 3 Registriert: 04.02.2011
|
erstellt am: 04. Feb. 2011 17:08 <-- editieren / zitieren --> Unities abgeben: Nur für SimonGB
Hallo Ich muss schon sagen das ich diese kleine Hilfe gut finde. (z.T. bis 60% Speichereinsparungen ) Ein kleines Manko habe ich doch gefunden. Wenn merere "2D-Polylinie"n übereinander liegen werden alle davon bereinigt. Da durch viele Ableitungen von 3D bei mir einiges von dieser Linienart vorhanden ist würde ich mich freuen wenn in dieser Hinsicht eine Optimierung realisiert wird. Oder kann ich das Problem anders umgehen in dem ich vorgängig die 2D-Polylinie in eine normale Polylinie wandle... doch wie? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
kadetti Mitglied Yacht Design / Architektur
Beiträge: 52 Registriert: 08.07.2005 W7 64bit Dell Precision Quad-Core 16GB RAM
|
erstellt am: 10. Mrz. 2011 10:06 <-- editieren / zitieren --> Unities abgeben: Nur für SimonGB
das problem mit den polylinien hab ich auch. habe hier eine riesige dwg, wo ca. 60.000! objekte doppelt sind. gibts mittlerweile schon ne lisp die quasi eine der doppelt und dreifachen linien über lässt? grüsse ------------------ AutoCAD 2006, ADT 2007, Rhino 4.0 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 10. Mrz. 2011 10:13 <-- editieren / zitieren -->
Hi, >> Oder kann ich das Problem anders umgehen in dem ich vorgängig >> die 2D-Polylinie in eine normale Polylinie wandle... doch wie? Solange die 2D-Polylinien nicht besondere Eigenschaften ahben (z.B. Kurve-Angleichen o.ä.), dann kannst Du: a) PLINETYPE auf 2 stellen b) Befehl _CONVERT ==> und damit die 2D-Polylinien auf LW-Polylinien konvertieren HTH, - alfred - ------------------ www.hollaus.at |
kadetti Mitglied Yacht Design / Architektur
Beiträge: 52 Registriert: 08.07.2005 W7 64bit Dell Precision Quad-Core 16GB RAM
|
erstellt am: 10. Mrz. 2011 11:11 <-- editieren / zitieren --> Unities abgeben: Nur für SimonGB
|