Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  getpoint mit Fangfuunktion

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:  getpoint mit Fangfuunktion (3120 mal gelesen)
Barbara33
Mitglied



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

Beiträge: 91
Registriert: 18.04.2007

Windows 7, AutoCAD 2000 (englisch)

erstellt am: 16. Nov. 2011 20:28    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

habe ein tolles Programm geschrieben, das aber etwas perfektioniert werden müßte. Es findet den Punkt, der genau zwischen zwei angegebenen Punkten liegt.

Code:
; Halbierungspunkt finden
(defun c:hh () (mapcar '(lambda (r s / ) (/ (+ r s) 2.0)) 
(getpoint "Zwei Punkte anklicken")
(getpoint " - Zweiten Punkt anklicken")))

Um ihn transparent, zum Beispiel bei der Abfrage des Mittelpunktes beim Zeichnen eines Kreises, aufzurufen, muss ich 'hh eingeben, dann klicke ich zwei Punkte, und schon ist der Mittelpunkt definiert.

Zwei Probleme:

1.
Leider versagt die Funktion, wenn ich einen dieser Punkte mit einer Fangfunktion (Endpunkt, Schnittpunkt) festlege. Kann man da was tun?

2.
Der Aufruf dieser Funktion hh wäre ohne dem Apostroph viel benutzerfreundlicher. Aber dann kann man sie nicht transparent aufrufen. Oder gibt es da eine Lösung? Diese Funktion soll über die Tastatur aufgerufen werden. 

LG,
Barbara

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: 16. Nov. 2011 20: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 Barbara33 10 Unities + Antwort hilfreich

rudimentär ist zu
1) (setq pt1 (getpoint))
   (setq pt2 (osnap pt1 "_end,_int"))
eine Lösung

die Modes kann man auch in Abhängigkeit von OSMODE setzen usw.  ...mit grread o.ä. kann man auch das Fangsymbol imitieren ....

zu 2. ) Ist so

..und ich staune, was bei dir schon ein Programm ist     

und ach ja .... auch wenn er im Menü ect. nicht auftaucht, es gibt auch einen integrierten Fang für Mittelpunkt zwischen zwei punkten:   _m2p

Siehe auch hier
------------------
           - 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

Barbara33
Mitglied



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

Beiträge: 91
Registriert: 18.04.2007

Windows 7, AutoCAD 2000 (englisch)

erstellt am: 17. Nov. 2011 00:35    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, aber Deine "rudimentäre" Angabe bringt mich nicht zur Lösung. Es soll ja nicht die voreingestellte Osnap-Auswahl oder bestimmte Schnäppe, wie Du hier vorgeschlagen, zur Anwendung kommen, sondern diese Fangoption, die der Anwender zum Zeitpunkt der Punkteingabe anwendet. Oder kann man irgendwie die aktuell angewendete Fangoption bei der Punkteingabe lesen?

Das grread kenne ich -noch- nicht, weil ich nicht so viel Erfahrung habe. Was ich jetzt so mal schnell recherchiert habe, sehe ich keinen Hoffnungsschimmer im Zusammenhang mit meinem Problem.

Der integrierte Fang _m2p scheint in meiner Version (AutoCAD 2000) nicht vorhanden zu sein.

Eine solche Funktion, wie ich sie schreiben will, muss doch schon geben. Nur gefunden habe ich nichts.

LG,
Barbara

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

Geos
Mitglied
Vermessungstechniker i.R.


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

Beiträge: 1017
Registriert: 21.09.2001

ACAD Map 2010, Win 7 Pro
eigene Lisp's<P>HW: Core i7 860, 2.8 GHz
3.3 GB, NVIDIA GeForce GTS 250

erstellt am: 17. Nov. 2011 07:14    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 Barbara33 10 Unities + Antwort hilfreich

Getpoint berücksichtigt doch den aktuell eingestellten Fangmodus!?  - SysVar OSMODE

------------------
Schöne Grüße
Ernst

www.geopaint.at

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: 17. Nov. 2011 08:19    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 Barbara33 10 Unities + Antwort hilfreich

Hallo Barbara,

du kannst bei (Getpoint ..) die ganz normalen Objektfänge nutzen.
Ohne die Funktion mehrfach zu programmieren, kannst du auf sehr einfachem Weg, wie der folgende Code zeigt, die Funktion als transparenten und als normalen Befehl definieren.

Code:

; Halbierungspunkt finden
;;; Befehlsaufruf
(defun c:hh ()
  (_hh)
  )
;;; transparenter Befehlsaufruf [EDIT: muss nict extra definiert werden!! Befehl ist mit obiger Definiti0on transparent aufrufbar]
(defun c:'hh ()
  (_hh)
  )
;;; Arbeitsfunktion
(defun _hh (/ p1)
  (mapcar '(lambda (r s / )
     (/ (+ r s) 2.0)
     )
  (progn (initget 1)(setq p1(getpoint "\nZwei Punkte für Mittelpunktbestimmung anklicken.\nErster Punkt: ")))
  (progn (initget 1)(getpoint p1 "\nZweiten Punkt: "))
  )
  )

Bei Fragen ...

Grüße!
Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.

   
defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!

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

Barbara33
Mitglied



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

Beiträge: 91
Registriert: 18.04.2007

Windows 7, AutoCAD 2000 (englisch)

erstellt am: 18. Nov. 2011 02:34    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 für Eure Antworten.

Zum Punkt Objektfang:
Ja, ich kann es HEUTE ganz normal nutzen, aber GESTERN ging es nicht. Hat mir was einen seltsamen Streich gespielt und einige Stunden gekostet. Da jetzt alles wie erwartet, wie gewünscht und wie beschrieben funktioniert, ist die Sache erledigt. (Vielleicht bis MORGEN). :-)

Zum Punkt Transparenter Aufruf:
Sicher, man kann die Funktion schon transparent aufrufen. Das habe ich ja nie bestritten, aber das blöde Apostroph muss ich immer schreiben. Aber das muss wohl so sein. Ich kann es mir ja auch auf einen Button legen.

Doch eine Frage zum Skript von Holger möchte ich noch nachheizen:
Hat es irgendeine Bedeutung, wenn die Funktion c:'hh, c:_hh oder c:hh heisst? Oder ist der Unterstrich oder Apostroph einfach teil des Namens und sonst nichts?

Danke.
LG, Barbara

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 18. Nov. 2011 07:16    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 Barbara33 10 Unities + Antwort hilfreich

Hallo Barbara,
das kann man doch ganz einfach testen:
Code:

(defun c:'test ( / )
  (alert "TestTransparent"))

(defun c:test ( / )
  (alert "Test"))

(defun c:_test ( / )
  (alert "_Test"))


Es ist egal was Du aufruft, TEST, _TEST oder 'TEST, es wird immer die 2. Funktion angesprochen (getestet unter ACAD 2012)

------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

Stammtisch in Wolfsburg

http://ww3.cad.de/foren/ubb/Forum491/HTML/000179.shtml

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: 18. Nov. 2011 07: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 Barbara33 10 Unities + Antwort hilfreich

 
Zitat:
Original erstellt von Barbara33:
... Hat es irgendeine Bedeutung, wenn die Funktion c:'hh, c:_hh oder c:hh heisst? Oder ist der Unterstrich oder Apostroph einfach teil des Namens und sonst nichts? ...

Richtig, es ist einfach Teil des Namens.
Allerdings wertet Acad die Namen aus und entscheidet darüber, wie mit dem Befehl verfahren wird.
Daher gilt folgendes:
ein C: im Namen bewirkt, dass der Befehl in der Befehlszeile aufgerufen werden kann, ohne die Lisp-Klammer-Syntax verwenden zu müssen.

ein C:' [Edit: muss nicht extra angegeben werden, da jeder mit (defun C: ..) Befehl transparent aufgerufen werden kann

mehr Festlegungen der Funktionsnamenkonventionen sind mir nicht bekannt. Also wird alles andere als Lisp-Funktion behandelt und muss auch in der Befehlszeile mit Klammern aufgerufen werden.

noch ein Hinweis: Funktionen, deren Name mit C: beginnt, dürfen danach keine Funktionsparameter besitzen, da man diese ohnehin nicht 'füttern' kann, denn der Befehl wird in der Befehlszeile ohne Klammern aufgerufen, und ein Leerzeichen wird als [Eingabe] interpretiert.
Beispiel:

Code:

;; ist Unzulässig
(defun C:TEST (param / lokalVar)(...))
;; ist zulässig
(defun TEST (param / lokalVar)(...))

Bei Fragen ...

Grüße Holger


------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.

   
defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!

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

joern bosse
Ehrenmitglied
Dipl.-Ing. Vermessung


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

Beiträge: 1734
Registriert: 11.10.2004

Window 10
ACAD 2021
CIVIL 2021
BricsCAD V14-V22
Intel(R) Core(TM)i5-8250U CPU @ 1.60GHz 1.80 GHz
16.0GB RAM
NVIDIA GeForce GTX 1050<P>

erstellt am: 18. Nov. 2011 08:29    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 Barbara33 10 Unities + Antwort hilfreich

Moin Holger,
Zitat:
ein C:' im Namen bewirkt zusätzlich, dass Acad die Funktion auch dann ausführt, wenn bereits ein anderer Befehl aktiv ist.

Genau das glaube ich nicht oder ich mache irgendwas falsch. Nochmal meine Testfunktionen, alle 3 werden geladen:

Code:

(defun c:'test ( / )
  (princ "\nTransparenter Aufruf."))

(defun c:test ( / )
  (princ "\nNormaler Aufruf."))

(defun c:_test ( / )
  (princ "\nUnterstrich Aufruf."))



Wenn ich jetzt z.B. im Linie-Befehl bin, und 'test aufrufe, dann wird mir die Princ-Anweisung "Normaler Aufruf" präsentiert, also wird die Funktion c:test angesprochen. Ich glaube, das Apostrop hat in der Definition des Funktionsnamens keine Auswirkung.

Im Gegenteil, wenn ich nur die erste Funktion lade, dann kann ich diese gar nicht starten

------------------
viele Grüße

Jörn
http://www.bosse-engineering.com

Stammtisch in Wolfsburg

http://ww3.cad.de/foren/ubb/Forum491/HTML/000179.shtml

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

Barbara33
Mitglied



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

Beiträge: 91
Registriert: 18.04.2007

Windows 7, AutoCAD 2000 (englisch)

erstellt am: 18. Nov. 2011 11:17    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 Jörn und Holger,

Code:
(defun c:'test-t ( / )  (princ "\nTransparenter Aufruf."))
(defun c:test-n ( / )  (princ "\nNormaler Aufruf."))
(defun c:_test-u ( / )  (princ "\nUnterstrich Aufruf."))

Dies war Jörns Beispiel, diesmal aber mit unterschiedlichen Namen. Dabei stelle ich fest:
Die Funktion      test-n      kann ausgeführt werden      'test-n      auch transparent. Aber auch mit Unterstrich:      _test-n      was auch immer der bewirkt. Aber es geht.
Die Funktionen      'test-t      _test-u      test-t      und      test-u      gibt es für AutoCAD einfach nicht, auch nicht in transparenter Anwendung.

Holger, deswegen verstehe ich Deine folgenden Sätze nicht:

Zitat:
Ohne die Funktion mehrfach zu programmieren, kannst du auf sehr einfachem Weg, wie der folgende Code zeigt, die Funktion als transparenten und als normalen Befehl definieren.

und
Zitat:
ein C:' im Namen bewirkt zusätzlich, dass Acad die Funktion auch dann ausführt, wenn bereits ein anderer Befehl aktiv ist.

Kannst Du bitte genauer erklären, was Du damit meinst?

Gruß,
Barbara

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

Meldin
Mitglied



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

Beiträge: 381
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 18. Nov. 2011 11: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 Barbara33 10 Unities + Antwort hilfreich

Hallo,
ich kenne es auch nur so .
Ich definiere die Funktion.
Zitat:
(defun c:test (/)
  (princ "\nNormaler Aufruf.")
)

Dann kann ich den Befehl transparent aufrufen in dem ich ein Hochkomma voranstelle 'test. Ohne hockomma funktionen zu definieren.

------------------
Gruß Wolfgang

Alias: Rabbit007 und Wolli1 die aus unerklärlichen Gründen aus dem System hier gelöscht wurden. 

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: 18. Nov. 2011 11:50    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 Barbara33 10 Unities + Antwort hilfreich

... stimmt.
Ich hatte es in erinnerung, dass ein transparenter Befehl definiert werden muss, wie ich's oben geschrieben habe. Das ist aber nicht notwendig!
Daher korrigiere ich die Aussage:
ein mit (defun C:... bedinierte Funktion kann dann auch transparent aufgerufen werden.

Ich werde den obigen Beitrag editieren.

Grüße Holger

------------------
Holger Brischke
CAD on demand GmbH
Individuelle Lösungen von Heute auf Morgen.


defun-tools Das Download-Portal für AutoCAD-Zusatzprogramme!

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

Meldin
Mitglied



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

Beiträge: 381
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 18. Nov. 2011 12:17    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 Barbara33 10 Unities + Antwort hilfreich

Also eine frage bleibt für mich hier irgendwie offen.
Zitat:
Zum Punkt Transparenter Aufruf:
Sicher, man kann die Funktion schon transparent aufrufen. Das habe ich ja nie bestritten, aber das blöde Apostroph muss ich immer schreiben. Aber das muss wohl so sein. Ich kann es mir ja auch auf einen Button legen.
Bei was benutzt du denn deine Funktion c:hh ich könnte mir vorstellen das man da etwas kombinieren kann oder eine abfrage einbauen kann so das du dir die Eingabe mit dem Hochkomma komplett sparen kannst. 

------------------
Gruß Wolfgang

Alias: Rabbit007 und Wolli1 die aus unerklärlichen Gründen aus dem System hier gelöscht wurden. 

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

Meldin
Mitglied



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

Beiträge: 381
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 18. Nov. 2011 12:48    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 Barbara33 10 Unities + Antwort hilfreich

Nachtrag wenn es nur für Keise sein soll könnte das doch schon reichen
Code:
(defun c:k1 (/ pkt1 pkt2)
  (setq pkt2 (getpoint (setq pkt1 (getpoint "Erstenpunkt wählen"))
       "Zweiten Punkt wählen"
     )
  )
  (command "Kreis"
   (mapcar '(lambda (r s /) (/ (+ r s) 2.0))
   pkt2
   pkt1
   ) pkt2
  )
)

------------------
Gruß Wolfgang 

Alias: Rabbit007 und Wolli1 die aus unerklärlichen Gründen aus dem System hier gelöscht wurden.  

[Diese Nachricht wurde von Meldin am 18. Nov. 2011 editiert.]

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: 18. Nov. 2011 13: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 Nur für Barbara33 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Meldin:
Nachtrag wenn es nur für Keise sein soll könnte das doch schon reichen
Code:
(defun c:k1 (/ pkt1 pkt2)
  (setq pkt2 (getpoint (setq pkt1 (getpoint "Erstenpunkt wählen"))
       "Zweiten Punkt wählen"
     )
  )
  (command "Kreis"
   (mapcar '(lambda (r s /) (/ (+ r s) 2.0))
   pkt2
   pkt1
   ) pkt2
  )
)


IMHO ganz gefährlich bei eingeschaltetem Fang und falsche gesetztem OSNAPCOORD !!!!

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

Meldin
Mitglied



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

Beiträge: 381
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 18. Nov. 2011 13:33    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 Barbara33 10 Unities + Antwort hilfreich

Galt auch nur als Hinweis dass es eine Möglichkeit gibt ohne zusätzlichen Aufruf einer transparenten Funkion.

------------------
Gruß Wolfgang

Alias: Rabbit007 und Wolli1 die aus unerklärlichen Gründen aus dem System hier gelöscht wurden. 

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: 18. Nov. 2011 13:45    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 Barbara33 10 Unities + Antwort hilfreich

ja , mir ist das schon klar .. ich wollte nur nochmal drauf hinweisen, ... nicht das jemand die Funktion so nimmt und sich wundert, warum der Kreis nicht evtl in der wahren Mitte gezeichnet wird .... gerade Anfänger verzweifeln dann. Ist ja auch nicht gerade naheliegend.

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

Meldin
Mitglied



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

Beiträge: 381
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 18. Nov. 2011 13:59    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 Barbara33 10 Unities + Antwort hilfreich

Ja so ist es aber mal schauen wofür Barbara das ganze benötigt dann könnte man gezielter ansetzen.

------------------
Gruß Wolfgang

Alias: Rabbit007 und Wolli1 die aus unerklärlichen Gründen aus dem System hier gelöscht wurden. 

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

Barbara33
Mitglied



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

Beiträge: 91
Registriert: 18.04.2007

Windows 7, AutoCAD 2000 (englisch)

erstellt am: 18. Nov. 2011 16:45    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

Wofür diese Funktion? Wo diese Funktion einsetzen?
Ich brauche sie fast so oft wie Endpunkt oder Schnittpunkt.
Wenn ich ein Klo mittig zwischen zwei Wände setze, wie es in unseren Breiten üblich ist, dann ist der Einfügepunkt genau zwischen den Endpunkten zweier paralleler Linien (eben die Wände). Oder wenn ich eine Linie zeichnen muss, oder den Anfangspunkt eines Kreisbogens, oder den Mittelpunkt eines Kreise, oder oder oder.
Die Einsatzmöglichkeiten sind so vielfältig, das kann man auf Programmebene gar nicht mit was anderem kombinieren. Mich wundert, dass ich diese Funktion als lsp nirgends gefunden habe.
Also so, wie es jetzt ist, als zusätzliche Fangfunktion, ist es schon OK.

Und das Apostroph muss man eben schreiben, wenn man die Funktion händisch eintippt. Mr. Cadmium hat mit seiner ersten Antwort ganz oben

Zitat:
zu 2. ) Ist so

schon richtig geantwortet. Auch folgender Hinweis
Zitat:
ja , mir ist das schon klar .. ich wollte nur nochmal drauf hinweisen, ... nicht das jemand die Funktion so nimmt und sich wundert, warum der Kreis nicht evtl in der wahren Mitte gezeichnet wird .... gerade Anfänger verzweifeln dann. Ist ja auch nicht gerade naheliegend.

trifft voll ins Schwarze. Für mich leider einige Stunden zu spät. Bei einem anderen Programm war ich nämlich verzweifelt auf Fehlersuche. Da wurde eine Linie, die mit (command "_LINE" ...) erstellt wurde, falsch gezeichnet. Nur weil der Osnap an war. Hat mir auch einige Stunden Fehlersuche abgerungen. Habe dabei aber einiges gelernt. Hätte ich die Linie gleich synthetisch (mit ssadd) erzeugt, wäre das Ganze einfacher gewesen. Wieder was dazu gelernt.

Trotzdem macht AutoLISP großen Spass.

Danke.
LG, Barbara

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: 18. Nov. 2011 20: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 Nur für Barbara33 10 Unities + Antwort hilfreich

 
Zitat:
Mich wundert, dass ich diese Funktion als lsp nirgends gefunden habe.

Falsch gesucht ?  

z.B.  http://ww3.cad.de/foren/ubb/Forum145/HTML/002395.shtml

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

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: 18. Nov. 2011 21:04    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 Barbara33 10 Unities + Antwort hilfreich

Nicht OSNAP/osmode ist der Fehler , sondern deine Einstellung der Systemvariable OSNAPCOORD (die oben bereits angesprochen wurde).

Zudem wäre die BoardLösung ein Makro zu verwenden der den Geometrierechner von Acad nutzt (CAL),
mit dessen Hilfe konnte man auch ohne Lisp das "Mitte 2 Punkte" nutzen (Beispiele im Forum).

 

------------------
CAD.de System-Angaben  -  CAD on demand  -  User:FAQ(Acad)

[Diese Nachricht wurde von cadffm am 18. Nov. 2011 editiert.]

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

Barbara33
Mitglied



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

Beiträge: 91
Registriert: 18.04.2007

Windows 7, AutoCAD 2000 (englisch)

erstellt am: 22. Nov. 2011 00:11    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

Jetzt geht es doch nicht. Bin schon am Verzweifeln. Es liegt nicht an OSNAPCOORD.

Nochmals gaaanz ausführlich:
Ich möchte eine Fangfunktion für Punkt zwischen zwei Punkten machen.
In AutCAD 2000 gibt es das nicht. Dazu habe ich eine Routine namens "##" geschrieben, die bei Aufforderung zur Eingabe eines Punktes beim Zeichnen einer Linie transparent aufgerufen wird. Das Transparentapostroph liegt auf der selben Taste wie #, daher zur bequemeren Eingabe der ungewöhnliche Name.

Code:
(defun c:## (/ p1)
  (mapcar '(lambda (r s / )(/ (+ r s) 2.0))
          (progn (initget 1)(setq p1(getpoint "Zwei Punkte anklicken.\nErster Punkt: ")))
          (progn (initget 1)(getpoint p1 " - Zweiten Punkt: "))
) )

Gegeben sei nun eine Linie, die ich vollständig sehe. Wenn ich nun zB eine neue Linie (oder Kreis) zeichnen will, rufe ich bei der Aufforderung des ersten Punktes der Linie (beziehungsweise Kreismittelpunktes) diese oben genannte Funktion mit '## auf. Zwei Punkte werden abgefragt, in deren Mitte der gewünschte Punkt liegt. Dies funktioniert NICHT, wenn ich für die beiden abgefragten Punkte die Endpunkte der o.g. bestehenden Linie wähle und für OSNAP Endpunkt eingeschaltet ist.
Und das bei jeder beliebigen Einstellung von OSNAPCOORD!

Wie muss diese Funktion "##" aussehen, dass sie auch für diesen Fall funktioniert?

LG,
Barbara

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

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



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

Beiträge: 9732
Registriert: 01.12.2003

One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11

erstellt am: 22. Nov. 2011 00:43    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 Barbara33 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Barbara33:
...
Ich möchte eine Fangfunktion für Punkt zwischen zwei Punkten machen.
In AutCAD 2000 gibt es das nicht. ...


Wenn ich mich richtig erinnere, gibt es den Geometriecalculator auch schon in AutoCAD 2000 (geomcal.arx).
Auch dort gabs schon eine transparente Funktion zum Ermitteln der Mitte zweier Punkte:


Dann wäre ein Linienanfang zwischen 2 Punkten etwa so zu erstellen:

Befehl:LINIE Ersten Punkt angeben: 'cal
>>>> Ausdruck: mee
>>>> Wählen Sie einen Endpunkt für MEE:
>>>> Wählen Sie einen weiteren Endpunkt für MEE:

------------------
Mit freundlichem Gruß

Udo Hübner
www.CAD-Huebner.de

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

Barbara33
Mitglied



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

Beiträge: 91
Registriert: 18.04.2007

Windows 7, AutoCAD 2000 (englisch)

erstellt am: 22. Nov. 2011 01:12    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

Diese von Dir beschriebene Funktion versagt doch bei beschriebenen OSNAP-Einstellungen genauso. Außerdem geht sie nur für einen Punkt zwischen Endpunkten.
Meine Funktion geht für alle Punkte, außer für solche, deren Ergebnis von OSNAP verändert wird. 

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: 22. Nov. 2011 07:56    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 Barbara33 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Barbara33:
Jetzt geht es doch nicht. Bin schon am Verzweifeln. Es liegt nicht an OSNAPCOORD.

Nochmals gaaanz ausführlich:
Ich möchte eine Fangfunktion für Punkt zwischen zwei Punkten machen.
In AutCAD 2000 gibt es das nicht. Dazu habe ich eine Routine namens "[b]##
" geschrieben, die bei Aufforderung zur Eingabe eines Punktes beim Zeichnen einer Linie transparent aufgerufen wird. Das Transparentapostroph liegt auf der selben Taste wie #, daher zur bequemeren Eingabe der ungewöhnliche Name.

Code:
(defun c:## (/ p1)
  (mapcar '(lambda (r s / )(/ (+ r s) 2.0))
           (progn (initget 1)(setq p1(getpoint "Zwei Punkte anklicken.\nErster Punkt: ")))
           (progn (initget 1)(getpoint p1 " - Zweiten Punkt: "))
) )

Gegeben sei nun eine Linie, die ich vollständig sehe. Wenn ich nun zB eine neue Linie (oder Kreis) zeichnen will, rufe ich bei der Aufforderung des ersten Punktes der Linie (beziehungsweise Kreismittelpunktes) diese oben genannte Funktion mit '## auf. Zwei Punkte werden abgefragt, in deren Mitte der gewünschte Punkt liegt. Dies funktioniert NICHT, wenn ich für die beiden abgefragten Punkte die Endpunkte der o.g. bestehenden Linie wähle und für OSNAP Endpunkt eingeschaltet ist.
Und das bei jeder beliebigen Einstellung von OSNAPCOORD!

Wie muss diese Funktion "##" aussehen, dass sie auch für diesen Fall funktioniert?

LG,
Barbara[/B]


Was genau funktioniert denn nicht ? Sorry , kann ich momentan nicht nachvollziehen

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

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



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

Beiträge: 9732
Registriert: 01.12.2003

One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11

erstellt am: 22. Nov. 2011 08:27    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 Barbara33 10 Unities + Antwort hilfreich

Da der Objektfang auf den Rückgabewert der Funktion '## angewendet wird, und der Rückgabewert dadurch nochmals (unbrauchbar) verändert wird, muss man entweder von Aufruf von '## den Objektfang für den nächsten Punkt deaktivieren (dazu Ofang kei / _non vorausschicken - das kann auch auf einem Buttonmakro geschehen)

Code:
Befehl: _LINE Ersten Punkt angeben: _NON '##
Zwei Punkte anklicken.
Erster Punkt: - Zweiten Punkt:
Nächsten Punkt angeben oder [Zurück]:

Oder im Programm den Ofang vor der Rückgabe des berechneten Punktes dauerhaft deaktivieren

Code:
(if (< (getvar "osmode") 16384)(setvar "osmode" (+ (getvar "osmode") 16384)))

man muss ihn dann allerdings manuell (z.B. mit F3) wieder einschalten,

oder (Idee nach Hinweis von cadffm)
Punkt mit Command und vorgeschaltetem _non senden

Code:
(defun c:## (/ p1)
  (command "_NON" (mapcar '(lambda (r s / )(/ (+ r s) 2.0))
          (progn (initget 1)(setq p1(getpoint "Zwei Punkte anklicken.\nErster Punkt: ")))
          (progn (initget 1)(getpoint p1 " - Zweiten Punkt: "))
)))


------------------
Mit freundlichem Gruß

Udo Hübner
www.CAD-Huebner.de

[Diese Nachricht wurde von CAD-Huebner am 22. Nov. 2011 editiert.]

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

Barbara33
Mitglied



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

Beiträge: 91
Registriert: 18.04.2007

Windows 7, AutoCAD 2000 (englisch)

erstellt am: 22. Nov. 2011 14: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

Hallo

Antwort an CADmium, dem Moderator, was da genau nicht funktioniert:
Die neu gezeichnete Linie sollte genau zwischen den Endpunkten der bestehenden Linie beginnen. Und das tut sie bei mir nicht. Die Abweichung vom erwarteten Ergebnis ist das Problem. Da ich nicht weiß, was Du konkret nicht nachvollziehen kannst, frage ich zurück: Wie weit kannst Du mir folgen, bis zu welchem Punkt?

Antwort an Udo Hübner:
Dem Anwender, der Anwenderin, sollen seine gewohnten Fangeinstellungen bei der Bestimmung der beiden Punkte zur Verfügung stehen. Er soll sich keine Gedanken machen müssen, was gerade bei dieser Funktion zu berücksichtigen ist. Den Objektfang zu deaktivieren wäre da nicht gut. Auch nachher händisch wieder aktivieren will ich dem gestressten Anwender auch nicht antun. Vielleicht gibt es eine andere Lösung? Vielleicht den Objkektfang nur für die Punktrückgabe deaktivieren, wäre eine Idee.

Danke.
LG,
Barbara

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

CAD-Huebner
Ehrenmitglied V.I.P. h.c.
Verm.- Ing., ATC-Trainer



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

Beiträge: 9732
Registriert: 01.12.2003

One AutoCAD 2.5 - 2023, Civil 3D, Win10/win11

erstellt am: 22. Nov. 2011 14:20    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 Barbara33 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Barbara33:
... Vielleicht gibt es eine andere Lösung? Vielleicht den Objkektfang nur für die Punktrückgabe deaktivieren, wäre eine Idee.
...

Genau das macht doch dein (von mir überarbeitetes) Makro jetzt!

Code:
(defun c:## (/ p1)
  (command "_NON" (mapcar '(lambda (r s / )(/ (+ r s) 2.0))
          (progn (initget 1)(setq p1(getpoint "Zwei Punkte anklicken.\nErster Punkt: ")))
          (progn (initget 1)(getpoint p1 " - Zweiten Punkt: "))
)))


------------------
Mit freundlichem Gruß

Udo Hübner
www.CAD-Huebner.de

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: 22. Nov. 2011 14:23    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 Barbara33 10 Unities + Antwort hilfreich

Langsam wird es hier witzig, auch wenn es von niemandem so gewollt ist 

Eines Vorab: Das Hockomma umgeht man indem man sich den Programm/Makroaufruf auf die AutoCAD Oberfläche legt (Werkzeugkasten), ein Klick und fertig.

"Mitte 2 Punkte" ist so ziemlich das häufigste Programm was es gibt, das einzige Problem was es bei dir gibt sind die welche du nicht berücksichtigst,
um etwas zu berücksichtigen muß man die Dinge natürlich kennen.

OBJEKTFANG
OSNAPCOORD
WKS/BKS


Ich denke das dein Programm funktioniert wenn du mit (Command "_.Line" arbeiten würdest,
oder es würde funktionieren wenn du du den ermittelten Punkt auf WKS-Koordinaten umrechnen würdest.
Oder liege ich falsch und du berücksichtigst in welche Koordinatensystemen die jeweiligen Punkte
ermittelt und übermittelt werden ?

------------------
CAD.de System-Angaben  -  CAD on demand  -  User:FAQ(Acad)

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

Barbara33
Mitglied



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

Beiträge: 91
Registriert: 18.04.2007

Windows 7, AutoCAD 2000 (englisch)

erstellt am: 22. Nov. 2011 18:31    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

ja, sehr witzig. Aber:

Udo Hübner, Dein "_NON" ist die Lösung. Danke.

Habe ich es vorher übersehen, oder ist es das, was Du nachher noch eingefügt hast??? Ich glaube zweiteres, denn Dein _NON in der Befehlszeile

Ersten Punkt angeben: _NON '##

wäre ja überflüssig, wenn es schon im Code weiter unten steht. Das sollte wieder rückgeändert werden.

Dennoch, ein kleiner Schönheitsfehler ist noch da: AutoCAD schreibt nach Ablauf dieser Routine
"error: bad argument value: AutoCAD command:"
Wenn man das auch noch wegbekäme, wär es perfekt. Wenn nicht, macht's auch nix. Hauptsache es läuft.
Danke.

An cadffm:
Deinen letzten Beitrag habe ich überhaupt nicht verstanden. Wie auch immer das BKS liegt, es funktioniert. Auch die OSNAPCOORD-Einstellung ist egal.

LG, Barbara

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: 22. Nov. 2011 21:11    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 Barbara33 10 Unities + Antwort hilfreich

Dieses Mal lag ich einfach daneben. Hätte dein anderer Thread (Linie erzeugen ohne command) damit zutun
gehabt hätte dann wäre mein Hinweis  zu WKS/BKS gut gewesen - so nah liegt Top&Flop.

Udo konnte es ja retten.

------------------
CAD.de System-Angaben  -  CAD on demand  -  User:FAQ(Acad)

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

Meldin
Mitglied



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

Beiträge: 381
Registriert: 15.07.2011

ACA2020
Windows10

erstellt am: 23. Nov. 2011 10:11    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 Barbara33 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von Barbara33:
Dennoch, ein kleiner Schönheitsfehler ist noch da: AutoCAD schreibt nach Ablauf dieser Routine
"error: bad argument value: AutoCAD command:"
Wenn man das auch noch wegbekäme, wär es perfekt. Wenn nicht, macht's auch nix. Hauptsache es läuft.


Meines wissen darf eine Funktion die in einem AC Befehl transparent aufgerufen wird kein "command" enthalten.

------------------
Gruß Wolfgang

Alias: Rabbit007 und Wolli1 die aus unerklärlichen Gründen aus dem System hier gelöscht wurden. 

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: 23. Nov. 2011 10:32    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 Barbara33 10 Unities + Antwort hilfreich

das (command "_non" .. gehört da auch nicht rein sondern in die aufrufende funktion die was via command zeichnen soll ....

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

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: 23. Nov. 2011 10: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 Nur für Barbara33 10 Unities + Antwort hilfreich

1. wird der Linien-Befehl ganz normal über die Acadoberfläche oder per Aliasnamen aufgerufen
2. kann da auch gerne ein Command drin sein, das Command _non führt hier sogar zum Ziel.

Leider habe auch ich das eigentliche Problem hier zu spät begriffen (denn die Punktermittlung war nie das Problem).
So wie es Udo gepostet hat kann man es benutzen ! (am besten über die Acadoberfläche transparent mit einem Makro aufrufen)

------------------
CAD.de System-Angaben  -  CAD on demand  -  User:FAQ(Acad)

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

Barbara33
Mitglied



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

Beiträge: 91
Registriert: 18.04.2007

Windows 7, AutoCAD 2000 (englisch)

erstellt am: 23. Nov. 2011 14:34    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 Udo.

Wie ist das mit den Unities? Haben die wirklich eine ernsthafte Funktion hier? Wenn ja, gebe ich Dir 10.

Das Problem habe ich, meiner Meinung nach, anfangs ausreichend genau beschrieben. Erst bei einer weiteren ausführlichen Beschreibung später hat Udo dann helfen können.

Dennoch habe ich diese Funktion nirgends im Netz gefunden, zumindest nicht als allgemeine Fangfunktion, die man universell einsetzen kann.

Und was mich noch interessieren würde: Eine GUTE AutoLISP-Ankeitung im Internet bzw. Tutorial, mit einer Liste aller Befehle. (Ich habe leider das offizielle AutoCAD-Buch nicht). Vielleicht gibt es da einen Tipp. 

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



Werkstudent (w/m/d) Tragwerksplanung
Als führendes europäisches Beratungs-, Planungs- und Projektmanagementunternehmen bietet Drees & Sommer Lösungen für erfolgreiche Gebäude, renditestarke Portfolios, leistungsfähige Infrastruktur und lebenswerte Städte. In interdisziplinären Teams unterstützen unsere über 5.100 Mitarbeiterinnen und Mitarbeiter an 59 internationalen Standorten Auftraggeber unterschiedlichster Branchen. Bei uns gestalten Sie Ihren individuellen Karriereweg aktiv mit....
Anzeige ansehenBauwesen
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: 23. Nov. 2011 14:57    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 Barbara33 10 Unities + Antwort hilfreich

AutolispTutorial : http://www.autolisp.mapcar.net/    und folgende

Referenz : VLIDE aufrufen .. F1 drücken  

aber guck dir mal den Beitrag an

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

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