Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  if (will nicht)

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:  if (will nicht) (1757 mal gelesen)
nebuCADnezzar
Mitglied



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

Beiträge: 262
Registriert: 17.10.2007

AutoCAD 2019
Inventor 2019
64 bit Win 10
Intel I7 10610U 1.8 GHz
Quadro P520
32 GB Ram

erstellt am: 31. Mrz. 2014 16: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

-Gelöst- !

Hallo Zusammen

Ich sth mal wieder n bisschen aufm Schlauch...
Ich hab schön ne Vorlage gefunden die beinahe das gemacht hat was ich wollt und hab mir die Angepasst, funktionierte super, soweit...
So nun hab ich mir ne klizekleine Schleife eingebaut die cheken sollte wenn Winkel 1 zu Winkel 2 mehr als 3° Unterschied hat dann stoppe (Fügt Blöcke ein die nicht mehr als 3° zueinander verdreht werden können/sollen)

Ich bin wiedermal sicher das ich irgend nen Denkfehler drinnhab der eigentlich offensichtlich sein sollte, nur mir gerade nicht...

Code:

(defun c:elplaz (/ ABSTAND ABSTANDIST FUZZ L1 L2 L3 OBJ P1 P2 P3 P4 RAD WIN1 WIN2)
  (setq L1 4.0140
        Fuzz 0.0000001)
 
  (if (and (setq obj (car(entsel "\nPolylinie auswählen:")))
          (member(cdr(assoc 0 (entget obj)))'("LWPOLYLINE" "POLYLINE"))
          (setq P1 (getpoint "\nStartPunkt:"))
          (setq P1 (vlax-curve-getClosestPointTo obj P1)))
    ;;;Wenn Punkt2 (P2) von Waggon 1
    (if (setq P2 (test:WaggonP2 P1 obj L1 Fuzz))
      (progn
        ;;;KontrolLinien zeichnen
        (test:LineEntmake P1 P2)
        (setq RAD (angle P1 P2))
   (setq WIN1 (atof (angtos rad 0 8)))
(command "_.insert" "Panel 4m" P1 1 1 WIN1)

      )
     )
   )


(setq P1 P2)
  (setq WIN2 WIN1)
    (while (setq P2 (test:WaggonP2 P1 obj L1 Fuzz))
      (progn
        ;;;KontrolLinien zeichnen
; (setq WIN2 WIN1)
(test:LineEntmake P1 P2)
        (setq RAD (angle P1 P2))
   (setq WIN1 (atof (angtos rad 0 8)))
; (command "_.insert" "Panel 4m" P1 1 1 WIN1)
; (setq P1 P2)
     (if
      (and
   ((WIN1 - WIN2) < 3)
   ((WIN1 - WIN2) > -3)
((WIN2 - WIN1) < 3)
   ((WIN2 - WIN1) > -3)
      )
       (
(command "_.insert" "Panel 4m" P1 1 1 WIN1)
(setq P1 P2)
(setq WIN2 WIN1)
       )
;          ((alert "Winkelmass grösser als 3°")
;           (exit)
;          )
   )  
      )
  )   
)


(defun test:LineEntmake (p1 p2 / )
  (entmake(list (cons 0 "LINE")
                (cons 10 P1)
                (cons 11 P2))))

;;;2. Punkt eines Waggons bestimmen
(defun test:WaggonP2 (P1 obj L1 Fuzz / ABSTANDIST DISTATP1 L1POLY P2 RETVALCHECK)
  (setq L1Poly L1
        DistAtP1 (vlax-curve-GetDistAtPoint obj P1))
  (while (not P2)
    (if (setq retvalCheck(test:WaggonP2:AbstandCheck P1 obj L1Poly DistAtP1 L1 Fuzz))
      (progn
        (setq AbstandIst (cadr retvalCheck)
              P2 (car retvalCheck))
        (if (not P2)
          (setq L1Poly (+ (/ (- L1 AbstandIst) 2.0)L1Poly))))
          (progn
            (alert "Der WaggonPunkt befindet sich nicht auf der Poly")
            (exit))))
  P2

      )

(defun test:WaggonP2:AbstandCheck (P1 obj L1Poly DistAtP1 L1 Fuzz / ABSTANDIST P2)
  (if(and(setq P2 (vlax-curve-getPointAtDist obj
                      (+ DistAtP1 L1Poly)))
        (setq AbstandIst (distance P1 P2)))
    (if (equal L1 AbstandIst Fuzz)
      (list P2 AbstandIst)
      (list nil AbstandIst))))


------------------
"Wissenschaft ist entweder Physik oder Briefmarkensammeln"

Ernest Rutherford 1871-1937

[Diese Nachricht wurde von nebuCADnezzar am 07. Apr. 2014 editiert.]

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: 31. Mrz. 2014 16: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 Nur für nebuCADnezzar 10 Unities + Antwort hilfreich

Hallo,
mit dem Syntax mußt Du noch ein bißchen üben (immer erst die Funktion und dann die Argumente (w1 - w2) => )(- w1 w2)

ohne es groß ausprobiert zu haben, für Deine Abfrage sollte folgendes passen: (if(<(abs(- WIN1 WIN2)) 3.0)

ABS gibt Dir den absoluten Betrag und der scheint Dich ja zu interessieren, einfach ausprobieren.

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

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

Rahmen einfügen Youtube

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: 31. Mrz. 2014 16:36    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 nebuCADnezzar 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von nebuCADnezzar:[i]
(if
(and

((WIN1 - WIN2) < 3)
((WIN2 - WIN1) < 3)

((WIN1 - WIN2) > -3)
((WIN2 - WIN1) > -3)
)


------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

nebuCADnezzar
Mitglied



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

Beiträge: 262
Registriert: 17.10.2007

AutoCAD 2019
Inventor 2019
64 bit Win 10
Intel I7 10610U 1.8 GHz
Quadro P520
32 GB Ram

erstellt am: 31. Mrz. 2014 17: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

Ich wusste es... Tutorial offen, aber das is mir mal wieder nicht aufgefallen...
Ich geb zu ich bin eher aus der Übung, hab schon lange nicht mehr gelispelt :-) Ich kappier auch den einwand von cadffm nicht, da brauch ich subtext, hab ich das so kurios oder kompliziert gelöst?? ;-) man muss das nehmen was man kann :-)

Ich hab nun n bisschen gepröbelt (will aber immer noch nicht...)

In einer Kurve Funktionerts soweit das es Abbruch meldet:

Code:
Befehl: elplaz
Polylinie auswählen:
StartPunkt:_.insert Blocknamen eingeben oder [?] <Panel 4m>: Panel 4m
Einheiten: Meter  Konvertierung:    1.0000
Einfügepunkt angeben oder [Basispunkt/Faktor/X/Y/Z/Drehen]:
X-Skalierfaktor eingeben, entgegengesetzte Ecke angeben oder [Ecke/XYZ] <1>: 1 Y-Skalierfaktor eingeben <X-skalierfaktor verwenden>: 1
Drehwinkel angeben <0.0000>: 63.33617341000000
Befehl: ; Fehler: quit / beenden abbrechen

(Aber auch hier schon der Fehler beim Drehwinkel??)

Bei ner Geraden ist noch offensichtlicher:

Code:
Befehl: elplaz
Polylinie auswählen:
StartPunkt:_.insert Blocknamen eingeben oder [?] <Panel 4m>: Panel 4m
Einheiten: Meter  Konvertierung:    1.0000
Einfügepunkt angeben oder [Basispunkt/Faktor/X/Y/Z/Drehen]:
X-Skalierfaktor eingeben, entgegengesetzte Ecke angeben oder [Ecke/XYZ] <1>: 1 Y-Skalierfaktor eingeben <X-skalierfaktor verwenden>: 1
Drehwinkel angeben <0.0000>: 122.9204283600000
Befehl: _.insert Blocknamen eingeben oder [?] <Panel 4m>: Panel 4m
Einheiten: Meter  Konvertierung:    1.0000
Einfügepunkt angeben oder [Basispunkt/Faktor/X/Y/Z/Drehen]:
X-Skalierfaktor eingeben, entgegengesetzte Ecke angeben oder [Ecke/XYZ] <1>: 1 Y-Skalierfaktor eingeben <X-skalierfaktor verwenden>: 1
Drehwinkel angeben <0.0000>: 122.9204283600000
Befehl: ; Fehler: Fehlerhafte Funktion: 122.92

Irgendwie scheint die weil schleife nicht mehr weitermachen zu wollen, ich nehme an da beim Einfügen schon was nicht sauber läuft?! Aber ist ja die selbe Rutine die ersmal 2x funktioniert bis sie stoppt?! Dafür scheint die 3° abfrage zu funktionieren...!

Code:

(defun c:elplaz (/ ABSTAND ABSTANDIST FUZZ L1 L2 L3 OBJ P1 P2 P3 P4 RAD WIN1 WIN2)
  (setq L1 4.0140
        Fuzz 0.0000001)
 
  (if (and (setq obj (car(entsel "\nPolylinie auswählen:")))
          (member(cdr(assoc 0 (entget obj)))'("LWPOLYLINE" "POLYLINE"))
          (setq P1 (getpoint "\nStartPunkt:"))
          (setq P1 (vlax-curve-getClosestPointTo obj P1)))
    ;;;Wenn Punkt2 (P2) von Waggon 1
    (if (setq P2 (test:WaggonP2 P1 obj L1 Fuzz))
      (progn
        ;;;KontrolLinien zeichnen
        (test:LineEntmake P1 P2)
        (setq RAD (angle P1 P2))
  (setq WIN1 (atof (angtos rad 0 8)))
(command "_.insert" "Panel 4m" P1 1 1 WIN1)

      )
    )
  )


(setq P1 P2)
  (setq WIN2 WIN1)
    (while (setq P2 (test:WaggonP2 P1 obj L1 Fuzz))
      (progn
        ;;;KontrolLinien zeichnen
; (setq WIN2 WIN1)
(test:LineEntmake P1 P2)
        (setq RAD (angle P1 P2))
  (setq WIN1 (atof (angtos rad 0 8)))
; (command "_.insert" "Panel 4m" P1 1 1 WIN1)
; (setq P1 P2)
    (if
      (and
(<(abs(- WIN1 WIN2)) 3.0)
(>(abs(- WIN1 WIN2)) -3.0)
;   (<= (- WIN1 WIN2) 3)
;   (>= (- WIN1 WIN2) -3)
; (<= (- WIN2 WIN1) 3)
;   (>= (- WIN2 WIN1) -3)
      )
      (
(progn
(command "_.insert" "Panel 4m" P1 1 1 WIN1)
(setq P1 P2)
(setq WIN2 WIN1)
)
      )
        ((alert "Winkelmass grösser als 3°")
          (exit)
        )
  ) 
      )
  )   
)


(defun test:LineEntmake (p1 p2 / )
  (entmake(list (cons 0 "LINE")
                (cons 10 P1)
                (cons 11 P2))))

;;;2. Punkt eines Waggons bestimmen
(defun test:WaggonP2 (P1 obj L1 Fuzz / ABSTANDIST DISTATP1 L1POLY P2 RETVALCHECK)
  (setq L1Poly L1
        DistAtP1 (vlax-curve-GetDistAtPoint obj P1))
  (while (not P2)
    (if (setq retvalCheck(test:WaggonP2:AbstandCheck P1 obj L1Poly DistAtP1 L1 Fuzz))
      (progn
        (setq AbstandIst (cadr retvalCheck)
              P2 (car retvalCheck))
        (if (not P2)
          (setq L1Poly (+ (/ (- L1 AbstandIst) 2.0)L1Poly))))
          (progn
            (alert "Der WaggonPunkt befindet sich nicht auf der Poly")
            (exit))))
  P2

      )

(defun test:WaggonP2:AbstandCheck (P1 obj L1Poly DistAtP1 L1 Fuzz / ABSTANDIST P2)
  (if(and(setq P2 (vlax-curve-getPointAtDist obj
                      (+ DistAtP1 L1Poly)))
        (setq AbstandIst (distance P1 P2)))
    (if (equal L1 AbstandIst Fuzz)
      (list P2 AbstandIst)
      (list nil AbstandIst))))2


------------------
"Wissenschaft ist entweder Physik oder Briefmarkensammeln"

Ernest Rutherford 1871-1937

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: 01. Apr. 2014 08: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 nebuCADnezzar 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von nebuCADnezzar:
Ich kappier auch den einwand von cadffm nicht, da brauch ich subtext,

Du hast es nicht verstanden aber beim 2.Versuch dennoch umgestellt ? Du solltest Lotto spielen diese Woche :)

Code:

((WIN1 - WIN2) < 3)


Code:

(<(abs(- WIN1 WIN2)) 3.0)

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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: 01. Apr. 2014 08:21    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 nebuCADnezzar 10 Unities + Antwort hilfreich

Hallo,
hier vielleicht noch mal eine Methode, eine Winkeldifferenz Absolut zu bestimmen. Das habe ich über den Cosinus-Satz gemacht, gegeben werden 2 Richtungen in RAD. Vorteil: Du mußt beim Vergleich zweier Winkel nicht den Nulldurchgang berücksichtigen.

Ohne das ich es jetzt geprüft habe, wenn bei Dir der erste Winkel z.B. 358° hat, der zweite 3°, dann hättest Du eine Winkeldifferenz von 5°, bei der normalen Substraktion ohne Berücksichtigung des Nulldurchgangs aber 355°.

Egal, vielleicht hilft es Dir.

Code:

(defun c:test ( / )
    (if(and
         (setq p1 (getpoint "\nErster Punkt:"))
         (setq p2 (getpoint p1 "\nErster Richtung:"))
         (setq p3 (getpoint p1 "\nZweiter Richtung:")))
      (alert (strcat "Der Differenzwinkel beträgt "
               (angtos(test:WinkelDiff (angle p1 p2)(angle p1 p3))0 3)"°"))
      )
    )

(defun test:WinkelDiff (w1 w2 / A B C PA PB PC)
    (setq pC '(0.0 0.0 0.0)
          a 10.0
          b 10.0
          pA (polar pC w1 a)
          pB (polar pC w2 b)
          c (distance pA pB))
    ;(entmake (list(cons 0 "LINE")(cons 10 pA)(cons 11 pB)))
    (arcos(/(-(+(* a a)(* b b))(* c c))
          (*(* 2.0 a)b))))


(defun arcos (x / )
  (atan (sqrt (- 1 (* x x)))x)
  )


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

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

Rahmen einfügen Youtube

[Diese Nachricht wurde von joern bosse am 01. Apr. 2014 editiert.]

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: 01. Apr. 2014 08:22    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 nebuCADnezzar 10 Unities + Antwort hilfreich

Und Anregung zur neuesten Kreation:

Code:

1;(if
2;(and
x;(<(abs(- WIN1 WIN2)) 3.0)
x;(>(abs(- WIN1 WIN2)) -3.0)
2;)
3;(
4;(progn
x;(command "_.insert" "Panel 4m" P1 1 1 WIN1)
x;(setq P1 P2)
x;(setq WIN2 WIN1)
4;)
3;)
5;(
x;(alert "Winkelmass grösser als 3°")
x;(exit)
5;)
1;)

Klammer(paar) Nr.3 wird die Rückmeldung von "progn" ausführen wollen,
Klammer(paar) Nr.5 die Rückmeldung von "Alert".

Weder die Zahl die Progn zurückgibt noch das nil aus dem Alert sind Funktionen,
da mußt du also noch mal ran. (den Rest habe ich nicht angeschaut)

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

nebuCADnezzar
Mitglied



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

Beiträge: 262
Registriert: 17.10.2007

AutoCAD 2019
Inventor 2019
64 bit Win 10
Intel I7 10610U 1.8 GHz
Quadro P520
32 GB Ram

erstellt am: 02. Apr. 2014 10:47    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

Morgen

Jajajaja da ich wie gesagt schon ewig nichts mehr geschrieben hab ist oft schon son bisschen Lotto... ist oft mehr try and error als spezifisch zu wissen was ich tue... Aber mittels "wenns da so geschriben wurde muss es hier auch so sein" komm ich normalerweise sehr weit, wenn ich weiss das ein codeschnipsel das tut was es soll muss ich nicht zwingend 100% wissen wie es funktioniert :-)

weil nur das hier funktioniert perfekt:

Code:
    (while (setq P2 (test:WaggonP2 P1 obj L1 Fuzz))
      (progn
        ;;;KontrolLinien zeichnen
(test:LineEntmake P1 P2)
        (setq RAD (angle P1 P2))
  (setq WIN (atof (angtos rad 0 8)))
(command "_.insert" "Panel 4m" P1 1 1 WIN)
(setq P1 P2)

  ))


jetz will ich eigentlich nur ne simple "wenn winkel <3° dann" Prüfung vorne ran setzen
(dachte "schniggschnagg" das sollte sogar für mich machbar sein...)

aber all meine Versuche tun nicht :-( hab heut morgen neuen Anlauf komplett von vorne genommen
und ich behaupte das Problem ist nicht wie ich die Winkel berechne sondern wie das "OK" korrekt in die wile schleife reinkommt...
Meisten ist dann fast beschämed wenn ich im Forum frag weil dann rauskommt das ich (1+2) schreib anastatt (+ 1 2) un mind. so sachen sollt ich sehen...

Code:
    (while (and ((setq P2 (test:WaggonP2 P1 obj L1 Fuzz)))
(progn
  (setq RAD (angle P1 P2))
    (setq WIN2 (atof (angtos rad 0 8)))
  (and((<(abs(- WIN1 WIN2)) 3.0)
      (>(abs(- WIN1 WIN2)) -3.0)
      )
  )
        )
)
         
      (progn
        ;;;KontrolLinien un Block zeichnen
(test:LineEntmake P1 P2)
(command "_.insert" "Panel 4m" P1 1 1 WIN2)
(setq P1 P2)
(setq WIN1 WIN2)

  ))


------------------
"Wissenschaft ist entweder Physik oder Briefmarkensammeln"

Ernest Rutherford 1871-1937

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. Apr. 2014 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 nebuCADnezzar 10 Unities + Antwort hilfreich

1 (while (and
2         (
3           (setq P2 (test:WaggonP2 P1 obj L1 Fuzz))
4         )
5 (progn
6   (setq RAD (angle P1 P2))
7   (setq WIN2 (atof (angtos rad 0 8)))
8   (and
9     (
10     (<(abs(- WIN1 WIN2)) 3.0)
11     (>(abs(- WIN1 WIN2)) -3.0)
12     )
13   )
14 )
15 ) ;_das ist die schließende Klammer vom while-AND
16
17
18  
19       (progn
20         ;;;KontrolLinien un Block zeichnen
21 (test:LineEntmake P1 P2)
22 (command "_.insert" "Panel 4m" P1 1 1 WIN2)
23 (setq P1 P2)
24 (setq WIN1 WIN2)
25
26   )
27

------------------
CAD on demand GmbH - Beratung und Programmierung rund um AutoCAD

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

nebuCADnezzar
Mitglied



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

Beiträge: 262
Registriert: 17.10.2007

AutoCAD 2019
Inventor 2019
64 bit Win 10
Intel I7 10610U 1.8 GHz
Quadro P520
32 GB Ram

erstellt am: 03. Apr. 2014 17: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

So ich hab nochmal umgebaut... aber alle Versionen die ich getestet hab haben das selbe Problem:

Code:
Befehl: elplaz
Polylinie auswählen:
StartPunkt:_.insert Blocknamen eingeben oder [?] <Panel 4m>: Panel 4m
Einheiten: Meter  Konvertierung:    1.0000
Einfügepunkt angeben oder [Basispunkt/Faktor/X/Y/Z/Drehen]:
X-Skalierfaktor eingeben, entgegengesetzte Ecke angeben oder [Ecke/XYZ] <1>: 1 Y-Skalierfaktor eingeben <X-skalierfaktor verwenden>: 1
Drehwinkel angeben <0.0000>: 132.8910097500000
Befehl: ; Fehler: Fehlerhafte Funktion: 132.891

Mit dem Unterschied das manchmal WIN1 oder P1 (je nach Version) die Fehlerhafte Funktion sind...


Die Schliessende Klammer vom and (im wihle) ist wieder vor (progn... aber dass muss doch so?!
(wihle (and
        (a)
        (b)
        )
      (starte c)
)

Code:
(while (and
(setq P2 (test:WaggonP2 P1 obj L1 Fuzz))
(progn
      (setq RAD (angle P1 P2))
  (setq WIN2 (atof (angtos RAD 0 8)))
                (<= 3 (test:WinkelDiff (WIN1)(WIN2)))
      )
      )

  (progn
        ;;;KontrolLinien zeichnen
(test:LineEntmake P1 P2)
(command "_.insert" "Panel 4m" P1 1 1 WIN)
(setq P1 P2)
  )
)



Ich kann nicht so richtig debuggen, aber WIN2 wird nicht "definiert" oder errechnet. Die blöde Schleife scheint immer noch nicht zu funktionieren und ich seh den Grund immer noch nicht...
Bald geb ich auf, oder mein Chefe verbietet mir bald das LISP "basteln...


------------------
"Wissenschaft ist entweder Physik oder Briefmarkensammeln"

Ernest Rutherford 1871-1937

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: 03. Apr. 2014 18: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 nebuCADnezzar 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von nebuCADnezzar:
... Ich kann nicht so richtig debuggen, ...

Dann nimm die VLIDE - da kannst du debuggen (ich gehe davon aus, dass du nicht mit dem VL-Editor arbeitest - das solltest du dir angewöhnen!)

Zitat:
Original erstellt von nebuCADnezzar:
... aber WIN2 wird nicht "definiert" oder errechnet. Die blöde Schleife scheint immer noch nicht zu funktionieren und ich seh den Grund immer noch nicht...

Da musst du debuggen und schauen, welche Werte die einzelnen Variablen haben, dann wird sich dir der Fehler auch erschließen.
Wenn WIN2 keinen Wert bekommt, dann kann das nur an den vorangehenden Zeilen liegen.
Zitat:
Original erstellt von nebuCADnezzar:
... Bald geb ich auf, oder mein Chefe verbietet mir bald das LISP "basteln...

Das glaube ich dir, an den Punkt kommt jeder mal. Es muss sich rechnen.
Mein Meinung!: Wenn du intern das X-fache an Zeit benötigst, die ein Profi bräuchte, der aber deutlich schneller ist und weniger als das X-fache kostet, kann sich das Umschauen, nach einem Profi lohnen. Dass sich das Tool amortisieren wird, ist wohl wahrscheinlich, sonst hättest du wohl vom Chef auch nicht die Zeit zum Programmieren bekommen.

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: 03. Apr. 2014 18:30    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 nebuCADnezzar 10 Unities + Antwort hilfreich

Hallo,
ohne was ausprobiert zu haben:

(<= 3 (test:WinkelDiff (WIN1)(WIN2)))

richtig:
(<= (*(/(test:WinkelDiff WIN1 WIN2)pi)180.0)3.0)

die Argumente WIN1 und WIN2 dürfen nicht in Klammern stehen, andernfalls werden diese versucht als Funktion ausgewertet zu werden. Die Rückgabe der Funktion test:WinkelDiff erfolgt in RAD, daher geteilt durch PI und * 180.0

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

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

Rahmen einfügen Youtube

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

nebuCADnezzar
Mitglied



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

Beiträge: 262
Registriert: 17.10.2007

AutoCAD 2019
Inventor 2019
64 bit Win 10
Intel I7 10610U 1.8 GHz
Quadro P520
32 GB Ram

erstellt am: 07. Apr. 2014 09:49    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


ElementAnPolyAusricht.lsp

 
Guten Morgen miteinander

Leider hab ich mit dem Lotto spielen nicht so viel Erfolg wie beim Lispen, aber irgendwie hab ichs hinbekommen ohne so 100% sicher zu sein wieso vorherige Varianten nicht getan haben... :-)

Aber macht nichts es tut nun so ziemlich was es soll (ausser der Übergang von 360-0 aber dieser Mängel is mir schnuppe, Falls der Fall eintritt löse ich ihn von Hand...)

Vielen Dank und wenn Ihr in im Oktober Formel 1 kuckt dann könnt Ihr euch erinnern und denken; Ha! And der Planung der die ganzen Sicherheitszäune hab i noch geholfen die Arbeit zwei Wochen zu verkürzen :-)
Oder zumindest mich davon bewahrt das ich nich vor lauter 2000 Blöcke von Hand hinplatzen noch vor langeweile n Hirnschaden davongetragen hätte ;-)

Schöne Woche!

------------------
"Wissenschaft ist entweder Physik oder Briefmarkensammeln"

Ernest Rutherford 1871-1937

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