| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| Request a special discount on NVIDIA RTX 5000 Ada Generation GPU !, eine Pressemitteilung
|
Autor
|
Thema: Blockreferenzen mit Bemassungen werden nicht aktualisiert (1755 mal gelesen)
|
peterba Mitglied
Beiträge: 14 Registriert: 21.06.2007 AutoCAD/Architecture/MEP 2015, DWG TrueView 2013 und DesignReview 2013 auf Win7 64bit.
|
erstellt am: 24. Jun. 2010 09:11 <-- editieren / zitieren --> Unities abgeben:
Hallo Forum, Für die Umsetzung einer Änderung des Firmenstandards sollen die existierenden Bemassungen einer Zeichnung, die mit dem alten Bemassungstil erstellt wurden, entsprechend korrigiert werden. Vorgaben: - Nur anzuwenden auf Bemassungen mit dem Bemassungsstil BWBEMSTIL - Masslinien und Führungslinien auf neue Standardfarbe setzen. - Einigen alten Farben des Masstextes laut Tabelle eine neue Farbe zuweisen. Ich habe die Aufgabenstellung mit Visual-Lisp realisiert: 1. Auswahlsatz mit allen Bemassungen der Zeichnung konvertieren --> funktioniert bestens 2. Alle Bemassungen in Blockdefinitionen konvertieren --> funktioniert auch, ABER die Blockreferenzen werden nicht aktualisiert! Zur Kontrolle kann ich im Blockeditor "BEDIT" die vom Programm ausgeführten Änderungen sehen. Speichere ich den betreffenden Block, so werden die Änderungen auch in der Zeichnung sichtbar. Ähnliches Verhalten bei "REFEDIT": Die neuen Blockdefinition werden auch erst nach dem Speichern sichtbar in die Zeichnung übernommen. Leider erzeugt der Befehl "REFCLOSE" abschliessend eine Dialogbox, so dass der Befehl im Programm nicht einsetzbar ist. Auch der Befehl "REGEN" und die Update-Methode für eine Blockreferenz helfen nicht weiter. Bin jetzt ratlos, wie das Problem programmlich gelöst werden kann und bin für jeden Hinweis dankbar. Falls gewünscht stelle ich auch eine kleine Beispielzeichnung und mein Programm hier rein. Umgebung: AutoCAD 2009 auf Windows XP peterba Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 24. Jun. 2010 09:35 <-- editieren / zitieren --> Unities abgeben: Nur für peterba
Hi, mal ein entupd oder vla-update versucht (setq activelayout (vla-get-activelayout (vla-get-ActiveDocument (vlax-get-acad-object)))) (vlax-for item (vla-get-block activelayout) (vla-update item)) ohne Code oder Beispielzng... wer weiß was du gemacht hast ------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
peterba Mitglied
Beiträge: 14 Registriert: 21.06.2007 AutoCAD/Architecture/MEP 2015, DWG TrueView 2013 und DesignReview 2013 auf Win7 64bit.
|
erstellt am: 24. Jun. 2010 11:47 <-- editieren / zitieren --> Unities abgeben:
Hallo Heiko, vielen Dank für deinen Hinweis, nur leider macht es die Blockänderung auch nicht sichtbar. Einen ähnlicher Codeschnipsel abschliessend steht auch in meiner Routine. Im Anhang sind die beiden LSP-Dateien (Hauptprogramm in BW_DIMT_LKonv.LSP lädt automatisch Hilfsroutinen AX_Property.LSP - also unbedingt in Support-Pfad legen); Nach dem Laden Start mit "BW_DIMT_LKonv_All". Die Beispielzeichnung Bem-Test1.dwg enthält ein alleinstehendes Maß 1017 und einen Block mit 3 Bemassungen: Besonders beim Maß 1124 sind Text- und Linienfarbe zu korrigieren. Seid nachsichtig, denn das Beispiel zeugt nicht von meinen gerade von meinen zeichnerischen Fähigkeiten Edit: Anhang korrigiert.. Alle Anhänge befinden sich in meinem nächsten Beitrag [Diese Nachricht wurde von peterba am 24. Jun. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 24. Jun. 2010 11:54 <-- editieren / zitieren --> Unities abgeben: Nur für peterba
|
peterba Mitglied
Beiträge: 14 Registriert: 21.06.2007 AutoCAD/Architecture/MEP 2015, DWG TrueView 2013 und DesignReview 2013 auf Win7 64bit.
|
erstellt am: 24. Jun. 2010 12:06 <-- editieren / zitieren --> Unities abgeben:
Hallo CADmium, leider Fehler: Keine Umwandlung des lisp-Wertes in VARIANT mit folgendem Typ: acAllViewports Benutze selber folgenden Code: ;; Zeichnung regenerieren (vlax-invoke-method (vla-get-activedocument (vlax-get-acad-object)) 'Regen T) PS: irgendwie kämpfe ich noch mit meinen Anhängen [Diese Nachricht wurde von peterba am 24. Jun. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 24. Jun. 2010 12:22 <-- editieren / zitieren --> Unities abgeben: Nur für peterba
|
peterba Mitglied
Beiträge: 14 Registriert: 21.06.2007 AutoCAD/Architecture/MEP 2015, DWG TrueView 2013 und DesignReview 2013 auf Win7 64bit.
|
erstellt am: 24. Jun. 2010 12:33 <-- editieren / zitieren --> Unities abgeben:
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 24. Jun. 2010 13:36 <-- editieren / zitieren --> Unities abgeben: Nur für peterba
na da greift wohl das update bei der Bemaßung nicht ... ich schenk dir mal als Einstieg n anderen Code : (defun C:TESTUS(/ BLOCK ITEM DIMT_Farben NEWCOLOR I DIMBLK) (setq DIMT_Farben '((191 46) (46 1) (1 191) ) ) (vlax-for BLOCK (vla-get-blocks(vla-get-activedocument(vlax-get-acad-object))) (if(=(vla-get-isxref BLOCK):vlax-false) (progn (vlax-for ITEM BLOCK (and(vlax-property-available-p ITEM "Stylename") (vlax-property-available-p ITEM "TextColor") (wcmatch (strcase(vla-get-stylename ITEM)) "*TKA*") (setq NEWCOLOR (cadr(assoc (vla-get-textcolor ITEM) DIMT_FARBEN))) (not(vl-catch-all-error-p (vl-catch-all-apply 'vla-put-TextColor(list ITEM NEWCOLOR) ) ) ) (setq DIMBLK(cdr(assoc 2(entget(vlax-vla-object->ename ITEM))))) (not(vl-catch-all-error-p (setq DIMBLK(vl-catch-all-apply 'vla-item (list (vla-get-blocks(vla-get-activedocument(vlax-get-acad-object))) DIMBLK ) ) ) ) ) (vlax-for I DIMBLK (and(=(strcase (vla-get-objectname I))"ACDBMTEXT") (not(vl-catch-all-error-p (vl-catch-all-apply 'vla-put-Color(list I NEWCOLOR) ) ) ) ) ) ) ) ) ) ) (vla-Regen(vla-get-activedocument(vlax-get-acad-object))acAllViewports) ) ------------------ - 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 |
peterba Mitglied
Beiträge: 14 Registriert: 21.06.2007 AutoCAD/Architecture/MEP 2015, DWG TrueView 2013 und DesignReview 2013 auf Win7 64bit.
|
erstellt am: 24. Jun. 2010 16:15 <-- editieren / zitieren --> Unities abgeben:
PERFEKT Damit werden auch die Blockbemassungen sofort aktualisiert! Dein Code läuft bestens - ich hab ihn nur noch nicht komplett verstanden. Mal abgesehen von den undokumentierten "vla-..." Funktionen und der schicken Fehlerbehandlung benutzt du einen Trick, mit dem du den Bemassungstext zusätzlich als MText behandelst? Das sind "dunkle Tiefen" der AutoCAD-Datenbank, die sich mir noch nicht erschlossen haben. Trotzdem, das Ding macht was es soll, und dafür ein großes DANKE! Peter. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 25. Jun. 2010 22:11 <-- editieren / zitieren --> Unities abgeben: Nur für peterba
Zitat: Original erstellt von peterba: ... Mal abgesehen von den undokumentierten "vla-..." Funktionen ...
Mal die Hilfe unter "vlide" bemüht? Mal ne Suchmaschiene gefüttert? ... man kann viel finden ... sehr viel, man muss nur suchen
------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |