| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt, eine Pressemitteilung
|
Autor
|
Thema: AutoLISP - Iso Bemaßung (4161 mal gelesen)
|
singoi Mitglied
Beiträge: 51 Registriert: 27.02.2007
|
erstellt am: 07. Nov. 2011 14:21 <-- editieren / zitieren --> Unities abgeben:
Hallo, Ich hab hier eine LISP datei für Iso Bemaßung. ich hab ganze zeit eine meldung "Fehler: Es ist ein Fehler innerhalb der *error*-Funktion aufgetreten.Einstellung für AutoCAD-Variable zurückgewiesen: "dimatfit" nil" können sie mir jemand hilfen was ich machen soll. AutoCAD version 2010 Lisp Programm ------------------------------------------------------------------ (defun rtd (A) (/ (* A 180.0) PI) )
(defun isodimerr (msg) (setq msg "\nDone")(princ msg)(terpri) (setvar "snapstyl" snpstl) (setq p1 nil p2 nil p3 nil snpstl nil df nil du nil cmde nil lu nil) (setq *error* olderr) (setvar "dimatfit" df) (setvar "dimtmove" dm) (setvar "dimupt" du) (setvar "orthomode" ortho) (setvar "lunits" lu) (setvar "snapstyl" snpstl) (princ) ) (defun c:isodim (/ lu df du ortho snpstl p1 p2 p3) (setq lu (getvar "lunits")) (setvar "lunits" 2) (setq df (getvar "dimatfit")) (setvar "dimatfit" 1);TEMPORARILY SETS DIMATFIT TO 1 (setq dm (getvar "dimtmove")) (setvar "dimtmove" 0);TEMPORARILY SETS DIMTMOVE TO 0 (setq du (getvar "dimupt")) (setvar "dimupt" 1) ;TEMPORARILY SETS DIMUPT TO 1 (setq ortho (getvar "orthomode")) (setvar "orthomode" 0) ;TEMPORARILY TURNS OFF ORTHO (F8) (setq olderr *error*) (setq *error* isodimerr) (setq snpstl (getvar "snapstyl")) (setvar "snapstyl" 1) (setq p1 (getpoint "\nFirst point: ")) (if (not p1) (progn (setq ent (nentsel "\nPick line: ")) (setq elist (entget (car ent))) (setq p1 (cdr (assoc 10 elist))) (setq p2 (cdr (assoc 11 elist))) (if (not p2) (progn (alert "Polylines can't be done that way!\nPick a second point on Polyline.") (setq p2 (getpoint p1 "\nPolylines can't be done that way. 2nd point: "))) ) ) ) (if (not p2) (setq p2 (getpoint p1 "\nSecond point: ")) ) (setq p3 (getpoint p2 "\n Pick point for iso direction. Use Ctrl + E for Isoplane: ")) (command "dim1" "align" P1 P2 P3 "") (setq ang (rtd (angle p2 p3))) (if (and (<= ang 60.00)(> ang 0.00))(setq isoang 30.00)) (if (and (<= ang 120.00)(> ang 60.00))(setq isoang 90.00)) (if (and (<= ang 180.00)(> ang 120.00))(setq isoang 150.00)) (if (and (<= ang 240.00)(> ang 180.00))(setq isoang 210.00)) (if (and (<= ang 300.00)(> ang 240.00))(setq isoang 270.00)) (if (and (<= ang 360.00)(> ang 300.00))(setq isoang 330.00)) (setq cmde (getvar "cmdecho")) (setvar "cmdecho" 1) (command "dim" "obl" "l" "" isoang "te" "l" "none" pause "" "exit") (setvar "cmdecho" cmde) (setvar "snapstyl" snpstl) (setvar "dimatfit" df) (setvar "dimtmove" dm) (setvar "dimupt" du) (setvar "orthomode" ortho) (setvar "lunits" lu) (princ) ) ;end defun (prompt "Type ISODIM to execute. ")(terpri) (princ) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 07. Nov. 2011 14:36 <-- editieren / zitieren --> Unities abgeben: Nur für singoi
ungetestet: (defun isodimerr (msg) (setq msg "\nDone")(princ msg)(terpri) (setvar "snapstyl" snpstl) (setq p1 nil p2 nil p3 nil snpstl nil df nil ;hier setzt du df auf nil du nil cmde nil lu nil) (setq *error* olderr) (setvar "dimatfit" df) ;hier willst du die sysvar auf nil ändern - die anderen analog Das sollte so nicht funktionieren, erst setzen dann auf nil zurücksetzen. Edit: Arbeite mit der Konsole und Haltepunkten, dann kannst du alles überwachen und den Fehler schnell selber finden. (Anleitung zur Konsole von Jörn Bosse auf seiner Seite und/oder bei cadmaro.de zufinden) ------------------ Mfg Heiko
Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." [Diese Nachricht wurde von Dorfy am 07. Nov. 2011 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
singoi Mitglied
Beiträge: 51 Registriert: 27.02.2007
|
erstellt am: 07. Nov. 2011 15:09 <-- 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: 07. Nov. 2011 15:52 <-- editieren / zitieren --> Unities abgeben: Nur für singoi
Hallo singoi, hatte Dorfy doch geschrieben, erst Systemvariabelen zurücksetzen, dass Hilfsvariablen auf NIL. Sieht dann ungefähr so aus: Code: (defun isodimerr (msg) (setq msg "\nDone")(princ msg)(terpri) (setvar "snapstyl" snpstl) ;; (setq p1 nil p2 nil p3 nil snpstl nil df nil du nil cmde nil lu nil) ;; Zeile hier raus (setq *error* olderr) (setvar "dimatfit" df) (setvar "dimtmove" dm) (setvar "dimupt" du) (setvar "orthomode" ortho) (setvar "lunits" lu) (setvar "snapstyl" snpstl) ;; ... und hier rein (setq p1 nil p2 nil p3 nil snpstl nil df nil du nil cmde nil lu nil) (princ) )
Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 07. Nov. 2011 15:52 <-- editieren / zitieren --> Unities abgeben: Nur für singoi
ungetestet: Code: (defun isodimerr (msg) (setq msg "\nDone")(princ msg)(terpri) (setvar "snapstyl" snpstl) (setq *error* olderr) (setvar "dimatfit" df) (setvar "dimtmove" dm) (setvar "dimupt" du) (setvar "orthomode" ortho) (setvar "lunits" lu) (setvar "snapstyl" snpstl) (setq p1 nil p2 nil p3 nil snpstl nil df nil du nil cmde nil lu nil);diese zeile nur nach hinten geschoben (princ) )
Oder an den Verfasser der Zeilen wenden?! ------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
singoi Mitglied
Beiträge: 51 Registriert: 27.02.2007
|
erstellt am: 07. Nov. 2011 15:59 <-- editieren / zitieren --> Unities abgeben:
Danke freunde, das hatt sich bis zu einem code weiter gegangen..aber am ende kriege ich noch eine Fehler was ich nicht verstanden habe.. ----------------------------------------------------------------- Befehl: isodim First point: Second point: <Ortho ein> Pick point for iso direction. Use Ctrl + E for Isoplane: <Isoebene Rechts> <Isoebene Links> <Isoebene Oben> dim1 Bem: align ** Befehl kann nicht transparent ausgeführt werden ** ----------------------------------------------------------------- so war das gelaufen..mit fehler..wo kann das fehler sein... Danke für diese Forum.. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dorfy Mitglied Double-Dipl.-Ing. Bleistiftanspitzer
Beiträge: 900 Registriert: 21.07.2006 AutoCad2007, ProE, HiCad
|
erstellt am: 07. Nov. 2011 16:40 <-- editieren / zitieren --> Unities abgeben: Nur für singoi
und wieder ungetestet: (command "_dim1" "_align" P1 P2 P3 "") Englisch <-> Deutsch - Anpassung...
------------------ Mfg Heiko Elefantenjagd in Afrika "... LISP-Programmierer bauen einen Irrgarten aus Klammern und hoffen, dass sich der Elefant darin verirrt..." Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
singoi Mitglied
Beiträge: 51 Registriert: 27.02.2007
|
erstellt am: 07. Nov. 2011 17:26 <-- editieren / zitieren --> Unities abgeben:
Vielen Dank fruende..das war sehr nett von euch ich könnte weiter mit mein LISP .. gibts auch ein code für ein fenster mit zwei buttons drauf zu machen? beispiel: ich möchte ein fenster haben mit Text " welche winkel " mit zwei Button 1. 30° 2. 330° und dann drucke ich 30° taste und dann weiter mit diese code. Danke.. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
singoi Mitglied
Beiträge: 51 Registriert: 27.02.2007
|
erstellt am: 08. Nov. 2011 11:59 <-- editieren / zitieren --> Unities abgeben:
|
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: 08. Nov. 2011 12:09 <-- editieren / zitieren --> Unities abgeben: Nur für singoi
|
singoi Mitglied
Beiträge: 51 Registriert: 27.02.2007
|
erstellt am: 08. Nov. 2011 12:16 <-- editieren / zitieren --> Unities abgeben:
Hi, Ich hab eine LISP für Isometrie Bemaßung. funktioniert das einwandfrei inklusive schräg bemaßung. jetzt möchte ich nach dem Schräg command ein Fenster haben mit zwei tasten 30° und 330°. dann wenn ich eine von diese taste drucke muss die entsprechende Bemaßung automatisch anordnen. meine Code sieht so aus. ----------------------------------------------------------------------- (defun isodimerr (msg) (setq msg "\nDone")(princ msg)(terpri) (setvar "snapstyl" snpstl) (setq *error* olderr) (setvar "dimatfit" df) (setvar "dimtmove" dm) (setvar "dimupt" du) (setvar "orthomode" ortho) (setvar "lunits" lu) (setvar "snapstyl" snpstl) (setq p1 nil p2 nil p3 nil snpstl nil df nil du nil cmde nil lu nil ) (princ) ) (defun c:isodim (/ lu df du ortho snpstl p1 p2 p3) (setq lu (getvar "lunits")) (setvar "lunits" 2) (setq df (getvar "dimatfit")) (setvar "dimatfit" 3);TEMPORARILY SETS DIMATFIT TO 3 (setq dm (getvar "dimtmove")) (setvar "dimtmove" 0);TEMPORARILY SETS DIMTMOVE TO 0 (setq du (getvar "dimupt")) (setvar "dimupt" 1) ;TEMPORARILY SETS DIMUPT TO 1 (setq ortho (getvar "orthomode")) (setvar "orthomode" 0) ;TEMPORARILY TURNS OFF ORTHO (F8) (setq olderr *error*) (setq *error* isodimerr) (setq snpstl (getvar "snapstyl")) (setvar "snapstyl" 1) (setq p1 (getpoint "\nFirst point: ")) (if (not p1) (progn (setq ent (nentsel "\nPick line: ")) (setq elist (entget (car ent))) (setq p1 (cdr (assoc 10 elist))) (setq p2 (cdr (assoc 11 elist))) (if (not p2) (progn (alert "Polylines can't be done that way!\nPick a second point on Polyline.") (setq p2 (getpoint p1 "\nPolylines can't be done that way. 2nd point: "))) ) ) ) (if (not p2) (setq p2 (getpoint p1 "\nSecond point: ")) ) (setq p3 (getpoint p2 "\n Pick point for iso direction. Use Ctrl + E for Isoplane: ")) (command "_dim1" "_align" P1 P2 P3 "") (setq ang (rtd (angle p2 p3))) (if (and (<= ang 60.00)(> ang 0.00))(setq isoang 30.00)) (if (and (<= ang 120.00)(> ang 60.00))(setq isoang 90.00)) (if (and (<= ang 180.00)(> ang 120.00))(setq isoang 150.00)) (if (and (<= ang 240.00)(> ang 180.00))(setq isoang 210.00)) (if (and (<= ang 300.00)(> ang 240.00))(setq isoang 270.00)) (if (and (<= ang 360.00)(> ang 300.00))(setq isoang 330.00)) (setq cmde (getvar "cmdecho")) (setvar "cmdecho" 1) (command "_dimedit") (setvar "cmdecho" cmde) (setvar "snapstyl" snpstl) (setvar "dimatfit" df) (setvar "dimtmove" dm) (setvar "dimupt" du) (setvar "orthomode" ortho) (setvar "lunits" lu) (princ) ) ;end defun (prompt "Type ISODIM to execute. ")(terpri) (princ) ------------------------------------------------------------------------------ hier nach (command "_dimedit") diese code zeigt mir eine kleine tablelle mit Schräg da unten weil es activiert dimedit funktion. jetzt wenn ich schräg klicke dann brauche ich fenster mit diese zwei tasten.. und dann hip hip hurrah bemaßung war in entweder 30 oder 330° angeordnet. Bitte hilfe.. Danke 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: 08. Nov. 2011 13:05 <-- editieren / zitieren --> Unities abgeben: Nur für singoi
Da Du dich warscheinlich nicht in DCL einarbeiten willst, würde ich Dir empfehlen, den Winkel einfach vorher abzufragen mit (getangle), oder während des Befehls an entsprechnder Stelle ein PAUSE einfügen. Grüsse, Henning ------------------ Henning Jesse VoxelManufaktur Computer-Dienstleistungen für Architekten und Ingenieure http://www.voxelman.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
singoi Mitglied
Beiträge: 51 Registriert: 27.02.2007
|
erstellt am: 09. Nov. 2011 08:55 <-- editieren / zitieren --> Unities abgeben:
Hi, Wie können wir diese DCL file in AutoCAD laden.. ich glaube es ist nicht einfach wie LISP datei.. Extras - Anwendung Laden - DCL so geht nicht oder.. müssen wir hier noch eine LISP datei Schreiben wo diese DCL in diese LISP activiert ist? Gruß - Singoi 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: 09. Nov. 2011 09:12 <-- editieren / zitieren --> Unities abgeben: Nur für singoi
Hallo Singoi, hast Du den Link von Henning komplett durchgearbeitet? Machs Dir nicht komplizierter, als es sein muss. Mach einen Abfrage nach 30°/330°, prüfe das Ergebniss und mach erst weiter, wenn eine gültige Eingabe da ist. Hierzu sei auf die Funktionen get* (z. b. getint, getstring, ...) in Verbindung mit initget verwiesen. HTH Gruß Thomas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
singoi Mitglied
Beiträge: 51 Registriert: 27.02.2007
|
erstellt am: 20. Feb. 2014 16:47 <-- editieren / zitieren --> Unities abgeben:
ACHTUNG! Sie antworten auf einen Beitrag der älter als 1 Jahr ist! Hallo Freunde,
diese Beitrag ist schon alter als 1 Jahr. aber ich brauche hilfe weiter.. Wie kann ich hier bei dem letzten LISP Program diese Abfrage machen. was ist denn die Code.. Bitte...Hilfe Gruß Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |