| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Layername als Linientyp machbar ? (1745 mal gelesen)
|
Goofy007 Mitglied Vermessungstechniker
Beiträge: 578 Registriert: 06.11.2004 Map3D 2018 und Civil3D 2018
|
erstellt am: 02. Feb. 2005 16:43 <-- editieren / zitieren --> Unities abgeben:
Hallo, ich soll für einen Kunden einen Plot erstellen, in welchem die (Poly)Linien mit ihren Layernamen beschriftet sind. (Es geht um unterschiedliche Leitungsarten/Materialien/Dimensionen). Ich dachte nun daran mir Linientypen zu definieren und den Layern zuzuordnen. Da aber die Anzahl der Layer relativ groß ist, stellt sich nun die Frage ob man hier mit Variablen (sowas wie RText) arbeiten kann. Ich möchte also einen Linientyp der aus einer durchgezogenen Linie besteht und in periodischen Abständen den Layernamen wiedergibt. Hat jemand eine Idee wie ich das einigermaßen rationell machen kann? mfg Didi
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 21533 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 02. Feb. 2005 16:56 <-- editieren / zitieren --> Unities abgeben: Nur für Goofy007
da geht nichts anderes wie jeden "per Hand" erstellen (äußerst dämlich sowas... aber sicher schön anzusehen ) *HEISSWASSERLEITUNG,Heißwasserleitung ---- HW ---- HW ---- HW ---- A,.5,-.2,["HW",STANDARD,S=.1,R=0.0,X=-0.1,Y=-.05],-.2 so schaut´s aus... [in der Hilfe gut beschrieben] und das ganze eben dann zig mal. (markieren - suchen/ersetzen hilft schonmal) Ist aber dann "Fest" , nichts mit variabel wie zB RText.. eine Eigen *.lin kreieren und los geht´s Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Goofy007 Mitglied Vermessungstechniker
Beiträge: 578 Registriert: 06.11.2004
|
erstellt am: 02. Feb. 2005 18:17 <-- editieren / zitieren --> Unities abgeben:
|
kajomies Mitglied Architekt
Beiträge: 263 Registriert: 08.03.2001
|
erstellt am: 03. Feb. 2005 09:05 <-- editieren / zitieren --> Unities abgeben: Nur für Goofy007
|
CADmium Moderator Maschinenbaukonstrukteur
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: 03. Feb. 2005 13:38 <-- editieren / zitieren --> Unities abgeben: Nur für Goofy007
hab mal was gebastelt: (defun C:LTYPES->Layer ( / DATEI LAYER LAYERNAME LTPS OLDCMD Block) (vl-load-com) (setq DNAME (strcat (getvar "SAVEFILEPATH") "\\Temp.lin")) (if(setq DATEI(open DNAME"w")) (progn (While (setq LAYER (tblnext "LAYER" (null LAYER))) (setq LAYERNAME (cdr(assoc 2 LAYER))) (setq LTPS(cons LAYERNAME LTPS)) (princ(strcat "*" LAYERNAME ",-" LAYERNAME "-\n" )DATEI) (princ(strcat "A,3,-1,[\"" LAYERNAME"\",STANDARD,S=.4,R=0.0,X=-0.1,Y=-.2],-2\n")DATEI) ) (close DATEI) (setq OLDCMD (getvar "CMDECHO")) (setvar "CMDECHO" 0) (foreach LT LTPS (if(tblsearch "LTYPE" LT) (progn (command "_-linetype" "_l" LT (findfile DNAME) "_y" "" ) ) (progn (command "_-linetype" "_l" LT (findfile DNAME) "" ) ) ) ) (vl-file-delete(findfile DNAME)) (setvar "CMDECHO" OLDCMD) ) ) (vlax-for LAYOUT (vla-get-layouts(vla-get-activedocument(vlax-get-acad-object))) (vlax-for ITEM (setq BLOCK (vla-get-Block LAYOUT)) (vl-catch-all-error-p (vl-catch-all-apply 'vla-put-Linetype (list ITEM (vla-get-layer ITEM) ) ) ) ) (vlax-for BLOCK (vla-get-blocks(vla-get-activedocument(vlax-get-acad-object))) (vlax-for ITEM BLOCK (vl-catch-all-error-p (vl-catch-all-apply 'vla-put-Linetype (list ITEM (vla-get-layer 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 |
Goofy007 Mitglied Vermessungstechniker
Beiträge: 578 Registriert: 06.11.2004
|
erstellt am: 03. Feb. 2005 14:09 <-- editieren / zitieren --> Unities abgeben:
@kajomies Danke aber das Lisp geht doch ziemlich weit an der Problemstellung vorbei. (Ich möchte Linientypen definieren, bline.lsp setzt Blöcke, und das auch noch interaktiv) @CADmium Danke auch dir, das sieht nach dem aus was ich brauche aber leider kommt erst mal nur folgende Fehlermeldung: Befehl: ltypes->layer ; Fehler: Fehlerhafter Argumenttyp: stringp nil Meine Lisp-Kenntnisse reichen leider nicht aus (sind ja eigentlich noch gar nicht vorhanden) um zu Erkennen, ob das Prog einen Fehler hat, oder ob ich was falsch mache. mfg Didi
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
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: 03. Feb. 2005 14:14 <-- editieren / zitieren --> Unities abgeben: Nur für Goofy007
ok, ersetze mal die Zeile (setq DNAME (strcat (getvar "SAVEFILEPATH") "\\Temp.lin")) durch (setq DNAME "c:\\Temp.lin") und probiers noch mal ------------------ - 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 |
Goofy007 Mitglied Vermessungstechniker
Beiträge: 578 Registriert: 06.11.2004
|
erstellt am: 03. Feb. 2005 14:14 <-- editieren / zitieren --> Unities abgeben:
@kajomies Danke aber das Lisp geht doch ziemlich weit an der Problemstellung vorbei. (Ich möchte Linientypen definieren, bline.lsp setzt Blöcke, und das auch noch interaktiv) @CADmium Danke auch dir, das sieht nach dem aus was ich brauche aber leider kommt erst mal nur folgende Fehlermeldung: Befehl: ltypes->layer ; Fehler: Fehlerhafter Argumenttyp: stringp nil Meine Lisp-Kenntnisse reichen leider nicht aus (sind ja eigentlich noch gar nicht vorhanden) um zu Erkennen, ob das Prog einen Fehler hat, oder ob ich was falsch mache. mfg Didi
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Goofy007 Mitglied Vermessungstechniker
Beiträge: 578 Registriert: 06.11.2004 Map3D 2018 und Civil3D 2018
|
erstellt am: 03. Feb. 2005 14:20 <-- editieren / zitieren --> Unities abgeben:
Hallo CADmium, Danke das wars, echt super! Ich werd dir gleich noch 10 Us überweisen. Kauf dir was schönes mfg Didi PS: hatte vorhin Probleme mit der Verbindung, deshalb versehentlich doppelt gepostet.
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADwiesel Moderator CAD4FM UG
Beiträge: 1968 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 03. Feb. 2005 14:55 <-- editieren / zitieren --> Unities abgeben: Nur für Goofy007
@Cadmium coole Arbeit! wenn mann noch die Zeile: (princ(strcat "A,3,-1,[\"" LAYERNAME"\",STANDARD,S=.4,R=0.0,X=-0.1,Y=-.2],-2\n")DATEI) etwa so erweitert: (princ(strcat "A,3,-1,[\"" LAYERNAME"\",STANDARD,S=.4,R=0.0,X=-0.1,Y=-.2],-"(if(>(strlen LAYERNAME)4)(itoa(/(strlen LAYERNAME)2))"2")"\n")DATEI) werden auch längere Layernamen nicht durchgestrichen dargestellt
------------------ Gruß CADwiesel Besucht uns im CHAT
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |