| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt, eine Pressemitteilung
|
Autor
|
Thema: Name Linientyp automatisch vor Layername schreiben (372 / mal gelesen)
|
Manuel486 Mitglied Technischer Zeichner Elektro
Beiträge: 212 Registriert: 31.01.2020
|
erstellt am: 22. Apr. 2023 14:34 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen. Ich suche nach einer Möglichkeit, den Linientyp der Objekten direkt zugewiesen ist, vor den Layernamen zu schreiben. Des weiteren wäre es schön, wenn ich dies auch für Layernamen machen könnte die auf vonLayer stehen und einen Linientyp im Layermanager zugewiesen haben. Code: Alle Objekte auf dem Linientyp VERDECKT2 werden auf den Layer _VERDECKT2 gelegt / Der Layer _VERDECKT2 wird auf Farbe 8 gelegt / Der Layer _VERDECKT2 wird auf den Linientyp VERDECKT2 gelegt / Alle Objekte auf dem Layer _VERDECKT2 werden auf den Linientyp VonLayer gelegt(if (ssget "_X" (list '(6 . "VERDECKT2")(cons 410 (getvar 'CTAB))))(command "_.-LAYER" "_Make" "_VERDECKT2" "_Color" "8" "_VERDECKT2" "_Ltype" "VERDECKT2" "_VERDECKT2" "" "_.CHPROP" "_P" "" "_LAYER" "_VERDECKT2" "_LTYPE" "VonLayer" ""))
Hier hätte ich eine Lösung wie ich alles auf einen Layer bekomme. Ziel wäre es wie folgt aufzubauen: -Prüfe auf welchen Layern Objekte mit Linientyp VERDECKT2 liegen -Nehme diese Layer und schreibe den entsprechenden Linientyp-Namen vor den Layernamen. -Lege dann alle Objekte, die den Linientyp VERDECKT2 haben, und auf LAYERNAME1 liegen auf den Layer VERDECKT2_LAYERNAME1 Ich denke es wäre leicht zu lösen, habe aber irgendwie ein hängerchen in den Hirnwindungen. Vielleicht kann mir einen von euch auf die Sprünge helfen. Ich freu mich auf eure Vorschläge und wünsche ein schönes WE. ------------------ Gruß Manuel 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: 23. Apr. 2023 12:44 <-- editieren / zitieren --> Unities abgeben: Nur für Manuel486
Meinst due so etwa? Code: (while (setq LTYPEdat (tblnext "LTYPE" (null LTYPEdat))) (setq LTYPEname (cdr (assoc 2 LTYPEdat)) NewLayername (strcat (cdr (assoc 2 LTYPEdat)) "_Layernamen1") ) (if (setq SS-LTYPEdat (ssget "_X" (list (cons 6 LTYPEname) (cons 410 (getvar 'CTAB))) ) ) (command "_.-LAYER" "_Make" NewLayername "_Color" "8" NewLayername "_Ltype" LTYPEname NewLayername "" "_.CHPROP" "_P" SS-LTYPEdat "" "_LAYER" NewLayername "_LTYPE" "VonLayer" "" ) ) )
------------------ Gruß Wolfgang Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 24. Apr. 2023 10:15 <-- editieren / zitieren --> Unities abgeben: Nur für Manuel486
Zitat: Original erstellt von Manuel486:
Vielleicht kann mir einen von euch auf die Sprünge helfen.
Code:
(defun at-subst (ntok lst / temp) (cond ((not lst) (list ntok) ; lst existiert nicht ) ((not (assoc (car ntok) lst)) (reverse (cons ntok (reverse lst))) ; assoc existiert noch nicht, hinten dran ) ( 'T (subst ntok (assoc (car ntok) lst) lst) ; assoc existiert schon, ersetzen ) ) )(defun ss->list (sset / eset counter) (setq counter 0) (if (= 'PICKSET (type sset)) (repeat (sslength sset) (setq eset (cons (ssname sset counter) eset) counter (1+ counter) ) ) ) eset ) (defun ssmodent (ename dxf val) (entmod (at-subst (cons dxf val) (entget ename) ) ) ) (defun c:test () (foreach en (ss->list (ssget "X" '((0 . "LINE")))) (setq el (entget en) la (cdr (assoc 8 el)) ) (if (setq lt (cdr (assoc 6 el))) (ssmodent en 8 (strcat lt "-" la)) ) ) )
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Manuel486 Mitglied Technischer Zeichner Elektro
Beiträge: 212 Registriert: 31.01.2020
|
erstellt am: 24. Apr. 2023 13:34 <-- editieren / zitieren --> Unities abgeben:
Das ist genau was ich geschrieben habe. Macht auch was es soll. Jetzt habe ich mich etwas doof ausgedrückt. Layername1 war natürlich nur ein Beispiel. Der Layername müsste auch wie der Linientyp ausgelesen werden. Bei der aktuellen Layerstruktur hätte ich dann z.B. STRICHPUNKT2_Achsen.dwg STRICHPUNKT2_Treppen.dwg VERDECKT2_Achsen.dwg VERDECKT2_Treppen.dwg usw. ------------------ Gruß Manuel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADwiesel Moderator CAD4FM UG
Beiträge: 1989 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 24. Apr. 2023 14:23 <-- editieren / zitieren --> Unities abgeben: Nur für Manuel486
|
Manuel486 Mitglied Technischer Zeichner Elektro
Beiträge: 212 Registriert: 31.01.2020
|
erstellt am: 24. Apr. 2023 15:42 <-- editieren / zitieren --> Unities abgeben:
|
archtools Mitglied
Beiträge: 965 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 24. Apr. 2023 15:53 <-- editieren / zitieren --> Unities abgeben: Nur für Manuel486
Zitat: Original erstellt von Manuel486: Das läuft wie gewünscht. Danke. Jetzt fällt mir nur auf, dass Continuos natürlich sehr oft vorkommt. Wenn er Continuos nicht berücksichtigt, wäre es perfekt.
Na, das wirst Du wohl selbst hinbekommen ... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Manuel486 Mitglied Technischer Zeichner Elektro
Beiträge: 212 Registriert: 31.01.2020
|
erstellt am: 25. Apr. 2023 09:01 <-- editieren / zitieren --> Unities abgeben:
Da hast du recht, dafür reicht es gerade noch. Das war Quasi ein Memo an mich selbst. Habe auch ein paar mehr Objekte hinzugefügt.
Code: (foreach en (ss->list (ssget "X" '((0 . "LINE,LWPOLYLINE,POLYLINE,CIRCLE,TEXT")(-4 . "<NOT")(6 . "Continuous")(-4 . "NOT>"))))
Vielen dank nochmal an alle für die schnelle Hilfe. ------------------ Gruß Manuel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |