| |
| 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 – zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: attout im script und für verschachtelte blöcke (3201 mal gelesen)
|
carmelli76 Mitglied CAD/GIS Teamleitung
Beiträge: 553 Registriert: 05.07.2004 Autodesk Civil 3D 2014 Revit 2016 Vault 2014
|
erstellt am: 16. Jan. 2009 01:22 <-- editieren / zitieren --> Unities abgeben:
Liebes Forum, Wahrscheinlich geht es nicht, aber ich frage trotzdem: Ich habe einen großen Satz Zeichnungen und muß daran immer mal Änderungen vornehmen, die sich hauptsächlich auf den Plankopf beziehen. Dieser Plankopf besteht aus einem Block, in dem ein weiterer Block verschachtelt ist. Der verschachtelte Block enthält Attribute, die Plankopfbeschriftung. Nun will ich mittels Skripten, Scriptpro oder Cadwiesels super SCC2 die Plansätze möglichst effektiv bearbeiten... Dazu hatte ich mir nun den Befehlssatz attout/attin aus den Expresstools angeschaut. Diese Befehle gehen leider nur mit Dialogfenstern, soweit ich sehen kann. Ausserdem kann man sie nicht auf verschachtelte Blöcke anwenden. Oder geht das alles irgendwie doch? Ich kann leider die Blockverschachtelung nicht aufheben. LG aus London Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 16. Jan. 2009 07:55 <-- editieren / zitieren --> Unities abgeben: Nur für carmelli76
Auch wenn es dir vielleicht nicht weiterhilft: Mit nem entsprechenden Lisp , das innerhalb des vom SC generierten Scriptes aufgerufen wird, ließe sich die Sache bewerkstelligen. ------------------ - 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 |
cad4fun Ehrenmitglied
Beiträge: 1846 Registriert: 06.12.2004 privat ACAD 2013 und 2017 deutsch, Windows 7 64Bit HP Elite 7500 Series MT,Intel Cote i5-3470 CPU 3,20Ghz,16GB RAM ATI FirePro V (FireGL V) Graphics Adapter Treiberversion: 15.201.1151.1008
|
erstellt am: 16. Jan. 2009 08:14 <-- editieren / zitieren --> Unities abgeben: Nur für carmelli76
Und für die Zukunft überlegst Dir vielleicht eine andere Arbeitsweise. Ein Block mit den variablen Texten(Attributen) wird eingefügt und der Rest des Plankopfes wird als Xref überlagert. Wenn Du dort eine Änderung hast, musst Du nur in der Quellzeichnung ändern und hast damit alle DWG's mit dieser Xref geändert. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 16. Jan. 2009 08:24 <-- editieren / zitieren --> Unities abgeben: Nur für carmelli76
Zitat: Original erstellt von cad4fun: Und für die Zukunft überlegst Dir vielleicht eine andere Arbeitsweise. Ein Block mit den variablen Texten(Attributen) wird eingefügt und der Rest des Plankopfes wird als Xref überlagert. Wenn Du dort eine Änderung hast, musst Du nur in der Quellzeichnung ändern und hast damit alle DWG's mit dieser Xref geändert.
Auch das muß nicht immer 1. Wahl sein !!! Ohne die Hintergründe zu kennen, fällt es schwer bestimmte Arbeitsweisen zu beurteilen. Ich arbeite z.B: aus gewissen Gründen nie mit Xrefs .. nehme dann eher einen Blocktauscher, den ich per Script auf die gewünschten (und nur auf die) anwende.
------------------ - 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 |
cad4fun Ehrenmitglied
Beiträge: 1846 Registriert: 06.12.2004 privat ACAD 2013 und 2017 deutsch, Windows 7 64Bit HP Elite 7500 Series MT,Intel Cote i5-3470 CPU 3,20Ghz,16GB RAM ATI FirePro V (FireGL V) Graphics Adapter Treiberversion: 15.201.1151.1008
|
erstellt am: 16. Jan. 2009 08:33 <-- editieren / zitieren --> Unities abgeben: Nur für carmelli76
Zitat: Original erstellt von CADmium: Ich arbeite z.B: aus gewissen Gründen nie mit Xrefs
Was sind die gewissen Gründe? Ich arbeite extrem mit Xrefs - sind ja auch nur eine andere Form von Blockreferenz - und habe keine Probleme damit. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 16. Jan. 2009 08:34 <-- editieren / zitieren --> Unities abgeben: Nur für carmelli76
@carmelli76 Wegen "verschachtelter Attributblock" --> siehe Vorredner.. Das ist imho wirklich Schrott (praktischer Nutzen=null - falls dir etwas positives einfällt: erzähl doch mal) Wegen Attin/Attout - Die Funktionen haben ja eigentlich garkein Dialogfeld ! Es wird ledeglich ein Datei-Wahl Dialogfeld genutzt und diese kann man ja wie allseits bekannt mit zB. FILEDIA=0 umgehen.
------------------ die alte SUCHfunktion.. - System-Angaben - User:FAQ(Adesk) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 16. Jan. 2009 09:02 <-- editieren / zitieren --> Unities abgeben: Nur für carmelli76
Zitat: Original erstellt von cad4fun: Was sind die gewissen Gründe? Ich arbeite extrem mit Xrefs - sind ja auch nur eine andere Form von Blockreferenz - und habe keine Probleme damit.
z.B. Verschiedene Projekte, mit verschiedenen Projektständen ,die jeweils gleiche Blöcke in ebenfalls verschiedenen Ständen verwenden. Und das ganze jeweils archiviert.. dann müßte man entsprechend separat binden der so .. ginge auch. Und man weiß ja nicht unbedingt immer, wo eine Zeichnung überall referenziert wird ( obwohl man das auch rausbekommt ..) Wir gesagt, ich nehme da lieber einen Blocktauscher, den ich über eine Verzeichnis jage. Meine Arbeisweise erfordert auch oft ein duplizieren von Blockdefinitionen , Referenzbearbeitung ,Variantenbildung usw. da wären Xrefs auch hinderlich.
------------------ - 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 |
carmelli76 Mitglied CAD/GIS Teamleitung
Beiträge: 553 Registriert: 05.07.2004 Autodesk Civil 3D 2014 Revit 2016 Vault 2014
|
erstellt am: 16. Jan. 2009 10:13 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank fuer die Antworten. @cad4fun: Diese Arbeitsweise hat Gruende, wir haben diese Vorgaben vom Kunden. @cadffm: Attin/Attout Dialogfenster lassen sich nicht durch Filedia=0 ausschalten. Das hatte ich schon probiert. Ausser ich mach was falsch? [Diese Nachricht wurde von carmelli76 am 16. Jan. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 16. Jan. 2009 12:08 <-- editieren / zitieren --> Unities abgeben: Nur für carmelli76
Sorry, ist wohl schon länger her das ich damit was gemacht habe.. Aber attout/attin geht ja eh nicht mit verschachtelten Blöcken.. bns_attout / bns_attin nutzen (die Funktionen sind in Attout/Attin | ATTOUT.lsp | definiert) schau auch mal hier: http://ww3.cad.de/foren/ubb/Forum54/HTML/013463.shtml# So könnte es im Script aussehen (habe mein Script von damals gerade nicht zur Hand): ; SCRIPT für ATTOUT -- (if (not c:bns_attout)(load "attout")) (if (setq ss (ssget"_X"'((0 . "INSERT")(66 . 1))))(bns_attout (strcat(getvar"DWGPREFIX")(cadr(fnsplitl(getvar"DWGNAME")))".txt") ss)) (alert"!") ; SCRIPT für ATTIN -- (if (not c:bns_attout)(load "attout")) (if (setq ATTINFILE(findfile(strcat(getvar"DWGPREFIX")(cadr(fnsplitl(getvar"DWGNAME")))".txt"))) (if (equal 4 (logand 4 (getvar "cmdactive")))(bns_attin ATTINFILE nil)(bns_attin ATTINFILE T)) (alert(strcat "Für Datei " (getvar"DWGNAME") " keine ATTIN-Datei gefunden!")) ) ------------------ die alte SUCHfunktion.. - System-Angaben - User:FAQ(Adesk) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
carmelli76 Mitglied CAD/GIS Teamleitung
Beiträge: 553 Registriert: 05.07.2004 Autodesk Civil 3D 2014 Revit 2016 Vault 2014
|
erstellt am: 16. Jan. 2009 12:44 <-- editieren / zitieren --> Unities abgeben:
|
carmelli76 Mitglied CAD/GIS Teamleitung
Beiträge: 553 Registriert: 05.07.2004 Autodesk Civil 3D 2014 Revit 2016 Vault 2014
|
erstellt am: 20. Jan. 2009 23:56 <-- editieren / zitieren --> Unities abgeben:
Hallihallo, Ich bin gerade dabei und versuche das alles zusammenzuschreiben... Habe erstmal scripte nur mit den routinen bsn-attout/bsn-attin erstellt, wie auch im link von cadfm beschrieben. Das funktioniert auch gut. Nur wenn ich das folgende verpackt in ein script in meiner zeichnung aufrufe, dann macht es zwar was ich will, ich bekomme jedoch die darunter genannte fehlermeldung, ohne dass ich nachvollziehen kann, warum und was sie tut: (if (not c:bns_attout) (load "attout") ) (setq ss (ssget "_X" (list '(0 . "INSERT")'(66 . 1)(cons 8 (getvar "CLAYER"))))) (bns_attin "d:\\...\\test.txt" ss) Reading the input file... Done.; error: bad argument type: numberp: nil
Weiterhin beschäftigt mich noch immer die Frage nach den verschachtelten Blöcken. Auch wenn ich das total hirnrissig finde, unser Kunde will es nun mal so... Könnt man theoretisch den Auswahlsatz mit den Blocknamen bestücken?
Vielen Dank. LG aus London. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cadffm Moderator 良い精神
Beiträge: 22275 Registriert: 03.06.2002 System: F1 und Google
|
erstellt am: 21. Jan. 2009 09:24 <-- editieren / zitieren --> Unities abgeben: Nur für carmelli76
Verschachtelte Blockreferenzen werden von Attin/Attout nunmal nicht berücksichtigt, das wirst du so schnell bzw. nicht selbst ändern können. EATTEXT kann verschachtelte Blöcke - das Ergebnis kann man aber in Acad nicht mehr einlesen (falls das nicht nötig ist - würde es also funktionieren) Hier minimal geändert: bns_attout wird nur ausgeführt wenn Blöcke mit Attributen gefunden wurden und die Fehlermeldung sollte nun auch nicht mehr auftreten:
Code: (if (not bns_attout)(load "attout")) (setq #bns_attin_modified 0)<-- wegen der Fehlermeldung muß dies noch rein (if (setq ss (ssget "_X" (list '(0 . "INSERT")'(66 . 1)(cons 8 (getvar "CLAYER"))))) (bns_attin "d:\\...\\test.txt" ss) )achso und bei Attout bitte auch den Anfang ändern: ;ScriptPart für ATTOUT -- (if (not bns_attout)(load "attout")) (if (setq...usw.
@Carmelli - schau die nächste Zeit mal nach deinen PM´s ------------------ die alte SUCHfunktion.. - System-Angaben - User:FAQ(Adesk) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |