| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: bemaßungsstil (9579 mal gelesen)
|
fca_mi2 Mitglied Bauingenieur
Beiträge: 505 Registriert: 10.01.2003 ACAD2018
|
erstellt am: 26. Apr. 2005 08:33 <-- editieren / zitieren --> Unities abgeben:
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 26. Apr. 2005 08:39 <-- editieren / zitieren --> Unities abgeben: Nur für fca_mi2
1. Studium der Datenbankstruktur einer ACAD-Zeichnung 2. Vertrautmachen mit Methoden und Werkzeugen zur Manipulation derselben 3. Umsetzung der Aufgabe mit der güstigsten Methode zu Allgemein?, dann wär vielleicht folgendes ne Variante : (vl-load-com) (vla-add (vla-get-dimstyles(vla-get-activedocument(vlax-get-Acad-object))) "Neuer Bemassungsstil") ------------------ - 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 |
fca_mi2 Mitglied Bauingenieur
Beiträge: 505 Registriert: 10.01.2003 ACAD2018
|
erstellt am: 26. Apr. 2005 09:11 <-- editieren / zitieren --> Unities abgeben:
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 26. Apr. 2005 09:15 <-- editieren / zitieren --> Unities abgeben: Nur für fca_mi2
|
fca_mi2 Mitglied Bauingenieur
Beiträge: 505 Registriert: 10.01.2003 ACAD2018
|
erstellt am: 26. Apr. 2005 10:54 <-- editieren / zitieren --> Unities abgeben:
|
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 26. Apr. 2005 11:57 <-- editieren / zitieren --> Unities abgeben: Nur für fca_mi2
Hallo Frank, die Bemaßungsstile sind eine Besonderheit. Die Einstellungen werden über die wohl bekannten Systemvariablen für den aktuell eingestellten Stil gesteuert. Jetzt, wo du nun weißt, wie man einen Stil einfach hinzufügen kann, brauchst du diesen nur noch aktuell zu setzen und dann an den Systemvariablen alles einstellen. Grüße Holger ------------------ Holger Brischke CAD on demand GmbH Autodesk User Group Central Europe Individuelle Lösungen von Heute auf Morgen. AUGCE Manager Deutschland Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fca_mi2 Mitglied Bauingenieur
Beiträge: 505 Registriert: 10.01.2003 ACAD2018
|
erstellt am: 26. Apr. 2005 12:06 <-- editieren / zitieren --> Unities abgeben:
|
fca_mi2 Mitglied Bauingenieur
Beiträge: 505 Registriert: 10.01.2003 ACAD2018
|
erstellt am: 27. Apr. 2005 08:04 <-- editieren / zitieren --> Unities abgeben:
ich habe mir jetzt einen bemaßungsstil angelegt und ihn dann mit den systemvariablen eingestellt. über die systemvariable "dimscale" passe ich die größen und abstände an. meine selbstdefinierten pfeilspitzen werden korrekt skaliert nur der bemaßungstext ist immer gleich groß. woran liegt das ? ------------------ MfG Frank Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spider_dd Mitglied
Beiträge: 1111 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 27. Apr. 2005 08:35 <-- editieren / zitieren --> Unities abgeben: Nur für fca_mi2
|
fca_mi2 Mitglied Bauingenieur
Beiträge: 505 Registriert: 10.01.2003 ACAD2018
|
erstellt am: 27. Apr. 2005 08:41 <-- editieren / zitieren --> Unities abgeben:
|
archtools Mitglied
Beiträge: 823 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 27. Apr. 2005 19:28 <-- editieren / zitieren --> Unities abgeben: Nur für fca_mi2
Zitat: Original erstellt von fca_mi2: fein, das war der fehler ! dankeeine frage habe ich nich: wie kriegt man denn diese schicke architekturvermaßung hin ? mit textüberschreibung ?
Mit ArchTools :-) Mit Textüberschreibungen hast Du den Nachteil, dass die Maße nicht mehr assoziativ sind, solange der Maßtext überschrieben ist. Du kannst auch direkt das MTEXT-Objekt im Bemaßungsblock manipulieren, dann bleibt das Maß assoziativ. Tom Berger
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fca_mi2 Mitglied Bauingenieur
Beiträge: 505 Registriert: 10.01.2003 ACAD2018
|
erstellt am: 28. Apr. 2005 07:01 <-- editieren / zitieren --> Unities abgeben:
|
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 28. Apr. 2005 07:54 <-- editieren / zitieren --> Unities abgeben: Nur für fca_mi2
guckst du u.a. hierund das Mass-Blockobjekt liefert dir z.B: (tblobjname "BLOCK"(cdr(assoc 2(setq a(entget(car(entsel))))))) ------------------ - 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 |
fca_mi2 Mitglied Bauingenieur
Beiträge: 505 Registriert: 10.01.2003 ACAD2018
|
erstellt am: 02. Mai. 2005 09:54 <-- editieren / zitieren --> Unities abgeben:
ich habe mir den link mal angesehen. der ausdruck "<>" ist also der platzhalter für das maß. wie kann ich das den nutzen um meine architekturgerechte bemaßung zu erstellen ? sie soll ja außerdem auch assoziativ bleiben.
------------------ MfG Frank Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
archtools Mitglied
Beiträge: 823 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 02. Mai. 2005 11:41 <-- editieren / zitieren --> Unities abgeben: Nur für fca_mi2
Zitat: Original erstellt von fca_mi2: ich habe mir den link mal angesehen.der ausdruck "<>" ist also der platzhalter für das maß. wie kann ich das den nutzen um meine architekturgerechte bemaßung zu erstellen ? sie soll ja außerdem auch assoziativ bleiben.
Gar nicht. Für volle und direkte Assoziativität unter Beibehaltung des "architekturgerechten Aussehens" brauchst Du in jedem Fall eine aufwändige Programmierung mit Reaktoren. Für eine sofortige Assoziativität, bei der nach der Änderung des Maßes erst mal wieder der AutoCAD-Maßtext erscheint anstatt eines Architekturmaßes, genügt es, das MTEXT-Objekt im Bemaßungsblock zu editieren. Wenn Du es noch einfacher programmieren willst, dann kannst Du eine Maßtextüberschreibung erzeugen, aber die bleibt eben auch nach Maßänderungen solange stehen, bis sie entweder manuell verändert oder aufgehoben wird. Tom Berger Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 02. Mai. 2005 11:55 <-- editieren / zitieren --> Unities abgeben: Nur für fca_mi2
Hallo Frank, wie man eine Architekturbemaßung mit dem nackten AutoCAD hinbekommt, das ist ein sehr altes Thema. Hier, das Tool Nr 4, kannst du dir ja mal anschauen. In diesem siehst du, wie mit Maßüberschreibung gearbeitet wird. Möchtest du wirkliche Assoziativität, dann wirst du nicht umhin kommen und wirklich mit Reactoren arbeiten müssen. Hier sollte ein Objekt-Reaktor reichen, der bei Änderung eines Maßes anspringt. Das Thema gab es hier auch bereits, allerdings ging es hier um eine Bogenlängenbemaßung. Musst du mal suchen. Bei Fragen ... Grüße Holger ------------------ Holger Brischke CAD on demand GmbH Autodesk User Group Central Europe Individuelle Lösungen von Heute auf Morgen. AUGCE Manager Deutschland Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
wronzky Ehrenmitglied V.I.P. h.c. CAD-Dienstleistungen für Architekten
Beiträge: 2154 Registriert: 02.05.2005 CAD: AutoCAD 2.6 bis 2014 ADT 2005 - 2014 Arcibem System: Windows 2000, XP, NO VISTA Internet-Startseite: http://www.archi.de
|
erstellt am: 02. Mai. 2005 14:15 <-- editieren / zitieren --> Unities abgeben: Nur für fca_mi2
Hallo Frank! Zitat: Original erstellt von fca_mi2: eine frage habe ich noch:wie kriegt man denn diese schicke architekturvermaßung hin ? mit textüberschreibung ?
wir haben auch mal an so einer architekturgerechten Bemassung rumprogrammiert. Das (mittlerweile 4.) Ergebniss kannst Du unter http://www.arcibem.de runterladen. Und wenn Du keine grossen Ansprüche hast ... die Freeware (Version 3, für AutoCAD 14) läuft immer noch ganz gut. ------------------ http://www.voxelman.de Computer-Dienstleistungen für Architekten und Ingenieure Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fca_mi2 Mitglied Bauingenieur
Beiträge: 505 Registriert: 10.01.2003 ACAD2018
|
erstellt am: 03. Mai. 2005 09:15 <-- editieren / zitieren --> Unities abgeben:
hallo, ich habe mir jetzt einen bemaßungs (objekt-) reaktor hingebogen, der immer dann anspringt, wenn ich die bemaßung bearbeite. folgende kleine routine soll mir dann den wert aktualisieren: (defun fc_maßtext_ueberschr (element / e1 e2) (princ "\nMaßtext überschreiben...") (setq e1 (entget element)) (setq e2 (subst (cons 1 (fc_maßtext_umw (cdr (assoc 42 e1)))) (assoc 1 e1) e1)) (entmod e2) (princ) );defun aber irgendwie passiert da nix und es wird auch keine fehlermeldung ausgegeben. bevor der reaktor an die bemaßung gehängt wird, funktioniert die routine einwandfrei. ------------------ MfG Frank Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fca_mi2 Mitglied Bauingenieur
Beiträge: 505 Registriert: 10.01.2003 ACAD2018
|
erstellt am: 03. Mai. 2005 09:19 <-- editieren / zitieren --> Unities abgeben:
hallo, ich habe mir jetzt einen bemaßungs (objekt-) reaktor hingebogen, der immer dann anspringt, wenn ich die bemaßung bearbeite. folgende kleine routine soll mir dann den wert aktualisieren: (defun fc_maßtext_ueberschr (element / e1 e2) (princ "\nMaßtext überschreiben...") (setq e1 (entget element)) (setq e2 (subst (cons 1 (fc_maßtext_umw (cdr (assoc 42 e1)))) (assoc 1 e1) e1)) (entmod e2) (princ) );defun aber irgendwie passiert da nix und es wird auch keine fehlermeldung ausgegeben. bevor der reaktor an die bemaßung gehängt wird, funktioniert die routine einwandfrei. ------------------ MfG Frank Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 03. Mai. 2005 09:29 <-- editieren / zitieren --> Unities abgeben: Nur für fca_mi2
Hallo Frank, Reaktoren sind ein komplexes, aber auch gefährliches Gebiet. Wenn deine Funktion das Objekt verändert, welches den Reaktor aufgrund einer Änderung startet, dann muss das ganze gegen die Wand laufen, da ja der Reacktor das Objekt ändert und aus diesem Grunde sich auch wieder selbst anwirft. Bei dem Code, den du gepostet hast, ist es mir nicht möglich eine Fehleranalyse zu betreiben. Wenn dann solltest du diesen auch vollständig posten. Grüße Holger ------------------ Holger Brischke CAD on demand GmbH Autodesk User Group Central Europe Individuelle Lösungen von Heute auf Morgen. AUGCE Manager Deutschland Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fca_mi2 Mitglied Bauingenieur
Beiträge: 505 Registriert: 10.01.2003 ACAD2018
|
erstellt am: 03. Mai. 2005 09:41 <-- editieren / zitieren --> Unities abgeben:
sorry, hier ist der rest ! ich hoffe, ich habe alles erwischt. (defun c:fc_bemausg (/ textart) (setq lelement (entlast)) (fc_dim 0.18 4) (fc_layer_anlegen (strcat "BEM" (nth 1 (fc_skalierung_2))) 1 "continuous" "acadiso.lin") (command "bemausg" pause pause pause) (if (/= lelement (entlast)) (progn (command "ändern" "l" "" "ei" "layer" (strcat "bem" (nth 1 (fc_skalierung_2))) "") (fc_maßtext_ueberschr (entlast)) (fc_bemreaktor_anhaengen (entlast)) );progn );if );defun
(defun fc_dim (hoehe textfarbe / bemname lelement) (vl-load-com) ;kreuz definieren (if (= (tblsearch "block" "bemblock") nil) (progn (entmake (list '(0 . "block") '(100 . "AcDbBlockReference") '(2 . "bemblock") (cons 10 (list 0.0 0.0)) '(70 . 0))) (fc_linie (list 0.0 -5.0) (list 0.0 5.0) "BEM" 1 1.00 "continuous") (fc_linie (list -5.0 0.0) (list 5.0 0.0) "BEM" 1 1.00 "continuous") (fc_linie (list -2.0 -2.0) (list 2.0 2.0) "BEM" 1 1.00 "continuous") (entmake (list '(0 . "endblk") ) ) );progn );if (fc_textstil "BEM" "simplex.shx" 0.0 0.7)
(setq bemname (strcat "BEM_" (rtos (* hoehe 100) 2 0))) (setq stil (vla-add (vla-get-dimstyles (vla-get-activedocument (vlax-get-Acad-object))) bemname)) ;;; (command "einfüge" "endblock") (command "dimstyle" "holen" bemname) ;textüberschreibung -> gc 1 ;vorh maß-> gc 42 (setq einst (list (list "DIMADEC" 0) (list "DIMALT" 0) (list "DIMALTD" 2) (list "DIMALTF" 1.0) (list "DIMALTRND" 0.0) (list "DIMALTTD" 2) (list "DIMALTTZ" 0) (list "DIMALTU" 2) (list "DIMALTZ" 0) (list "DIMAPOST" "") (list "DIMASSOC" 1) (list "DIMASSOC" 2) (list "DIMASZ" 0.1) (list "DIMATFIT" 3) (list "DIMAUNIT" 0) (list "DIMAZIN" 0) (list "DIMBLK" "bemblock") (list "DIMBLK1" "") (list "DIMBLK2" "") (list "DIMCEN" 1.0) (list "DIMCLRD" 1) (list "DIMCLRE" 0) (list "DIMCLRT" textfarbe) (list "DIMDEC" 3) (list "DIMDLE" 0.0) (list "DIMDLI" 0.0) (list "DIMDSEP" ".") (list "DIMEXE" 0.18) (list "DIMEXO" 0.0625) (list "DIMFIT" 3) (list "DIMFRAC" 0) (list "DIMGAP" 0.2) (list "DIMJUST" 0) (list "DIMLDRBLK" "") (list "DIMLFAC" 1.0) (list "DIMLIM" 0) (list "DIMLUNIT" 2) (list "DIMLWD" 0) (list "DIMLWE" 0) (list "DIMPOST" "") (list "DIMRND" 0.0) (list "DIMSAH" 0) (list "DIMSCALE" (* hoehe (nth 0 (fc_skalierung_2)))) (list "DIMSD1" 0) (list "DIMSD2" 0) (list "DIMSE1" 1) (list "DIMSE2" 1) (list "DIMSHO" 1) (list "DIMSOXD" 0) (list "DIMTAD" 1) (list "DIMTDEC" 3) (list "DIMTFAC" 1.0) (list "DIMTIH" 0) (list "DIMTIX" 0) (list "DIMTM" 0.0) (list "DIMTMOVE" 0) (list "DIMTOFL" 1) (list "DIMTOH" 0) (list "DIMTOL" 0) (list "DIMTOLJ" 1) (list "DIMTP" 0.0) (list "DIMTSZ" 0.0) (list "DIMTVP" 0.0) (list "DIMTXSTY" "bem") (list "DIMTXT" 1.00) (list "DIMTZIN" 0) (list "DIMUNIT" 2) (list "DIMUPT" 0) (list "DIMZIN" 9) );list );setvar
(foreach n einst (setvar (nth 0 n) (nth 1 n)) );foreach (princ) );defun ;wandelt die maßzahl in arichtekturvermaßung um ;aufruf: (fc_maßtext_ueberschr element) (defun fc_maßtext_ueberschr (element / e1 e2) (princ "\nMaßtext überschreiben...") (setq e1 (entget element))
(setq e2 (subst (cons 1 (fc_maßtext_umw (cdr (assoc 42 e1)))) (assoc 1 e1) e1)) (entmod e2) (entupd element) (princ) );defun ;aufruf: (fc_bemreaktor_anhaengen element) (defun fc_bemreaktor_anhaengen (element /) (vl-load-com) (setq bemreaktor (vlr-object-reactor (list (vlax-ename->vla-object element)) "bemreaktor" '((:vlr-modified . bem_akt)))) (princ) );defun (defun bem_akt (objekt reaktor parameter /) (princ "\nBemaßung aktualisieren...") (fc_maßtext_ueberschr (vlax-vla-object->ename objekt)) (princ) );defun ;aufruf: (fc_maßtext_umw maß) (defun fc_maßtext_umw (maß / zaehler vor nach punkt genmtext stelle) (setq punkt "nein") (setq vor "") (setq nach "") (setq zaehler 1) (repeat (strlen (rtos (abs maß))) (if (and (/= (substr (rtos (abs maß)) zaehler 1) ".") (= punkt "nein")) (setq vor (strcat vor (substr (rtos (abs maß)) zaehler 1))) );if (if (= (substr (rtos (abs maß)) zaehler 1) ".") (setq punkt "ja") );if (if (and (/= (substr (rtos (abs maß)) zaehler 1) ".") (= punkt "ja")) (setq nach (strcat nach (substr (rtos (abs maß)) zaehler 1))) );if (setq zaehler (+ zaehler 1)) );repeat ;nullen am ende in 'nach' löschen (setq stelle (strlen nach)) (while (and (> stelle 0) (= (substr nach stelle 1) "0")) (setq stelle (- stelle 1)) );repeat (if (or (= stelle 0) (= stelle 1))(setq stelle 2)) (setq nach (substr nach 1 stelle)) (if (and (>= (abs maß) 0.1) (< (strlen nach) 2)) (setq nach (strcat nach "0")) );if (if (< (abs maß) 1.00) (setq genmtext (strcat "\\A1;" (substr nach 1 2) "{\\H0.7x;\\S" (substr nach 3 2) "^;}")) (setq genmtext (strcat "\\A1;" vor "." (substr nach 1 2) "{\\H0.7x;\\S" (substr nach 3 2) "^;}")) );if (if (= (substr genmtext 5 1) "0") (setq genmtext (strcat (substr genmtext 1 4) (substr genmtext 6))) );if genmtext );defun
; aufruf : (fc_layer_anlegen layername layerfarbe layerlinie liniendatei) (defun fc_layer_anlegen (layername layerfarbe layerlinie liniendatei / fc_layersich layt regens) (setq fc_layersich (getvar "clayer")) (setq regens (getvar "regenmode")) (setvar "regenmode" 0) (princ "\n") (setq layt (tblsearch "Layer" layername)) (if (NULL layt) (progn (princ (strcat "\nLayer " layername " existiert nicht, wird erzeugt ! \n")) (command "layer" "machen" layername "" ) (if (/= layerfarbe "") (command "layer" "fa" layerfarbe layername "" ) );if (if (/= layerlinie "") (progn (if (NULL (tblsearch "ltype" layerlinie)) (command "linientyp" "laden" layerlinie liniendatei "") );if (command "layer" "ltyp" layerlinie layername "") );progn );if );progn );if (command "layer" "EIN" layername "") (if (/= (getvar "ctab") "Model") (command "aflayer" "TAUEN" layername "aktuell" "") );if (setvar "clayer" fc_layersich) (setvar "regenmode" regens) (princ) );defun
; (fc_skalierung_2) (defun fc_skalierung_2 (/ xelement vp y1 y2 faktor layerzusatz moeglichkeit dimzin_sicher rliste) (setq rliste nil) (setq dimzin_sicher (getvar "dimzin")) (setvar "dimzin" 1) (setq faktor nil) (setq layerzusatz "") ;;; wenn man sich im festen modellbereich befindet, wird der plankopf gesucht (moeglichkeit=1) (if (= (strcase (getvar "ctab")) "MODEL") (progn (if (or (= moeglichkeit 2) (= moeglichkeit nil)) (progn (princ "\n") (princ "Sie befinden sich im Modellbereich !") (setq xelement nil) (setq xelement (entnext)) (while xelement (if (= (cdr (assoc '2 (entget xelement))) "MASST") (progn (if (= (strcase (cdr (assoc '410 (entget xelement)))) "MODEL") (progn (setq faktor (/ (atof (substr (cdr (assoc '1 (entget xelement))) 3 3)) 100)) (setq rliste (list (/ (atof (substr (cdr (assoc '1 (entget xelement))) 3 3)) 100) "")) (setq moeglichkeit 1) );progn );if );progn );if (setq xelement (entnext xelement)) );while (if (= faktor nil) (progn (princ "\n") (princ "In der Zeichnung befindet sich kein Plankopf !") (setq faktor 1) (setq rliste (list 1 "")) (setq moeglichkeit 1) (princ) );progn );if );progn );if );progn ; ansonsten (moeglichkeit=2) (progn (princ "\n") (setq vp (cdr (assoc (getvar "cvport") (vports)))) (setq y1 (cadadr vp)) (setq y2 (cadar vp)) (setq faktor (/ (- y1 y2) (getvar "viewsize"))) (setq faktor (/ 10 faktor)) (setq rliste (list faktor (strcat "_M-" (strcat (substr "0000" 1 (- 4 (strlen (rtos (* faktor 100) 2 0)))) (rtos (* faktor 100) 2 0))))) (if (= (getvar "cvport") 1) (progn (alert "ACHTUNG : Sie befinden sich im Papierbereich !") (setq rliste (list 10 "_M-1")) );progn ) (setq moeglichkeit 2) (princ) );progn );if (setvar "dimzin" dimzin_sicher) rliste );defun
(defun fc_textstil (name fontname hoehe breitenfaktor /) (entmake (list '(0 . "STYLE") '(100 . "AcDbSymbolTableRecord") '(100 . "AcDbTextStyleTableRecord") (cons 2 name) '(70 . 0) (cons 40 hoehe) (cons 41 breitenfaktor) '(50 . 0.0) '(71 . 0) (cons 3 fontname) '(4 . "") )) (princ) );defun
------------------ MfG Frank Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 03. Mai. 2005 10:00 <-- editieren / zitieren --> Unities abgeben: Nur für fca_mi2
Hallo Frank, ich habe mir jetzt mal den Code angesehen (und nur angesehen, nicht laufen lassen), und es ist wohl tatsächlich so, dass du mit dem Objektreactor eine Funktion aufrufst, die das Objekt ändert. Lies dir noch einmal die obigen Beiträge durch! DU darfst mit dem Reaktor nicht das Bemaßungsobjekt selbst ändern, sondern du musst an den Block ran, der den Mtext enthält, auf den sich das Bemaßungsobjekt mit dem <> bezieht! Nur so bekommst du eine Änderung via Reaktor hin, da du dann nicht das Bemaßungsobjekt änderst, sondern den MText in einem ganz anderen Block. Grüße Holger
------------------ Holger Brischke CAD on demand GmbH Autodesk User Group Central Europe Individuelle Lösungen von Heute auf Morgen. AUGCE Manager Deutschland Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fca_mi2 Mitglied Bauingenieur
Beiträge: 505 Registriert: 10.01.2003 ACAD2018
|
erstellt am: 03. Mai. 2005 10:22 <-- editieren / zitieren --> Unities abgeben:
|
archtools Mitglied
Beiträge: 823 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 03. Mai. 2005 10:27 <-- editieren / zitieren --> Unities abgeben: Nur für fca_mi2
Zitat: Original erstellt von fca_mi2: hallo,ich habe mir jetzt einen bemaßungs (objekt-) reaktor hingebogen, der immer dann anspringt, wenn ich die bemaßung bearbeite. folgende kleine routine soll mir dann den wert aktualisieren: (defun fc_maßtext_ueberschr (element / e1 e2) (princ "\nMaßtext überschreiben...") (setq e1 (entget element)) (setq e2 (subst (cons 1 (fc_maßtext_umw (cdr (assoc 42 e1)))) (assoc 1 e1) e1)) (entmod e2) (princ) );defun aber irgendwie passiert da nix und es wird auch keine fehlermeldung ausgegeben. bevor der reaktor an die bemaßung gehängt wird, funktioniert die routine einwandfrei.
Dein Reaktor darf nicht das Objekt manipulieren, das den Reaktor auslöst. Das bedeutet, dass Du bei Verwendung nur eines Objektreaktors nicht das Maß durch die Reaktor-Callback-Funktion verändern darfst, sondern höchstens die Definition des Bemaßungsblocks - eine einfache Textüberschreibung ist damit also nicht realisierbar. Wenn Du doch nur diese einfache Textüberschreibung verwenden willst, dann musst Du trickreicher vorgehen: eine Kombination von Objekt- und Editorreaktor. Der Objektreaktor springt an, wann immer das Maß manipuliert wurde. Aber der verändert das Maß nicht, sondern speichert nur seinen Objektnamen in einer globalen Liste. Der Editorreaktor überprüft nun alle relevanten Befehle, mit denen man ein Maß manipulieren könnte, und nach Befehlsende sieht er in der globalen Liste nach, welche Maße verändert wurden. Und der Editorreaktor kann jetzt sehr bequem alle Maße manipulieren ... Tom Berger Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fca_mi2 Mitglied Bauingenieur
Beiträge: 505 Registriert: 10.01.2003 ACAD2018
|
erstellt am: 03. Mai. 2005 10:45 <-- editieren / zitieren --> Unities abgeben:
|
Brischke Moderator CAD on demand GmbH
Beiträge: 4171 Registriert: 17.05.2001 AutoCAD 20XX, defun-tools (d-tools.eu)
|
erstellt am: 03. Mai. 2005 10:54 <-- editieren / zitieren --> Unities abgeben: Nur für fca_mi2
Hallo Frank, teste mal folgende Zeilen:
Code:
(setq E (tblobjname "BLOCK"(cdr(assoc 2 (entget(car(entsel))))))) (while (setq E (entnext E)) (if (= "MTEXT" (cdr(assoc 0 (entget E)))) (alert "MASSTEXT-MTEXT gefunden") ) )
Nun sollte es klar sein, wie du an den Block gelangst. Bei Fragen ... Grüße Holger ------------------ Holger Brischke CAD on demand GmbH Autodesk User Group Central Europe Individuelle Lösungen von Heute auf Morgen. AUGCE Manager Deutschland Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fca_mi2 Mitglied Bauingenieur
Beiträge: 505 Registriert: 10.01.2003 ACAD2018
|
erstellt am: 03. Mai. 2005 11:06 <-- editieren / zitieren --> Unities abgeben:
|
fca_mi2 Mitglied Bauingenieur
Beiträge: 505 Registriert: 10.01.2003 ACAD2018
|
erstellt am: 09. Mai. 2005 09:04 <-- editieren / zitieren --> Unities abgeben:
|
archtools Mitglied
Beiträge: 823 Registriert: 09.10.2004 Entwickler für AutoCAD, BricsCAD u.a., alle Systeme
|
erstellt am: 09. Mai. 2005 10:28 <-- editieren / zitieren --> Unities abgeben: Nur für fca_mi2
Zitat: Original erstellt von fca_mi2: hallo,eine frage habe ich noch: wie kann ich denn die "stilüberschreibungen" unter "format" "bemaßungsstil", wenn ich eine bemaßung erstellt habe, vermeiden ?
Diese Überschreibungen werden immer angezeigt, wenn Du Bemaßungen hast, die nicht alle Eigenschaften eines Stils haben. Wenn Du einen vorhandenen Bemaßungsstil modifiziert hast, dann solltest Du auch sicher gehen, dass die diesen Stil referenzierenden Maße auch aktualisiert werden - andernfalls können diese Maße vom Stil abweichende Eigenschaften, also Überschreibungen haben. IMO war die Einführung der Stilüberschreibungen in AutoCAD ein großer Fehler, denn damit wird es dem Anwender sehr viel schwerer gemacht, den Bemaßungen ein konsistentes Aussehen zu geben. Außerdem ist es ziemlich unlogisch, beim BemStil solche Überschreibungen zuzulassen, beim Textstil aber nicht. Andererseits gibt es bei den BemStilen aber noch mehr Ungereimtheiten - beispielsweise die "Außenwirkung" mancher Bemaßungsvariablen wie z.B. DIMZIN. Man muß DIMZIN eventuell mal umstellen, weil man eine bestimmte Konvertierung einer Zahl in einen String benötigt, und wenn man vergisst, DIMZIN wieder zurück zu stellen, dann haben die danach erzeugten Bemaßungen Stilüberschreibungen ... Tom Berger Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |