| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Maßstab auslesen (1958 mal gelesen)
|
Jürgen Scheeren Mitglied Energieanlagen Konstrukteur , CAD-Administrator
Beiträge: 262 Registriert: 03.04.2003 Autocad MEP 2016 win7x64bit
|
erstellt am: 18. Apr. 2006 13:01 <-- editieren / zitieren --> Unities abgeben:
Hallo Autolisper, möchte gerne den Maßstab eines Ansichtsfensters auslesen, habe mir mal die Beiträge im Forum angeschaut und gesehen das es wohl für einen Gelegenheitslisper nicht ganz so einfach ist. Dachte der Maßstab steht in einer Variablen, ist aber offensichtlich nicht so. Brauchte einfach nur (setq ele(entsel "\nAnsichtsfenster wählen: ")) (setq AFMA ( wie auch immmer ausgelesener Maßstab vom AF)) um weiter zu kommen. Vieleicht hat jemand das ganze schon Komplett und braucht nur mit Strg + C das ganze zwischen die klammern zu setzten. Wäre super nett. Gruß Jürgen [Diese Nachricht wurde von Jürgen Scheeren am 18. Apr. 2006 editiert.] [Diese Nachricht wurde von Jürgen Scheeren am 18. Apr. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 18. Apr. 2006 13:20 <-- editieren / zitieren --> Unities abgeben: Nur für Jürgen Scheeren
(vla-get-customscale(vlax-ename->vla-object(car(entsel)))) also für dich (setq ele(car(entsel "\nAnsichtsfenster wählen: "))) (setq AFMA (vla-get-customscale(vlax-ename->vla-object ele))) ------------------ - 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 |
Jürgen Scheeren Mitglied Energieanlagen Konstrukteur , CAD-Administrator
Beiträge: 262 Registriert: 03.04.2003 Autocad MEP 2016 win7x64bit
|
erstellt am: 18. Apr. 2006 13:31 <-- editieren / zitieren --> Unities abgeben:
|
Jürgen Scheeren Mitglied Energieanlagen Konstrukteur , CAD-Administrator
Beiträge: 262 Registriert: 03.04.2003 Autocad MEP 2016 win7x64bit
|
erstellt am: 18. Apr. 2006 15:00 <-- editieren / zitieren --> Unities abgeben:
Hallo Autolisper, wenn ich schon poste, dann kann ich auch mal zeigen was dabei raus gekommen ist, aber bitte keine Steinigung, weiß selber das das Ding nicht rund ist, aber produktieve Kritik ist immer willkommen. Also wenn's wehn interessiert, hier mein low level Tool zum gucken, motzen, mißbrauchen oder als Ansatz für was Anderes. Ach so, noch eins, es funzt tatsächlich;-) Gruß Jürgen ;************************************************************************* ;* Written by: Jürgen Scheeren / CAD-Konstrukteur ;* Erstellt: 2006 ;* ;************************************************************************* ; Tool zum automatischen Einstellen der Bemaßungsskalierung ; für den Papierbereich in "Meter Angaben"
(Defun C:FenFak (/) (setvar "cmdecho" 0) (setq ele(car(entsel "\nAnsichtsfenster wählen: "))) ;holen des aktuellen AF-Maßstabs (setq AFMA (vla-get-customscale(vlax-ename->vla-object ele))) (setvar "dimlfac" 1) (setq dimlf (getvar "dimlfac")) (setq fac (/ (/ dimlf AFMA) 1000)) (command "dimlfac" fac) ;übernehmen der Änderung (command "_-DIMSTYLE" "_apply" "_all" "") (setvar "cmdecho" 1) (PROMPT "\nBemaßungsskalierung geändert in Meter Angaben ... ") (princ) ) (princ)
[Diese Nachricht wurde von Jürgen Scheeren am 18. Apr. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 18. Apr. 2006 15:37 <-- editieren / zitieren --> Unities abgeben: Nur für Jürgen Scheeren
Schön, dass du dein Ergebnis gepostet hast. Dazu ein paar Anmerkungen: Lokalisier doch bitte deine Variablen! ->(Defun C:FenFak (/ ELE AFMA DIMLF FAC) .. dann , was passiert, wenn der Nutzer daneben oder was anderes angeklickt hat?... Besser ist : (if(and(setq ele(car(entsel "\nAnsichtsfenster wählen: "))) (=(cdr(assoc 0 (entget ELE))) "VIEWPORT") ) (progn (setq AFMA (vla-get-customscale(vlax-ename->vla-object ele))) ... was soll das?? ;(setvar "dimlfac" 1) ;(setq dimlf (getvar "dimlfac")) ;(setq fac (/ (/ dimlf AFMA) 1000)) ... kannst du auch als (setq fac (/ 0.001 AFMA)) .. schreiben (command "dimlfac" fac) .. hiermit überschreibst du aber auch alle anderen .. bereits vorgenommenen Bemaßungsmanipulationen!! (command "_-DIMSTYLE" "_apply" "_all" "") ) ) als (command "_-DIMSTYLE" "_apply" "_all" "") -Ersatz ist vielleicht eine entsprechende direkte Bemaßungsmanipulation günstiger?!
------------------ - 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 |
Jürgen Scheeren Mitglied Energieanlagen Konstrukteur , CAD-Administrator
Beiträge: 262 Registriert: 03.04.2003 Autocad MEP 2016 win7x64bit
|
erstellt am: 18. Apr. 2006 16:05 <-- editieren / zitieren --> Unities abgeben:
Ja, Hallo Thomas, vielen Dank für Deine Tips, werde versuchen sie einzubauen und versuchen es nachzuvollziehen, um das ganze abzurunden. @ ;(setvar "dimlfac" 1) Das habe ich gemacht damit der Ausgangswert immer 1 ist, falls der Wert mal geändert ist. @;(setq dimlf (getvar "dimlfac")) ;(setq fac (/ (/ dimlf AFMA) 1000)) Hast Du vollkommen recht, ist Quatsch. .. hiermit überschreibst du aber auch alle anderen .. bereits vorgenommenen Bemaßungsmanipulationen!! (command "_-DIMSTYLE" "_apply" "_all" "") Am liebsten wäre mir immer den aktuellen Bemaßungsstil zu überschreiben, der kann ja auch mal unterschiedlich sein, deswegen wollte ich keine benannten Bamaßungsstile einsetzen. Wenn ich fertig bin poste ich das Ding wieder. Gruß Jürgen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jürgen Scheeren Mitglied Energieanlagen Konstrukteur , CAD-Administrator
Beiträge: 262 Registriert: 03.04.2003 Autocad MEP 2016 win7x64bit
|
erstellt am: 19. Apr. 2006 09:27 <-- editieren / zitieren --> Unities abgeben:
Hallo Thomas, hier nochmal das Prog geändert. @(command "_-DIMSTYLE" "_apply" "_all" "") Wenn ich nur den aktuellen Bemaßungsstil überschreiben will, kann ich für "_all" was anderes einsetzen, giebt es so was wie "_current" ? Gruß Jürgen ; Tool zum automatischen Einstellen der Bemaßungsskalierung ; für den Papierbereich in "Meter Angaben" (Defun C:FenFak (/ ELE AFMA DIMLF FAC) (setvar "cmdecho" 0) (if(and(setq ele(car(entsel "\nAnsichtsfenster wählen: "))) (=(cdr(assoc 0 (entget ELE))) "VIEWPORT") ) ;holen des aktuellen AF-Maßstabs (progn (setq AFMA (vla-get-customscale(vlax-ename->vla-object ele))) ;setzt die Bemaßungsskalierung, falls verstellt (setvar "dimlfac" 1) (setq fac (/ 0.001 AFMA)) (command "dimlfac" fac) ;übernehmen der Änderung (command "_-DIMSTYLE" "_apply" "_all" "") ) ) (setvar "cmdecho" 1) (PROMPT "\nBemaßungsskalierung geändert in Meter Angaben ... ") (princ) ) (princ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 19. Apr. 2006 10:51 <-- editieren / zitieren --> Unities abgeben: Nur für Jürgen Scheeren
Mein Ansatz wäre die direkte Manipulation des Bemaßungsobjektes : (defun SETDIMLFAC (FAKTOR / AUSWAHL OBJEKT VLA-OBJEKT) (if(and(setq AUSWAHL (ssget '( (0 . "DIMENSION")) )) (numberp FAKTOR) ) (repeat (sslength AUSWAHL) (setq OBJEKT (ssname AUSWAHL 0)) (setq VLA-OBJEKT (vlax-ename->vla-object OBJEKT)) (vlax-put-property VLA-OBJEKT 'LinearScaleFactor (/(vlax-get-property VLA-OBJEKT 'LinearScaleFactor)(float FAKTOR)) ) (vlax-put-property VLA-OBJEKT 'RoundDistance (/(vlax-get-property VLA-OBJEKT 'RoundDistance)(float FAKTOR)) ) (setq P(+(vlax-get-property VLA-OBJEKT 'PrimaryUnitsPrecision)(fix(/(log FAKTOR)(log 10)))1)) (vlax-put-property VLA-OBJEKT 'PrimaryUnitsPrecision (cond((< P 0)0)((> P 8)8)('T P)) ) (setq AUSWAHL (ssdel OBJEKT AUSWAHL)) ) ) (princ) ) für die Umrechnung von mm in m dann folgender Aufruf (SETDIMLFAC 1000) von m in mm (SETDIMLFAC 0.001) usw.. evtl. kann man noch einbauen, das die überschriebenen Bemaßungen berücksichtigt werden, Fehlerbehandlungen usw. ------------------ - 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 |
Jürgen Scheeren Mitglied Energieanlagen Konstrukteur , CAD-Administrator
Beiträge: 262 Registriert: 03.04.2003 Autocad MEP 2016 win7x64bit
|
erstellt am: 19. Apr. 2006 11:06 <-- editieren / zitieren --> Unities abgeben:
Hallo Thomas, ähem, Schluck, das muß ich jetzt erstmal einwirken lassen. Verstehe das so, das der Code eine Funktion ist den ich zusätzlich einbauen muß, oder ist es ein eigenständiges Prog. Bin da ein ganz klein bischen überfordert. Gruß Jürgen Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13508 Registriert: 30.11.2003 .
|
erstellt am: 19. Apr. 2006 11:13 <-- editieren / zitieren --> Unities abgeben: Nur für Jürgen Scheeren
..eigentlich ein eigenständiges Prog... bloß dass du evtl. noch ein (defun c: ..) mit Faktoreingabe , undo usw. drumherumbasteln mußt, wenn du es als Kommando haben willst. ------------------ - 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 |
Jürgen Scheeren Mitglied Energieanlagen Konstrukteur , CAD-Administrator
Beiträge: 262 Registriert: 03.04.2003 Autocad MEP 2016 win7x64bit
|
erstellt am: 21. Apr. 2006 10:30 <-- editieren / zitieren --> Unities abgeben:
Hallo Thomas, nochmal vielen Dank für Deine Hilfe, das mit Deinen Tips entstandene Tool funzt super. @..eigentlich ein eigenständiges Prog... bloß dass du evtl. noch ein (defun c: ..) mit Faktoreingabe , undo usw. drumherumbasteln mußt, wenn du es als Kommando haben willst. Bei der Geschichte muß ich ehrlich zugeben das es meine Gelegenheitsprogrammierhorizont bei weitem übersteigt, dank Dir aber trotzdem für Dein Beispiel. Wünsch Dir ein schönes Wochenende und bis dann in diesem Forum. Gruß Jürgen [Diese Nachricht wurde von Jürgen Scheeren am 21. Apr. 2006 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dolcetto Mitglied Konstrukteur / Softwareentwickler
Beiträge: 66 Registriert: 04.05.2004
|
erstellt am: 09. Jun. 2006 10:45 <-- editieren / zitieren --> Unities abgeben: Nur für Jürgen Scheeren
Hallo zusammen, Benötige auch den Massstab eines Ansichtsfensters in eine Variable. Allerdings bekomme ich immer volgende Fehlermeldung: Fehler: ActiveX-Server gab folgenden Fehler zurück: unbekannter Name: CustomScale Wieso erkennt er nicht CustomScale? Vielen Dank für Antworten Gruss Dolcetto Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADwiesel Moderator CAD4FM UG
Beiträge: 1968 Registriert: 05.09.2000 AutoCAD, Bricscad Wir machen das Mögliche unmöglich
|
erstellt am: 09. Jun. 2006 10:55 <-- editieren / zitieren --> Unities abgeben: Nur für Jürgen Scheeren
|
| Ingenieur Maschinenbau (m/w/d) | Menschen und Technologien zu verbinden, den Perfect Match für unsere Kunden zu gestalten, immer die richtigen Expert:innen für die jeweilige Herausforderung zu finden - das ist unser Anspruch bei FERCHAU und dafür suchen wir dich: als ambitionierte:n Kolleg:in, der:die wie wir Technologien auf die nächste Stufe bringen möchte. Du weißt genau, was du technologisch auf dem Kasten hast? Du suchst einen ... | Anzeige ansehen | Maschinenbau |
|
CADchup Ehrenmitglied V.I.P. h.c.
Beiträge: 3329 Registriert: 14.03.2001 Sicher ist, dass nichts sicher ist. Selbst das nicht. Joachim Ringelnatz
|
erstellt am: 09. Jun. 2006 12:37 <-- editieren / zitieren --> Unities abgeben: Nur für Jürgen Scheeren
|