Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Lisp Kontextmenü

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Lisp Kontextmenü (663 mal gelesen)
dan_rather
Mitglied
Techniker HLK


Sehen Sie sich das Profil von dan_rather an!   Senden Sie eine Private Message an dan_rather  Schreiben Sie einen Gästebucheintrag für dan_rather

Beiträge: 97
Registriert: 09.12.2003

erstellt am: 02. Mai. 2005 09:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo zusammen,
ich habe folgenden Code verbrochen der mir mit der Auswahl
"[A]bstand:" , ermöglichen soll einen Abstand über das Kontextmenü einzugeben. Leider bricht Lisp nach der Eingabe des Abstands ab.
Was muss ich ändern damit Lisp nach eingabe des Abstands mit dem Rest weitermacht?

(vl-load-com)
(setq osmode_save(getvar "OSMODE"))
(setvar "OSMODE" 15743)
(setq abst 100)
(initget "A")
  (setq antw (getkword "\nPunkt wählen oder [A]bstand: "))
    (if antw (progn(setq abst (progn(getdist "\nAbstand wählen: ")))))
(princ abst)
        (if antw(null)(setq t_2  (car (entsel))))
    (setq schn (progn(getpoint"\nPunkt wählen")))

(setvar "OSMODE" 0)

(command "_break" T_2  (vlax-curve-getPointAtDist
          (vlax-ename->vla-object t_2)
          (-
            (vlax-curve-getDistAtPoint
              (vlax-ename->vla-object t_2)
              schn
              )
            abst
            )
          ) (vlax-curve-getPointAtDist
        (vlax-ename->vla-object t_2)
        (+ abst
            (vlax-curve-getDistAtPoint
              (vlax-ename->vla-object t_2)
              schn
              )
            )
        ))
(setvar "OSMODE" osmode_save)
(setq osmode_save nil t2 nil schn nil)
(princ)


Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

cadffm
Moderator
良い精神




Sehen Sie sich das Profil von cadffm an!   Senden Sie eine Private Message an cadffm  Schreiben Sie einen Gästebucheintrag für cadffm

Beiträge: 21533
Registriert: 03.06.2002

Alles

erstellt am: 02. Mai. 2005 10:26    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für dan_rather 10 Unities + Antwort hilfreich

Über den allgemeinen "Aufbau" sage ich nichts, aber falls du den Stolperstein
mit "zu wenig Argumente" meintest:

null erwartet ein Argument,
du hast aber diese Zeile gebastelt:

(if antw(null)(setq t_2  (car (entsel))))

hier ist das progn überflüssig:
(if antw (progn(setq abst (progn(getdist "\nAbstand wählen: ")))))

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

dan_rather
Mitglied
Techniker HLK


Sehen Sie sich das Profil von dan_rather an!   Senden Sie eine Private Message an dan_rather  Schreiben Sie einen Gästebucheintrag für dan_rather

Beiträge: 97
Registriert: 09.12.2003

erstellt am: 02. Mai. 2005 10:40    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke cadffm,
aber Null bekomme ich zurück wenn ich "enter" drücke und dann läuft das Prog bis zum Ende.(so soll es auch sein :-) )
Wenn ich jedoch "A" wähle kann ich noch den Abstand eingeben aber das Prog läuft dann nicht mehr weiter.
Anm.: Das Prog soll eine Linie an einem Punkt mit dem Standard Abstand 100 nach links bzw rechts vom angegebnen Punkt brechen.
Wie schreibe ich also:"Wenn der Abstand eingegebn ist mache mit dem Eingegebenen Abstand weiter?"

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADmium
Moderator
Maschinenbaukonstrukteur




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 02. Mai. 2005 10:53    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für dan_rather 10 Unities + Antwort hilfreich

hab's mal "bearbeitet"

(defun c:Mybreak (/ osmode_save t_2 vla-t_2 abst schn)
  (vl-load-com)
  (setq osmode_save(getvar "OSMODE"))
  (setvar "OSMODE" 15743)


(if(and (setq t_2 (car(entsel "\nLinie wählen :")))
        (setq vla-t_2(vlax-ename->vla-object t_2))
        (or(setq abst(getdist "\nAbstand wählen <100>: "))
          (setq abst 100)
        ) 
        (setq schn (getpoint"\nPunkt wählen"))
  )
  (progn   
    (setvar "OSMODE" 0)

    (command "_break"
            T_2
            (vlax-curve-getPointAtDist
              vla-t_2
                (- (vlax-curve-getDistAtPoint
                    vla-t_2
                    schn
                  )
                  abst
                )
            )
            (vlax-curve-getPointAtDist
              vla-t_2
              (+ abst
                (vlax-curve-getDistAtPoint
                  vla-t_2
                  schn
                )
              )
            )
    )
    (setvar "OSMODE" osmode_save)
  )

(princ)   
)
------------------
  - Thomas -
"Bei 99% aller Probleme ist die umfassende Beschreibung des Problems bereits mehr als die Hälfte der Lösung desselben."

[Diese Nachricht wurde von CADmium am 02. Mai. 2005 editiert.]

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Brischke
Moderator
CAD on demand GmbH




Sehen Sie sich das Profil von Brischke an!   Senden Sie eine Private Message an Brischke  Schreiben Sie einen Gästebucheintrag für Brischke

Beiträge: 4171
Registriert: 17.05.2001

AutoCAD 20XX, defun-tools (d-tools.eu)

erstellt am: 02. Mai. 2005 11:00    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für dan_rather 10 Unities + Antwort hilfreich

Hallo dan_rather,

du hast da folgendes im Code (null)
Da ist die Syntax falsch: (null item) wäre die richtige Syntax.

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

dan_rather
Mitglied
Techniker HLK


Sehen Sie sich das Profil von dan_rather an!   Senden Sie eine Private Message an dan_rather  Schreiben Sie einen Gästebucheintrag für dan_rather

Beiträge: 97
Registriert: 09.12.2003

erstellt am: 02. Mai. 2005 11:09    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke Holger,

mit (Null Item) läufts!!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

dan_rather
Mitglied
Techniker HLK


Sehen Sie sich das Profil von dan_rather an!   Senden Sie eine Private Message an dan_rather  Schreiben Sie einen Gästebucheintrag für dan_rather

Beiträge: 97
Registriert: 09.12.2003

erstellt am: 02. Mai. 2005 14:51    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Tja, Nochmal Hallo.
Also das prog läuft... aaaaber
wie bekomme ich das voreingestellte Maß in die Zeile?

(setq antw (getkword "\nEnter oder [A]bstand<%i>: "))

bei <%i> hätte ich gerne das vorher eingestellte/gewählte Maß stehen.

Weiß jemand wie das geht mit dem Platzhalter?

Prog:
(vl-load-com)
(setq osmode_save(getvar "OSMODE"))
(setvar "OSMODE" 15743)
(princ "\nAktueller Abstand: ")
(princ  abst)
(initget "A")
(setq antw (getkword "\nEnter oder [A]bstand: "))
      (if antw (setq abst (progn(getdist "\nAbstand wählen: "))))
        (setq t_2  (car (entsel)))
              (setq schn (progn(getpoint"\nPunkt wählen")))

(setvar "OSMODE" 0)
(if abst(null item)(setq abst 100))
(command "_break" T_2  (vlax-curve-getPointAtDist
          (vlax-ename->vla-object t_2)
          (-
            (vlax-curve-getDistAtPoint
              (vlax-ename->vla-object t_2) schn)abst))
    (vlax-curve-getPointAtDist
        (vlax-ename->vla-object t_2)
        (+ abst
            (vlax-curve-getDistAtPoint
              (vlax-ename->vla-object t_2)schn))))
(setvar "OSMODE" osmode_save)
(setq osmode_save nil t2 nil schn nil)
(princ)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

CADmium
Moderator
Maschinenbaukonstrukteur




Sehen Sie sich das Profil von CADmium an!   Senden Sie eine Private Message an CADmium  Schreiben Sie einen Gästebucheintrag für CADmium

Beiträge: 13508
Registriert: 30.11.2003

.

erstellt am: 02. Mai. 2005 14:54    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für dan_rather 10 Unities + Antwort hilfreich

(defun c:Mybreak (/ osmode_save t_2 vla-t_2 abst schn)
  (vl-load-com)
  (setq osmode_save(getvar "OSMODE"))
  (setvar "OSMODE" 15743)
  (setq Voreinstellung 100)

(if(and (setq t_2 (car(entsel "\nLinie wählen :")))
        (setq vla-t_2(vlax-ename->vla-object t_2))
        (or(setq abst(getdist (strcat"\nAbstand wählen <" (rtos Voreinstellung 2 2)">: ")))
          (setq abst Voreinstellung)
        ) 
        (setq schn (getpoint"\nPunkt wählen"))
  )
  (progn   
    (setvar "OSMODE" 0)

    (command "_break"
            T_2
            (vlax-curve-getPointAtDist
              vla-t_2
                (- (vlax-curve-getDistAtPoint
                    vla-t_2
                    schn
                  )
                  abst
                )
            )
            (vlax-curve-getPointAtDist
              vla-t_2
              (+ abst
                (vlax-curve-getDistAtPoint
                  vla-t_2
                  schn
                )
              )
            )
    )
    (setvar "OSMODE" osmode_save)
  )

(princ)   
)

------------------
- 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

dan_rather
Mitglied
Techniker HLK


Sehen Sie sich das Profil von dan_rather an!   Senden Sie eine Private Message an dan_rather  Schreiben Sie einen Gästebucheintrag für dan_rather

Beiträge: 97
Registriert: 09.12.2003

erstellt am: 02. Mai. 2005 15:08    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke Thomas!!

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz