| | | 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: Massstab vom Ansichtsfenster auslesen (1433 mal gelesen)
|
Bauvermesser Mitglied Vermesser
Beiträge: 460 Registriert: 18.03.2006 AMD 2600, 2024RAM ,WIN XP PROF-SP3, ACAD 2005, Firmenrechner,
|
erstellt am: 23. Nov. 2010 22:02 <-- editieren / zitieren --> Unities abgeben:
hallo, habe folgende lsp Schnipsel zusammenbekommen (defun c:FEmasst() (setq ele(car(entsel "\nAnsichtsfenster wählen: "))) (setq AFMA (vla-get-customscale(vlax-ename->vla-object ele))) (setq fac (/ 1000.000 AFMA)) ) (princ) Frage: Wie kann ich erreiche das der ausgelesene Masssab als Text an der Maus hängt und auf dem Layout abgelegt werden kann und auch aktualisiert wird? Ich bitte um Hilfe oder Hinweis auf bestehende Anfragen. ------------------ Gruß vom Bauvermesser; Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 23. Nov. 2010 23:03 <-- editieren / zitieren --> Unities abgeben: Nur für Bauvermesser
Hi, Zitat: Original erstellt von Bauvermesser: Wie kann ich erreiche das der ausgelesene Masssab als Text an der Maus hängt und auf dem Layout abgelegt werden kann und auch aktualisiert wird?
"Aber das sind ja gleich 3 Wünsche auf einmal! Das geht nun wirklich nicht!" Vorschlag: Du liest die Object-ID des Fensters aus und bastelst daraus und der Eigenschaft CustomScale einen Schriftfeldcode. Etwa so: (strcat "%<\\AcObjProp Object(%<\\_ObjId " (vl-princ-to-string (vlax-get-property obj 'ObjectID)) ">%).CustomScale \\f \"1:%lu2\">%") Dann fügst du einen Block mit Attribut ein (wenn du wirklich was am Cursor hängen haben willst) und füllst das Attribut mit dem Schriftfeldcode. Gab's mal im AutoCAD-Magazin vor ca. 2 Jahren. Nur anders. Gruß CADchup ------------------ CADmaro.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Bauvermesser Mitglied Vermesser
Beiträge: 460 Registriert: 18.03.2006 AMD 2600, 2024RAM ,WIN XP PROF-SP3, ACAD 2005, Firmenrechner,
|
erstellt am: 26. Nov. 2010 20:05 <-- editieren / zitieren --> Unities abgeben:
Danke für die Antwort, aber ach wie dumm von mir mich nicht nur auf einen Wunsch zu beschränken, ja das hat man eben davon wenn man den Hals nicht voll bekommen kann Mit dem Schriftfeldvariablen habe ich vorher schon einiges probiert, bin aber mit dem Ergebniss über Attribut und Block nicht zufrieden da: der Massstab immer nur in 1:2 und nicht 1:500 angezeigt wird und ich beim Block einfügen in die Zeichnung auch gleich das Fenster mit einfügen muss, da sonst die erknüpfung fehlt. Desshab hat mir ja mein LSP-schnipsel so gefallen. Mit dem (strcat "%<\\AcObjProp Object(%<\\_ObjId " (vl-princ-to-string (vlax-get-property obj 'ObjectID)) ">%).CustomScale \\f \"1:%lu2\">%") komme ich nicht klar. Werde mal im Forum suchen ob zu dem Beitrag noch ältere Beiträge bestehen. ------------------ Gruß vom Bauvermesser; Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3336 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 28. Nov. 2010 16:12 <-- editieren / zitieren --> Unities abgeben: Nur für Bauvermesser
Hi, Zitat: Original erstellt von Bauvermesser: Danke für die Antwort, aber ach wie dumm von mir mich nicht nur auf einen Wunsch zu beschränken, ja das hat man eben davon wenn man den Hals nicht voll bekommen kann.
Hm, das haben die Kinder aus der Ü-Ei-Werbung damals aber nicht geantwortet... Also, ein Ansichtsfenster wählen kannst du, es in ein VLA-Objekt wandeln hast du auch. Für ein Schriftfeld brauchst du jetzt die Object-ID dieses Objekts für den Schriftfeldcode und den Umrechnungsfaktor, damit der "CustomScale" auch so angezeigt wird, wie du ihn gerne hättest. Um dieses und mehr rauszufinden, gehst du in den Schriftfelddialog, stellst alles so ein, wie du es brauchst, und kopierst dir dann die Zeile, die unten im Dialogfeld angezeigt wird, in die Zwischenablage. Diese Zeile muss du in Lisp nachbauen. Das sieht dann zum Beispiel wie oben schon geschrieben so aus: Code:
(strcat "%<\\AcObjProp Object(%<\\_ObjId "; Standard, wenn es um Objekteigenschaften geht (vl-princ-to-string (vlax-get-property obj 'ObjectID)); Auslesen der Object-ID ">%).CustomScale \\f \"1:%lu2%ct1%qf2816\">%"; "CustomScale" auslesen + formatieren )
Welche Formatierung du verwenden musst, kriegst du durch Ausprobieren heraus. Zeichne z.Bsp. eine Linie und bau ein Schriftfeld, das ihre Länge ausgibt. Im Schriftfeldialog kannst du den Umrechnungsfaktor bestimmen. Kopier dir die Format-Anweisungen nach dem \f, du kannst sie auch für den Maßstab eines Ansichtsfensters verwenden! Wahrscheinlich steht da irgendwo sowas wie %ct8[1000].Ein paar Regeln sind natürlich zu beachten: Es werden nur Strings verwendet. Deshalb das vl-princ-to-string für die Object-ID. Ein Backslash markiert in Lisp ein Steuerzeichen, deshalb steht vor jedem Backslash und Anführungszeichen im String ein weiterer Backslash. Wenn du den Schriftfeldcode zusammengebastelt hast, übergibst du ihn einfach einem Text. Bemaßungstext, Attribut, usw.
Code: (command "_text" BASISPUNKT HÖHE WINKEL SCHRIFTFELDCODE)
Gruß CADchup ------------------ CADmaro.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|