Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Problem mit Lisp für Bemaßungen

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:  Problem mit Lisp für Bemaßungen (239 mal gelesen)
Triple-S
Mitglied
Technischer Systemplaner ELT

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

Beiträge: 7
Registriert: 17.11.2021

Windows 10
AutoCAD 2022, Linear, Revit

erstellt am: 02. Dez. 2021 14:03    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 Lisp-Expertenrunde,

ich habe eine Routine, die mir Grundrisse, die ich von Architekten bekomme, in einen für mich benutzbaren Zustand bringen soll.

Teil dieser Routine ist folgender kleiner Befehl:

Code:
(defun c:LSSBEM ( / STILDEF STILNAME OBJEKTDATEN AWS)
  (setq STILDEF (tblnext "DIMSTYLE" T))
  (while STILDEF
  (setq STILNAME (cdr(assoc 2 STILDEF)))
  (command "-bemstil" "ho" STILNAME)
  (setq OBJEKTDATEN (entget (tblobjname "DIMSTYLE" STILNAME)))
  (if (assoc 176 OBJEKTDATEN)
  (setq OBJEKTDATEN (subst (cons 176 256)(assoc 176 OBJEKTDATEN) OBJEKTDATEN))
  );end if
        (if (assoc 177 OBJEKTDATEN)
  (setq OBJEKTDATEN (subst (cons 177 256)(assoc 177 OBJEKTDATEN) OBJEKTDATEN))
  );end if
        (if (assoc 178 OBJEKTDATEN)
  (setq OBJEKTDATEN (subst (cons 178 256)(assoc 178 OBJEKTDATEN) OBJEKTDATEN))
  );end if
  (entmod OBJEKTDATEN)  
  (command "-bemstil" "ho" STILNAME)
  (if (setq AWS (ssget"_X" (list '(0 . "*DIMENSION*")(cons 3 STILNAME))))
    (command "-bemstil" "a" AWS "")
  );end if
  (setq STILDEF (tblnext "DIMSTYLE"))
  )
)
(princ)

Dieses Tool habe ich zugegebenermaßen nicht geschrieben, sondern von irgendwo kopiert.
Ziel ist es die Farben von Hilfslinien, anderen Linien und Texten aller Bemaßungsstile auf VONLAYER oder VONBLOCK zu setzen sowie auch dahingehende Überschreibungen in den Bemaßungen zurückzusetzen.
Das funktioniert auch wie gewünscht.

Allerdings als kleiner Nebeneffekt werden auch andere Überschreibungen in den einzelnen Bemaßungen entfernt, wie z.B. die Texthöhe, was nicht gewollt ist.

(Nun mag man zur Diskussion stellen welchen Sinn es macht einen Bemaßungsstil zu definieren, nur um ihn in den einzelnen Bemaßungen wieder zu ändern, aber das sind ja nicht meine Bemaßungen... Es sind natürlich Einzelfälle, in den meisten Situationen funktioniert es wie gewünscht.)

Wer kann mir helfen das Tool zu optimieren?

[Diese Nachricht wurde von Triple-S am 02. Dez. 2021 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

spider_dd
Mitglied



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

Beiträge: 1071
Registriert: 27.11.2003

Win 10Pro
Intel(R) Core(TM) i7-7700
NVIDIA Quadro P1000
ACAD, Civil-3D 2018

erstellt am: 02. Dez. 2021 14:53    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 Triple-S 10 Unities + Antwort hilfreich

Hallo Tripl-S,

es erscheint ja logisch, dass, wenn Du auf eine Bemaßung den ursprünglichen Bemaßungsstil wieder anwendest, alle an dieser Bemaßung vorgenommenen Änderungen weg sind. Du müsstest also eher nicht über den Bemaßungsstil sondern durch alle Bemaßungsobjekte gehen und dort nur die gewünschten Änderungen machen. Wo dort aber die Farbzuweisungen stecken, habe ich auf die Schnelle nicht gesehen. Da müsste man sich sicher mal in die Tiefen des Objektes mit Unterobjekten und so reinwühlen.
Aber vielleicht hat ja einer der Experten da noch was auf Lager.

War jetzt sicher keine große Hilfe, aber vielleicht ein kleiner Ansatz.

Gruß
Thomas

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Triple-S
Mitglied
Technischer Systemplaner ELT

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

Beiträge: 7
Registriert: 17.11.2021

Windows 10
AutoCAD 2022, Linear, Revit

erstellt am: 02. Dez. 2021 15:25    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 spider,

das ist natürlich was das Tool macht. Eine andere Schleife in dieser Richtung übersteigt meine Lisp-Fähigkeiten aber bei weitem.

Ich verwende das Tool nun schon eine halbes Jahr ohne Probleme. Ja, kleinere Stilüberschreibungen gehen verloren, aber das stört nicht.
Heute hatte ich zum ersten Mal einen Architekten, der so schlau war einen Bemaßungsstil mit Texthöhe 100 zu erstellen und dann in jeder Bemaßung die Höhe auf 0,1 zu setzen.
Nach Anwendung meines Tools konnte man dann nichts mehr erkennen.

In solchen Einzelfällen könnte man natürlich einfach die Texthöhe wieder zurückstellen oder das Tool nicht anwenden, aber ich hätte gerne eine schönere Lösung.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

spider_dd
Mitglied



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

Beiträge: 1071
Registriert: 27.11.2003

Win 10Pro
Intel(R) Core(TM) i7-7700
NVIDIA Quadro P1000
ACAD, Civil-3D 2018

erstellt am: 02. Dez. 2021 15:58    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 Triple-S 10 Unities + Antwort hilfreich

Du könntest z. B. vor dem Anwenden des Tools den Bemaßungsstil so einstellen, wie Du ihn brauchst, also bei Deinem Beispiel die Texthöhe im Stil auf 10 setzen. Dann sollten alle Bemaßungstexte diese Höhe auch erhalten. Das Tool ändert ja im Stil nur die Farben (GC 176, 177, 178 = Sysvar DIMCLRD, DIMCLRE, DIMCLRT) auf VonLayer (256), sofern diese Gruppencodes vorhanden sind.
Ansonsten könntest Du Dir Bemstil so einstellen, wie Du willst und dann das Tool fahren.

HTH
Gruß
Thomas

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Andreas Kraus
Mitglied
Elektrotechniker


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

Beiträge: 1274
Registriert: 11.01.2006

WIN 10
ACAD 2022

erstellt am: 03. Dez. 2021 12:56    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 Triple-S 10 Unities + Antwort hilfreich

Hallo Triple-S,
probier das hier mal aus.
ist noch ohne Fehlerbehandlung wie gesperrte Layer usw. aber könnte helfen.

Code:
(vlax-for blk (vla-get-blocks
(vla-get-activedocument (vlax-get-acad-object))
      )
  (vlax-for obj blk
    (if (member (vla-get-objectname obj)
'("AcDbRotatedDimension"     "AcDbAlignedDimension" "AcDbArcDimension"   "AcDbRadialDimension"
  "AcDbRadialDimensionLarge"     "AcDbDiametricDimension" "AcDbOrdinateDimension"   "AcDb3PointAngularDimension"
  "AcDb2LineAngularDimension"
)
)
      (progn
(if (vlax-property-available-p obj 'DimensionLineColor)
  (vla-put-DimensionLineColor obj 256)
)
(if (vlax-property-available-p obj 'ExtensionLineColor)
  (vla-put-ExtensionLineColor obj 256)
)
(vla-put-TextColor obj 256)
      )
    )
  )
)

------------------
Geht nicht, gibts nicht

Gruß
Andreas

http://kraus-cad.de

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP



Programmentwickler CAD & Office (m/w/divers)

thyssenkrupp ist eine international aufgestellte Unternehmensgruppe aus weitgehend selbstständigen Industrie- und Technologiegeschäften mit über 100.000 Mitarbeitenden. In 56 Ländern erwirtschaftete die Gruppe im Geschäftsjahr 2020/2021 einen Umsatz von 34 Mrd ?. Mit umfassendem Technologie-Know-how entwickeln die Geschäfte und alle Mitarbeitenden wirtschaftliche und ressourcenschonende ...

Anzeige ansehenSoftwareentwicklung
Triple-S
Mitglied
Technischer Systemplaner ELT

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

Beiträge: 7
Registriert: 17.11.2021

Windows 10
AutoCAD 2022, Linear, Revit

erstellt am: 06. Dez. 2021 08: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

Hallo Thomas,

Danke für deine Ideen, aber es geht ja gerade um Extremfälle wie Pläne mit Dutzenden Bemaßungsstilen oder unterschiedlichen Texthöhen. Die Routine soll auch von anderen Mitarbeitern benutzt werden können ohne besondere Kenntnisse.

Hallo Andreas,

Vielen Dank für den Code. So funktioniert es.
Im Zuge der Routine werden sowieso alle Layer entsperrt, das sollte kein Problem sein.

Ich werde mich melden, wenn ich auf einen Problemfall stoße, bei dem es nicht will.
Bis dann.

[Diese Nachricht wurde von Triple-S am 06. Dez. 2021 editiert.]

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)2021 CAD.de | Impressum | Datenschutz