Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Blockreferenzen mit Bemassungen werden nicht aktualisiert

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Blockreferenzen mit Bemassungen werden nicht aktualisiert (1750 mal gelesen)
peterba
Mitglied



Sehen Sie sich das Profil von peterba an!   Senden Sie eine Private Message an peterba  Schreiben Sie einen Gästebucheintrag für peterba

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von Dorfy an!   Senden Sie eine Private Message an Dorfy  Schreiben Sie einen Gästebucheintrag für Dorfy

Beiträge: 900
Registriert: 21.07.2006

AutoCad2007, ProE, HiCad

erstellt am: 24. Jun. 2010 09:35    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für peterba 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von peterba an!   Senden Sie eine Private Message an peterba  Schreiben Sie einen Gästebucheintrag für peterba

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


BW_DIMT_LKonv.LSP.txt

 
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




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 24. Jun. 2010 11:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für peterba 10 Unities + Antwort hilfreich

für Zeichnung regenerieren nimm mal
(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



Sehen Sie sich das Profil von peterba an!   Senden Sie eine Private Message an peterba  Schreiben Sie einen Gästebucheintrag für peterba

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


BW_DIMT_LKonv.LSP.txt


AX_Property.LSP.txt


Bem-Test1.zip

 
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




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 24. Jun. 2010 12:22    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für peterba 10 Unities + Antwort hilfreich

die Methode regen erwartet ein INTEGER
und acAllViewports ist intern vorbelegt mit 1 .. zu testen mit
!acAllViewports ...

du kannst demzufolge mal
(vla-regen(vla-get-activedocument(vlax-get-acad-object)) 1)

testen

------------------
  - 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



Sehen Sie sich das Profil von peterba an!   Senden Sie eine Private Message an peterba  Schreiben Sie einen Gästebucheintrag für peterba

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

die 1 erlaubt die fehlerfreie Ausführung des "Regen" - aber leider keine Aktualisierung des Blocks

...brauche ich "Schnee"?  

[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




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 24. Jun. 2010 13:36    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für peterba 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von peterba an!   Senden Sie eine Private Message an peterba  Schreiben Sie einen Gästebucheintrag für peterba

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von Dorfy an!   Senden Sie eine Private Message an Dorfy  Schreiben Sie einen Gästebucheintrag für Dorfy

Beiträge: 900
Registriert: 21.07.2006

AutoCad2007, ProE, HiCad

erstellt am: 25. Jun. 2010 22:11    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für peterba 10 Unities + Antwort hilfreich

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

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz