| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY WIRD VON NVIDIA ZUM HÄNDLER DES JAHRES GEWÄHLT, eine Pressemitteilung
|
Autor
|
Thema: layer über lisp definieren (1062 mal gelesen)
|
gogofax Mitglied
Beiträge: 12 Registriert: 18.09.2006 win XP acad 2006
|
erstellt am: 12. Nov. 2006 16:26 <-- editieren / zitieren --> Unities abgeben:
hallo, ich hätte eine frage bzgl. eines lispprogramms. ich lege dieses im anhang hier dazu. dieses lisp erlaubt mir in meinem zeichenprogramm blöcke in die zeichnung einzufügen. nach aufruf des programms gebe ich eine koordinatenliste ein und das lisp ordnet mir die blöcke dort an wo sie lt. koordinatenliste stehen sollen. jedoch sind attribute dabei welche auf einem anderen layer stehehn sollten als das kreuzerl des punktes selbst. ich kann es leider nicht über den block definieren, da dieser block für verschiedene arten von punkten verwendet wird und auch so vorgegeben ist und nicht geändert werden darf. ist es nicht möglich dieses lispprogramm so abzuändern, dass für h(Höhe) pnr(Punktnummer) und Punktbezeichnugn jeweils ein anderer layer erzwungen werden kann. anbei eine zeichnung mit diesem block, und mein lisp. da ich kein zip-programm momentan habe, habe ich die endungen geändert.bitte vor dem öffnen, die endung bei blockmb13 auf dwg ändern und das andere auf lsp. danke danke im voraus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 12. Nov. 2006 17:40 <-- editieren / zitieren --> Unities abgeben: Nur für gogofax
Das Lisp fügt lediglich den vordefinierten Block "mb13" ein. Anpassungen an den Layeren der Attribute sind im Code nicht mal ansatzweise vorgesehen (da müsste was gänzlich neues dazuprogrammiert werden) Zur Zeit sind alle Objekte der Blockdefinition auf Layer 0 abgelegt, dadurch übernehmen die Objekte beim Einfügen der Blockreferenz die Eigenschaften des aktuellen bzw. Blockreferenzlayers. Um die Höhen und Punktnummern z.B. global ein und auszuschalten, würde ich die Blockdefinition mit _BEDIT oder _REFEDIT so ändern, das die Attributsdef. BEZ z.B. zukünftig auf dem Layer "Punktnummer" liegt - analog dazu für die anderen ATTDEFs.
------------------ Mit freundlichem Gruß Udo Hübner Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gogofax Mitglied
Beiträge: 12 Registriert: 18.09.2006 win XP acad 2006
|
erstellt am: 12. Nov. 2006 17:45 <-- editieren / zitieren --> Unities abgeben:
|
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer
Beiträge: 9803 Registriert: 01.12.2003 One AutoCAD 2.5 - 2024, AutoCAD, Civil 3D, Win10/Win11
|
erstellt am: 12. Nov. 2006 18:08 <-- editieren / zitieren --> Unities abgeben: Nur für gogofax
Zitat: Original erstellt von gogofax: oje, schade dass es da keine möglichkeit gibt. dann werd ich wohl händisch die layer der attribute löschen. danke
Wieso das? gibts doch. Zitat: Original erstellt von gogofax: hallo, ... jedoch sind attribute dabei welche auf einem anderen layer stehehn sollten als das kreuzerl des punktes selbst. ...
Verständlich - und ich würde dazu die Attribute(ATTDEFs) in der Blockdefinition auf einen Layer abweichend "0" verlegen. Damit ist die Aufgabenstellung doch gelöst. Zitat: Original erstellt von gogofax: ich kann es leider nicht über den block definieren, da dieser block für verschiedene arten von punkten verwendet wird und auch so vorgegeben ist und nicht geändert werden darf. ...
Also, verschiedene Arten von Punkten sind kein Problem, das "kreuzerl" bleibt ja auf Layer "0" und passt sich nach wie vor dem Einfügelayer an. Wenn die ursprüngliche Blockdefinition nicht geändert werden darf, dann die Blockdefinition kopieren und zukünftig die Kopie benutzen. Zitat: Original erstellt von gogofax: ... ist es nicht möglich dieses lispprogramm so abzuändern, dass für h(Höhe) pnr(Punktnummer) und Punktbezeichnugn jeweils ein anderer layer erzwungen werden kann. ...
Doch das ist möglich (allerdings mit Aufwand, also nicht nur eine Zeile Codeänderung), ist aber ein größeres NoNo, als die Blockdefinition zu verändern. Ein ATTSYNC oder BATTMAN Aufruf, würde die programmtechnisch von der Blockdefinition abweichenden Layereinstellungen für die Attribute wieder zurücksetzen, das ist IMHO kritischer, als die Blockdefinition zu ändern.
------------------ Mit freundlichem Gruß Udo Hübner Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gogofax Mitglied
Beiträge: 12 Registriert: 18.09.2006 win XP acad 2006
|
erstellt am: 12. Nov. 2006 18:51 <-- editieren / zitieren --> Unities abgeben:
Also, verschiedene Arten von Punkten sind kein Problem, das "kreuzerl" bleibt ja auf Layer "0" und passt sich nach wie vor dem Einfügelayer an. Wenn die ursprüngliche Blockdefinition nicht geändert werden darf, dann die Blockdefinition kopieren und zukünftig die Kopie benutzen. das klingt gut. werde ich mal ausprobieren danke Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
gogofax Mitglied
Beiträge: 12 Registriert: 18.09.2006 win XP acad 2006
|
erstellt am: 12. Nov. 2006 19:44 <-- editieren / zitieren --> Unities abgeben:
|