| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY präsentiert die neue NVIDIA RTX A400 und die A1000 Grafikkarte, eine Pressemitteilung
|
Autor
|
Thema: BKS und _dimaligned (1743 mal gelesen)
|
MARTINLE Mitglied Tischler
Beiträge: 485 Registriert: 18.10.2007 AUTOCAD 2016, MS Windows7, 64-bit
|
erstellt am: 27. Mrz. 2012 13:33 <-- editieren / zitieren --> Unities abgeben:
Hallo! Bitte um Hilfe! Ich versuche folgendes Lisp zum laufen zu bringen. (defun c:test (/ p1 p2) (setq p1 (getpoint)) (setq p2 (getpoint)) (command "bks" p1 "") (command "_dimaligned" p1 p2 "Pause") )
Das Problem ist aber das die Bemaßung irgendwo liegt nur nicht auf p1 p2. Obwohl ich im WKS arbeite! Irgendwie muß ich p1 und p2 transformieren das mir das Maß richtig plaziert wird.Aber wie?? Liebe Grüße Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
runkelruebe Ehrenmitglied V.I.P. h.c. Straßen- / Tiefbau
Beiträge: 8086 Registriert: 09.03.2006 sw: Win7-x64 Office 365 ProPlus C3D (& LT ) ET; DACH; Extensions ------------------- hw: FX3800 i5 CPU 670 8GB RAM
|
erstellt am: 27. Mrz. 2012 14:17 <-- editieren / zitieren --> Unities abgeben: Nur für MARTINLE
Moin, bin ja kein Lispler, aber Du widersprichst Dir: Du nutzt den Befehl BKS und sagst gleichzeitig, dass Du im WKS arbeitest? Evtl. hilft Dir ja schon >> dieser << Fingerzeig bzgl. TRANS... mit meinen Rudimentärkenntnissen käme sowas dabei heraus: (command "bks" p1 "") (setq p1(trans p1 0 1)) (setq p2(trans p2 0 1)) PS: Was soll das Teilchen eigentlich tun? Also ich sehe derzeit keine Arbeitserleichterung? Du mußt für die Bemaßung 3x klicken, so oder so. ------------------ Gruß, runkelruebe Herr Kann-ich-nich wohnt in der Will-ich-nich-Straße... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 27. Mrz. 2012 14:20 <-- editieren / zitieren --> Unities abgeben: Nur für MARTINLE
Hallo Martin, laß dich einfach die (Command "BKS" - Zeile weg, dann wird die Bemassung an die Position den Punkte p1 und p2 erzeugt. Ich denke, das kann sonst auch nicht funktionieren. Du pickst erst die Punkte im WKS, dann erzeugtst Du das BKS und willst mit den WKS-Koordinaten die Bemassung erzeugen (der Command-Befehl dazu möchte die BKS-Koordinaten, sofern aktiv) Wenn das aber mit dem BKS richtig ist (ganz blick ich da noch nicht duch, dann musst Du TRANS verwenden: (command "_dimaligned" (trans p1 0 1) (trans p2 0 1)"Pause") [edit] @Runkelrübe: da warst Du wohl mal wieder schneller, aber interessant, daß unseren Antworten doch recht nahe beieinander liegen. [/edit] ------------------ viele Grüße
Jörn http://www.bosse-engineering.com [Diese Nachricht wurde von joern bosse am 27. Mrz. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MARTINLE Mitglied Tischler
Beiträge: 485 Registriert: 18.10.2007 AUTOCAD 2016, MS Windows7, 64-bit
|
erstellt am: 27. Mrz. 2012 14:48 <-- editieren / zitieren --> Unities abgeben:
Hallo runkelruebe! Hallo Jörn! Danke für eure Hilft! Es geht darum: In ACAD ist immer das erste Maß das Problem mit dem richtigen Abstand zum Objekt. Danach kann man bei einer Bemaßungskette je den Befehl __dimcontinue und __dimbaseline verwenden. Ich versuche ein Lisp zu schreiben das diese Problem überwindet. Deshalb das setzten des BKS. Vorher aber habe ich meinen Raster eingestellt (sagen wir mal 80/80 Einheiten) aber noch nicht aktiviert. So, nun wenn ich p1 und p2 gwählt habe setzt sich das BKS auf p1 und somit ist dieser Punkt auch der Ausgangspunkt für meinen Raster. Nach dem Setzen des BKS sollte der Raster aktiviert werden damit ich bei der Abfrage nach dem dritten Punkt der Bemaßung im Raster "fahren" kann. Nach dem absetzten des Maßes sollte der Raster wieder ausgeschaltet werden. Danach könnte man mit _dimcontinue weiterbemaßen. Dies alles in einem Lisp ist mein Ziel. PS: die Zeile (command "_dimaligned" (trans p1 0 1) (trans p2 0 1)"Pause") funktioniert nur wenn man im WKS ist. Sobald man das BKS gesetzt hat funktioniert diese Zeile nicht mehr. Denn dann spring das Maß wieder ins "Nirwana"!
lg. Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
joern bosse Ehrenmitglied Dipl.-Ing. Vermessung
Beiträge: 1763 Registriert: 11.10.2004 Window 11 ACAD 2021 CIVIL 2021 BricsCAD ab V14 11th Gen Intel(R) Core(TM) i7-1165G7 @ 2.80GHz 2.80 GHz 32.0GB RAM NVIDIA GeForce MX450<P>
|
erstellt am: 27. Mrz. 2012 15:17 <-- editieren / zitieren --> Unities abgeben: Nur für MARTINLE
Zitat: PS: die Zeile (command "_dimaligned" (trans p1 0 1) (trans p2 0 1)"Pause") funktioniert nur wenn man im WKS ist. Sobald man das BKS gesetzt hat funktioniert diese Zeile nicht mehr. Denn dann spring das Maß wieder ins "Nirwana"!
Hallo Martin, ob das funktioniert oder nicht kommt immer auf das Koordinatensystem an: GETPOINT liefert WKS oder BKS Koordianten (je nach aktivem Koordinatensystem) alle Command-Befehle verwenden WKS oder BKS Koordinaten, (je nach aktivem Koordinatensystem) d.h., wenn Du WKS-Koordinaten hast und BKS brauchst: (TRANS pkt 0 1) wenn Du BKS-Koordinaten hast und WKS brauchst: (TRANS pkt 1 0) Die TRANS-Befehle haben auch nur ein Auswirkung, wenn ein BKS aktiv ist. Wenn Du Dich also bereits im BKS befindest, und über GETPOINT Punkte pickst, dann sind die Koordinaten bereits im BKS und können einem Command-Befehl übergeben werden. So, ausprobieren mußt Du selber, ich bin gerade mal wieder knapp mit der Zeit.
------------------ viele Grüße Jörn http://www.bosse-engineering.com Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MARTINLE Mitglied Tischler
Beiträge: 485 Registriert: 18.10.2007 AUTOCAD 2016, MS Windows7, 64-bit
|
erstellt am: 27. Mrz. 2012 15:19 <-- editieren / zitieren --> Unities abgeben:
|
MARTINLE Mitglied Tischler
Beiträge: 485 Registriert: 18.10.2007 AUTOCAD 2016, MS Windows7, 64-bit
|
erstellt am: 28. Mrz. 2012 10:40 <-- editieren / zitieren --> Unities abgeben:
So. Soweit bin ich gekommen. Es funktioniert auch. Aber bei der Angabe nach dem 3 Punkt bei der Bemaßung folgende Meldung: "Ungültige Punkteingabe. Position der Bemaßungslinie angeben oder [Mtext/Text/Winkel]:" Das Lisp läuft aber weiter und es wird auch alles richtig gemacht. Wenn das Lisp fertig ist erscheint in der Befehlszeile noch folgende Meldung: "Ungültige Punkteingabe. Position der Bemaßungslinie angeben oder [Mtext/Text/Winkel]:" Maßtext = 610 Befehl: 14847 Irgendwo fehlt da doch noch ein oder mehrere (princ) oder?? Hier mein Lisp (defun c:mabem (/ *error* sna OSM p1 p2) (defun *error* (msg) (if sna (setvar 'snapmode sna) ) (if OSM (setvar 'osmode OSM) ) (if (not (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")) (princ (strcat "\nError: " msg)) ) (princ) ) (setq sna (getvar 'snapmode)) (setq OSM (getvar 'osmode)) (setvar "snapmode" 0) (command "bks" "welt") (setq p1 (getpoint "\nPunkt wählen:")) (setq p2 (getpoint "\nZweiten Punkt wählen:")) (command "bks" (trans p1 0 1) (trans p2 0 1) "") (setvar "snapmode" 1) (setvar "osmode" 0) (command "bks" "an") (command "_dimaligned" (trans p1 0 1) (trans p2 0 1) "Pause" ) (while (/= (getvar "CMDACTIVE") 0) (command pause)) (setvar "osmode" 14847) (setvar "snapmode" 0) (setvar 'snapmode sna) (setvar 'osmode OSM) )
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spider_dd Mitglied
Beiträge: 1144 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 28. Mrz. 2012 12:20 <-- editieren / zitieren --> Unities abgeben: Nur für MARTINLE
Hallo Martinle, mal ein paar Kommentare/Fragen:
Zitat: Original erstellt von MARTINLE:So. Soweit bin ich gekommen. (setq sna (getvar 'snapmode)) (setq OSM (getvar 'osmode)) (setvar "snapmode" 0) (command "bks" "welt") (setq p1 (getpoint "\nPunkt wählen:")) (setq p2 (getpoint "\nZweiten Punkt wählen:")) (command "bks" (trans p1 0 1) (trans p2 0 1) "") ; Wohin transponierts Du hier, Du setzt doch die Punkte im WKS ab, ABER (zumindest beim Test in der Befehlszeile) hat ACAD nach absetzen des 1. Punkte den "NUllPUNKT" schon dort und Punkt p2 landet ganz woanders. Hier noch einfügen: (setq p3 (list (- (car p2) (car p1)) (- (cadr p2) (cadr p1)) (- (caddr p2) (caddr p1)))) ; und dann (command "bks" p1 p3 "") ; hier darauf achten wo Dein Cursor steht, da wird positiv Y (setvar "snapmode" 1) (setvar "osmode" 0) (command "bks" "an") ; Warum schaltest Du hier auf BKS "Ansicht"?? (command "_dimaligned" (trans p1 0 1) (trans p2 0 1) "Pause" ; lass mal die Anführungzeichen weg ) (while (/= (getvar "CMDACTIVE") 0) (command pause)) ; ist dies nötig?? (setvar "osmode" 14847) ; das kannst Du dir sparen, denn Du setzt ja zwei Zeilen später wieder neu (setvar "snapmode" 0) ; dto. (setvar 'snapmode sna) (setvar 'osmode OSM) )[/i]
Probiers mal aus. HTH Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MARTINLE Mitglied Tischler
Beiträge: 485 Registriert: 18.10.2007 AUTOCAD 2016, MS Windows7, 64-bit
|
erstellt am: 28. Mrz. 2012 12:40 <-- editieren / zitieren --> Unities abgeben:
|
spider_dd Mitglied
Beiträge: 1144 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 29. Mrz. 2012 08:17 <-- editieren / zitieren --> Unities abgeben: Nur für MARTINLE
Zitat: Original erstellt von MARTINLE: ... Am Ende bringt es mir noch: Punkt wählen: Zweiten Punkt wählen:14847 Befehl: Kann man das mit einem (princ) noch ausschalten?
Hallo Martin, da wir jetzt nicht Deinen aktuellen Code sehen, kann man hier nur raten. Mit (princ) ... probier es aus. Und prüfe mal, wie bei Dir die Variable "cmdecho" gesetzt ist (und was diese bewirkt). Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MARTINLE Mitglied Tischler
Beiträge: 485 Registriert: 18.10.2007 AUTOCAD 2016, MS Windows7, 64-bit
|
erstellt am: 29. Mrz. 2012 09:14 <-- editieren / zitieren --> Unities abgeben:
Hallo Thomas! Entschuldige wenn ich mich erst jetzt melde! Hab viel um die Ohren. Hab mit CMDECHO getestet aber es ändert sich nichts. Ist auch egal.Das Programm läuft ja. Nur folgendes Problem hat sich noch aufgetan. Bei der Abfrage nach pt2 muß ich des öfteren händisch "lot" eingeben. Dann nimmt es mir aber nicht den Lotrechten Punkt sondern den Endpunkt oder Eckpunkt des gewählten Objektes. Muß ich da beim Lisp noch was ändern? Hier noch mal das Lisp: (defun c:mabem (/ *error* sna OSM p1 p2) (setvar "osmode" 14847) (defun *error* (msg) (if sna (setvar 'snapmode sna) ) (if OSM (setvar 'osmode OSM) ) (if (not (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")) (princ (strcat "\nError: " msg)) ) (princ) ) (setq sna (getvar 'snapmode)) (setq OSM (getvar 'osmode)) (setvar "snapmode" 0) (command "bks" "welt") (setq p1 (getpoint "\nPunkt wählen:")) (setq p2 (getpoint "\nZweiten Punkt wählen:")) (setq p3 (list (- (car p2) (car p1)) (- (cadr p2) (cadr p1)) (- (caddr p2) (caddr p1)))) (command "bks" p1 p3 "") (setvar "snapmode" 1) (setvar "osmode" 0) (command "_dimaligned" (trans p1 0 1) (trans p2 0 1) Pause ; lass mal die Anführungzeichen weg ) (setvar 'snapmode sna) (setvar 'osmode OSM) )[/i] lg. Martin
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
spider_dd Mitglied
Beiträge: 1144 Registriert: 27.11.2003 Win 10Pro Intel(R) Core(TM) i7-7700 NVIDIA Quadro P1000 ACAD, Civil-3D 2018
|
erstellt am: 29. Mrz. 2012 10:18 <-- editieren / zitieren --> Unities abgeben: Nur für MARTINLE
Hallo Martin, gleich zu Anfang, noch bevor Du Dir die aktuellen Enstellungen merkst, setzt Du osmode auf 14847, d. h. alles außer "nächster", ist das so gewollt? Bei der Auswahl der Punkte sucht sich ACAD dann natürlich "was gerade passendes" aus. Und wenn Du ans Ende des Proggis noch ein (princ) hängst, dann kommt auch die Ausgabe von 14847 (Ergebnis des derzeit letzten Befehls setvar 'osmode ...) auch nicht mehr in die Befehlszeile. Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
MARTINLE Mitglied Tischler
Beiträge: 485 Registriert: 18.10.2007 AUTOCAD 2016, MS Windows7, 64-bit
|
erstellt am: 29. Mrz. 2012 10:25 <-- editieren / zitieren --> Unities abgeben:
Hallo Thomas! Ja osmode ist so gewollt. Es passt auch soweit. Nur hi und da muß ich bei der Auswahl pt2 lotrecht auf ein Objekt zugreifen. Das funktioniert aber nicht. Denn da nimmt es mir nicht den Lotrechten Punkt. Keine Ahnung warum?? Das mit (princ) hab ich eingebaut.Danke! lg. Martin Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |