Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  Lisp
  Lisp für Rohrabzweiger?

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 für Rohrabzweiger? (2539 mal gelesen)
Vanaxel
Mitglied
Anlagen-Planer


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

Beiträge: 23
Registriert: 24.05.2007

AutoCAD Architecture 2008 deutsch, WinXP SP2

erstellt am: 12. Okt. 2007 17:46    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


abzweiger1.jpg

 
Hallo Leute,

ich hab mich nun schon 3 Nächte durch dynamische Blöcke von ACAD2008 Architecture gewühlt und gequält und habe nur Teilerfolge verbuchen können.

Mein Problem: Ich muss täglich ca. 100 solcher Abzweiger zeichnen wie im angehängten Maßblatt ersichtlich.
DAS KOSTET extrem viel Zeit weil die Dinger
1. immer unterschiedlich sind und...
2. blöd zu zeichnen sind.

Nun habe ich eine verzweifelte Bitte an die Leute unter Euch denen AutoLisp Spaß macht und sich sogar eventuell etwas Körberlgeld verdienen wollen (ja soweit bin ich schon  ).

Ich brauche eine Lisp die mich beim Aufruf frägt:
D eingeben: <xxx>
DN eingeben: <xxx>
d eingeben: <xxx>

zwei Logiken müssten drin sein:
1. D <= DN
2. d => D

L verhält sich nach DN, d.h. wenn DN = 300 dann L = 500, wenn DN > 300 dann L = 700 usw...

stimmen alle Eingaben soll er mich nach dem Einfügepunkt am Bildschirm fragen und den Abzweiger hinzeichnen.
Das Maßblatt zu den Maßen und Verhältnissen der Abzweiger ist im Anhang ersichtlich.

Ich persönlich glaube ja, wenn man Autolisp drauf hat, kann das gar keine große Sache sein. Aber für mich isses ein Buch mit 7 Siegeln leider...

Das wäre mein ganzes Anliegen.

Bitte sehnlichst um Hilfe, mfg Van

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

heidi
Mitglied
CAD-Dienstleister


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

Beiträge: 1130
Registriert: 01.11.2001

erstellt am: 12. Okt. 2007 19:02    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 Vanaxel 10 Unities + Antwort hilfreich

Hi,

du könntest z.b. hier mal nachsehen und anfragen
http://www.cad-od.de/programmierung.html

Da wird dir sicher geholfen.

------------------
Gruss Heidi
________________
www.cad-point.de

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

Vanaxel
Mitglied
Anlagen-Planer


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

Beiträge: 23
Registriert: 24.05.2007

AutoCAD Architecture 2008 deutsch, WinXP SP2

erstellt am: 15. Okt. 2007 08:38    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

hätte vieleicht irgendwer eine Lisp-Datei die was ganz einfaches zB. ein Rechteck oder sowas in der Art zeichnet mittels Benutzereingabe der Maße?

Damit ich mir vieleicht selber weiterhelfen kann?

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

tunnelbauer
Ehrenmitglied V.I.P. h.c.
Bauingenieur



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

Beiträge: 7085
Registriert: 13.01.2004

ich hab eh keine Probleme damit...

erstellt am: 15. Okt. 2007 09: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 Nur für Vanaxel 10 Unities + Antwort hilfreich

Anderer Vorschlag:

Was hältst du davon wenn du dir eine Teile-Bibliothek aufbaust?

Alle Rohrabzweiger links/rechts einmal zeichnen und dann als Block auf der Platte ablegen... dann kannst du dir noch eine Werkzeugpalette erstellen auf welcher alle diese Blöcke einfügefertig draufliegen... Ist meiner Meinung nach der schnellste Weg...

------------------
Grüsse

Thomas


Korrekturen zum Kochbuch AutoLISP

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: 15. Okt. 2007 09: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 Nur für Vanaxel 10 Unities + Antwort hilfreich

IMHO ist kontruktiv ist die Schnittkurve bei der Verschneidung zwischen Zylinder und Kegelstumpf etwas aufwendiger ... wie genau muß denn das sein..? ..das andere -Eingaben .. Kegelstumpf und Zylinder zeichnen - ist relativ einfach zu realisieren.

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

Vanaxel
Mitglied
Anlagen-Planer


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

Beiträge: 23
Registriert: 24.05.2007

AutoCAD Architecture 2008 deutsch, WinXP SP2

erstellt am: 15. Okt. 2007 10: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

Zitat:
Original erstellt von tunnelbauer:
Anderer Vorschlag:

Was hältst du davon wenn du dir eine Teile-Bibliothek aufbaust?

Alle Rohrabzweiger links/rechts einmal zeichnen und dann als Block auf der Platte ablegen... dann kannst du dir noch eine Werkzeugpalette erstellen auf welcher alle diese Blöcke einfügefertig draufliegen... Ist meiner Meinung nach der schnellste Weg...


die durchmesser können sein: 80,100,120,140,150,160,180,200,220,250,260,280,300,350,380,400,450,500,550,600,630,650,700
daraus ergeben sich annähgernd unendlich viele Möglichkeiten, also relativ sinnlos leider.

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

mkl-cad
Mitglied
Technischer Zeichner


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

Beiträge: 378
Registriert: 23.07.2003

ACAD 2002
Express Tools 1-9
Architektural Desktop
Windows XP
Server Windows 2003
3 GHz Rechner
1 GB RAM
80 GB Festplatte
ATI FireGL V3100
2 17" Flachbildschirme

erstellt am: 15. Okt. 2007 10: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 Vanaxel 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von CADmium:
IMHO ist kontruktiv ist die Schnittkurve bei der Verschneidung zwischen Zylinder und Kegelstumpf etwas aufwendiger ... wie genau muß denn das sein..? ..das andere -Eingaben .. Kegelstumpf und Zylinder zeichnen - ist relativ einfach zu realisieren.


Hallo CADmium,

als Maschinenbaukonstrukteur müßte das für dich doch ein Klacks sein. Oder du hast sowas schon lange nicht mehr gemacht ;-) Hier auf Seite 57 kann mans nachlesen. Das Unterfangen wird allerdings nicht einfach. Wünsche viel Glück dabei.

------------------
  Martin  

Viele Grüße aus dem schönen Münsterland!

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

Mario Scht
Mitglied



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

Beiträge: 156
Registriert: 14.11.2002

Win XP
ACAD 2007

erstellt am: 15. Okt. 2007 13: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 Nur für Vanaxel 10 Unities + Antwort hilfreich

Hallo Vanaxel,
ich kann Dir CadOnDemand (ohne hier Werbung machen zu wollen, aber die Leute reißen sich hier oft genug auch kostenlos ein Bein aus) nur wärmstens empfehlen, und wenn ich sehe, was für eine elendig langweilige Arbeit Du Dir für ein paar schmale Taler ersparen kannst, dann solltest Du da drauf gehen. Wenn ich nur 20 solcher Anschlüsse am Tag zeichnen müßte, dann hätte sowohl meine Maus, als auch ich schon längst die Grätze im Kopf. 
Gruß Mario

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

Vanaxel
Mitglied
Anlagen-Planer


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

Beiträge: 23
Registriert: 24.05.2007

AutoCAD Architecture 2008 deutsch, WinXP SP2

erstellt am: 15. Okt. 2007 14: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

so ich hab mir jetzt mal die mühe gemacht das Ganze so aufzuschreiben, daß es rein aus Eingaben und Formeln zu konstruieren ist.
wenn jetzt jemand mir beim "in Autolisp-ausdeutschen" behilflich sein könnte?

Er soll mich fragen:
Øgroß eingeben (Øg):
Øklein eingeben Øk):
Øabgang eingeben (Øa):
Einfügepunkt wählen:

dann folgendes machen *gg*:

So sollte das ablaufen

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

Vanaxel
Mitglied
Anlagen-Planer


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

Beiträge: 23
Registriert: 24.05.2007

AutoCAD Architecture 2008 deutsch, WinXP SP2

erstellt am: 15. Okt. 2007 20:41    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

Zitat:
Original erstellt von CADmium:
IMHOIn my humble oppinion (Meiner Meinung nach) ist kontruktiv ist die Schnittkurve bei der Verschneidung zwischen Zylinder und Kegelstumpf etwas aufwendiger ... wie genau muß denn das sein..? ..das andere -Eingaben .. Kegelstumpf und Zylinder zeichnen - ist relativ einfach zu realisieren.

um auf deine Frage zu antworten: genau...hm...is relativ, also ich brauch es nicht in 3D wenn du das meinst, aber anhand meiner Beschreibung hier drüber müsste man es eigentlich gut zusammenbringen

Mir wäre ja auch schon geholfen wenn ich ein paar Befehle und deren korrekte Anwendung wissen würde. Hab mich bereits durchs ACAD 2000-Lisp-Tutorial geplagt und durchs R14 Lisptutorial welches hier im Forum rumgeistert, nur mein Problem ist, ich kann nichtmal ne Variable definieren und ihr einen Wert zuweisen. Selbst wenn ich das könnte, würde mir das Knowhow fehlen eine Linie von Var A nach Var B zu zeichnen und und und... das Problem mit diesen Tutorials ist IMHOIn my humble oppinion (Meiner Meinung nach) daß für meine Verhältnisse keine guten kleinen Beispiele drinnen sind, vieleicht bin ich ja auch nur zu dumm dazu oder mein Vorhaben so abstrus 

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

gmk
Mitglied
Dipl.-Ing.(FH) Vermessung


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

Beiträge: 667
Registriert: 23.10.2002

Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM

erstellt am: 16. Okt. 2007 10:42    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 Vanaxel 10 Unities + Antwort hilfreich

(DEFUN sqr (x)
(* x x)

(DEFUN tan (x)
  (/ (SIN x) (COS x))


(DEFUN c:rabzw ( /
dg
dk
a
pkt
rw
hw
diff
l
v
beta
y
gamma
delta
epsilon
p2
p3
p21
p22
p23
p24
riwi
)

(SETQ dg (GETREAL "\ngroßer Durchmesser: "))
(SETQ dk (GETREAL "\nkleiner Durchmesser: "))
(SETQ a (GETREAL "\nAbgang: "))
(SETQ pkt (GETPOINT "\nEinfügepunkt"))
(SETQ rw (CAR pkt) hw (CADR pkt))
(SETQ diff (/ (- dg dk) 2.0))     
(COND
  ((<= dg 250) (SETQ l 500))
  ((AND (> dg 250) (<= dg 450)) (SETQ l 700))
  ((> dg 450) (SETQ l 1000))
)
(SETQ v (SQRT (+ (sqr l) (sqr (/ (- dg dk)  l)))))
(SETQ y (/ l v))  ; sin 90 = 1
(SETQ beta (ATAN (/ y (SQRT (- 1 (sqr y)))))) 
(SETQ gamma (- beta (/ PI 4.0)))
(SETQ delta (- (/ PI 2.0) gamma))
(SETQ epsilon (/ (* a (SIN gamma)) (SIN delta)))
(SETQ p2 (LIST (+ rw dg) (+ hw 0)))
(SETQ p3 (LIST (+ rw diff dk) (+ hw l)))
(COMMAND "_line" pkt p2 p3 (LIST (+ rw diff) (+ hw l)) "_c")
(SETQ riwi (ANGLE p2 p3))
(SETQ p21 (POLAR p2 riwi (SQRT (+ (SQR 50) (SQR (/ 50 (TAN (- (ANGLE p2 p3) PI))))))))
(SETQ riwi (/ (* 3 PI) 4))
(SETQ epsilon (+ epsilon 50)) 
(SETQ p22 (POLAR p21 riwi a))
(SETQ riwi (- riwi (/ PI 2.0))) 
(SETQ p23 (POLAR p22 riwi epsilon))
(SETQ riwi (- riwi (/ PI 2.0))) 
(SETQ p24 (POLAR p23 riwi a)) 
(COMMAND "_line" p21 p22 p23 p24 "_c")

Start mit rabzw

Ciao Georg

------------------
http://www.xx-tausend.info

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

Vanaxel
Mitglied
Anlagen-Planer


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

Beiträge: 23
Registriert: 24.05.2007

AutoCAD Architecture 2008 deutsch, WinXP SP2

erstellt am: 17. Okt. 2007 20: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

vielen vielen dank, ein paar kleine Fehler sind noch drinnen:
1. dg >= dk (dürfen auch gleich sein!!)
2. bei kleinen Durchmessern (dg=120, dk=100, da=80) spielt er verrückt siehe Screenshot
 
3. er versetzt nicht die Grundlinie um 50
4. der Abgang wird meist kein rechteck sondern irgendwie windschief ?!

mfg Van

[Diese Nachricht wurde von Vanaxel am 17. Okt. 2007 editiert.]

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

gmk
Mitglied
Dipl.-Ing.(FH) Vermessung


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

Beiträge: 667
Registriert: 23.10.2002

Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM

erstellt am: 17. Okt. 2007 23: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 Vanaxel 10 Unities + Antwort hilfreich


rabzw.JPG

 
zu 1.) ja, dann musst du es halt so eingeben ??
zu 2.) kann ich nicht nachvollziehen
zu 3.) bei mir schon
zu 4.) bei mir ist es ein rechteck

siehe Anhang

Du hast ja AutoCAD Architecture 2008,evtl. ist es ein Richtungsproblem (Winkeleinheiten), kann mir aber nicht vorstellen, dass Architecture 2008 andere Einheiten für ANGLE und POLAR verwendet als AutoCAD.


Ciao Georg

------------------
http://www.xx-tausend.info

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

Wolfgang S
Mitglied
CADaver


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

Beiträge: 270
Registriert: 06.03.2006

AC 2009, C3D 2009, AC 2010, C3D 2010, AC 2011, C3D 2011, RVT 2010, RVT 2011, ASD 2011 und alles darunter bis R14 +
Win XP, Win XP64, Win 7/64

erstellt am: 18. Okt. 2007 10:01    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 Vanaxel 10 Unities + Antwort hilfreich

Hallo! Habe der Funktion eine "nettere" Eingabemöglichkeit geschaffen.
Vorhandene DM stehen zur Verfügung, Auswahl von "kleiner DM" nur mehr kleinergleich "großer DM" möglich, ebenso "Abgang DM" eingeschränkt auf kleinergleich "großer DM".

AN DER BERECHNUNG IST NIX VERÄNDERT!
IMHOIn my humble oppinion (Meiner Meinung nach) ist da noch ein Fehler drin. wenn
"großer DM" = "kleiner DM" -> Div. durch Null, Fehlermeldung!
(SETQ y (/ l v))
(SETQ beta (ATAN (/ y (SQRT (- 1 (sqr y))))))

bei gleichem DM l=v, somit (- 1 1), somit Div. durch Null

die falsche Darstellung wird vermutlich durch den OSNAP verursacht und hat nix mit der DM-Größe zu tun!

lg
Wolfgang S.

Code:
(DEFUN sqr (x) (* x x))

(DEFUN tan (x) (/ (SIN x) (COS x)))

(DEFUN REALP (x) (= (type x) 'REAL))

(DEFUN c:rabzw (/ A      BETA  DEFAULT      DELTA  DG    DIFF  DK    DMLISTE
                  EPSILON      GAMMA  HW    L      P2    P21    P22    P23
                  P24    P3    PKT    RIWI  RW    V      Y  sw~~watched-sysvars
                )

  ;;; SYSVARS BEOBACHTEN !!! ACHTUNG LOKAL SETZEN !!!
(command "._UNDO" "_BEGIN")
(setq sw~~watched-sysvars
    (mapcar
      (function(lambda(v / )(cons v(getvar v))))
      '("CMDECHO" "OSMODE" "AUTOSNAP" )
    )
  )

  ;;; SYSVARS AUF GEWÜNSCHTE WERTE SETZEN
  (mapcar
      (function(lambda(pair / )(setvar (car pair)(cdr pair))))
      '(("CMDECHO" . 0)("OSMODE" . 0)("AUTOSNAP" . 0) )
    )
 

  (setq dmliste '(80 100 120 140 150 160 180 200 220 250 260 280 300 350 380 400
                  450 500 550 600 630 650 700)
        default 200
  )

;;; --------------------- Abfrage großer DM
  (initget
    0
    (apply
      'strcat
      (mapcar (function (lambda (rohrdm /) (strcat (itoa rohrdm) " "))) dmliste)
    )
  )
  (if (setq dg
            (getkword
              (strcat
                "\ngroßer Durchmesser ["
                (apply
                  'strcat
                  (mapcar (function (lambda (rohrdm /) (strcat (itoa rohrdm) "/")))
                          dmliste
                  )
                )
                "] :<"
                (itoa default)
                ">"
              )
            )
      )
    (setq dg (atof dg))
    (setq dg (float default))
    )   
;;; --------------------- Ende Abfrage großer DM

;;; --------------------- Abfrage kleiner DM
  (initget
    0
    (apply
      'strcat
      (mapcar (function (lambda (rohrdm /) (strcat (itoa rohrdm) " "))) (reverse (member (fix dg) (reverse dmliste))))
    )
  )         
  (if (setq dk
            (getkword
              (strcat
                "\nkleiner Durchmesser ["
                (apply
                  'strcat
                  (mapcar (function (lambda (rohrdm /) (strcat (itoa rohrdm) "/")))
                          (reverse (member (fix dg) (reverse dmliste)))
                  )
                )
                "] :<"
                (itoa (fix dg))
                ">"
              )
            )
      )
    (setq dk (atof dk))
    (setq dk (float default))
    ) 
;;; --------------------- Ende Abfrage kleiner DM
 
;;; --------------------- Abfrage Abgang DM
  (initget
    0
    (apply
      'strcat
      (mapcar (function (lambda (rohrdm /) (strcat (itoa rohrdm) " "))) (reverse (member (fix dg) (reverse dmliste))))
    )
  )         
  (if (setq a
            (getkword
              (strcat
                "\nAbgang ["
                (apply
                  'strcat
                  (mapcar (function (lambda (rohrdm /) (strcat (itoa rohrdm) "/")))
                          (reverse (member (fix dg) (reverse dmliste)))
                  )
                )
                "] :<"
                (itoa (fix dk))
                ">"
              )
            )
      )
    (setq a (atof a))
    (setq a (float default))
    ) 
;;; --------------------- Ende Abfrage Abgang DM

  (SETQ pkt (GETPOINT "\nEinfügepunkt"))

 
;;; --------------------- Start Programmausführung
 
  (if (and (realp dg)
          (realp dk)
          (realp a)
          (listp pkt)
          )
    (progn
;;; ****************************** AB HIER UNVERÄNDERT
      (SETQ rw (CAR pkt)
                hw (CADR pkt)
          )
          (SETQ diff (/ (- dg dk) 2.0))
          (COND ((<= dg 250) (SETQ l 500))
                ((AND (> dg 250) (<= dg 450)) (SETQ l 700))
                ((> dg 450) (SETQ l 1000))
          )
          (SETQ v (SQRT (+ (sqr l) (sqr (/ (- dg dk) l)))))
          (SETQ y (/ l v))                                                    ; sin 90 = 1
          (SETQ beta (ATAN (/ y (SQRT (- 1 (sqr y))))))
          (SETQ gamma (- beta (/ PI 4.0)))
          (SETQ delta (- (/ PI 2.0) gamma))
          (SETQ epsilon (/ (* a (SIN gamma)) (SIN delta)))
          (SETQ p2 (LIST (+ rw dg) (+ hw 0)))
          (SETQ p3 (LIST (+ rw diff dk) (+ hw l)))
          (COMMAND "_line" pkt p2 p3 (LIST (+ rw diff) (+ hw l)) "_c")
          (SETQ riwi (ANGLE p2 p3))
          (SETQ
            p21 (POLAR p2
                        riwi
                        (SQRT (+ (SQR 50) (SQR (/ 50 (TAN (- (ANGLE p2 p3) PI))))))
                )
          )
          (SETQ riwi (/ (* 3 PI) 4))
          (SETQ epsilon (+ epsilon 50))
          (SETQ p22 (POLAR p21 riwi a))
          (SETQ riwi (- riwi (/ PI 2.0)))
          (SETQ p23 (POLAR p22 riwi epsilon))
          (SETQ riwi (- riwi (/ PI 2.0)))
          (SETQ p24 (POLAR p23 riwi a))
          (COMMAND "_line" p21 p22 p23 p24 "_c")
;;; ****************************** AB HIER UNVERÄNDERT
    )
    (prompt "\nFalsche Angaben, Programm beendet")
    );end_if

    ;;; BEOBACHTETE SYSVARS ZURÜCKSETZEN
  (foreach pair sw~~watched-sysvars
    (setvar (car pair)(cdr pair))
  ) ; SYSVAR SETZEN
  (command "._UNDO" "_END")
  (princ)

   
  )


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

gmk
Mitglied
Dipl.-Ing.(FH) Vermessung


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

Beiträge: 667
Registriert: 23.10.2002

Autocad 2004, WS CadCompass, Normica V2000, WinXP Prof., AMD Athlon 64 X2, 2GB, NVIDIA GeForce 7600GS, HP1055CM

erstellt am: 18. Okt. 2007 10: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 Vanaxel 10 Unities + Antwort hilfreich

Servus Van!

Ich hab's mir nochmal angeschaut, hatte gestern Abend leider keinen debugger.
Für dg=dk gibt's beim arctan eine Division durch 0, ich hab da mal ein if eingebaut für den Fall diff=0. Jetzt müßte es richtig laufen.

Ciao Georg


(DEFUN sqr (x)
(* x x)

(DEFUN tan (x)
  (/ (SIN x) (COS x))


(DEFUN c:rabzw ( /
dg
dk
a
pkt
rw
hw
diff
l
v
beta
y
gamma
delta
epsilon
p2
p3
p21
p22
p23
p24
riwi
)

(SETVAR "OSMODE" 0) ;Danke an Markus!!
(SETQ dg (GETREAL "\ngroßer Durchmesser: "))
(SETQ dk (GETREAL "\nkleiner Durchmesser: "))
(SETQ a (GETREAL "\nAbgang: "))
(SETQ pkt (GETPOINT "\nEinfügepunkt"))
(SETQ rw (CAR pkt) hw (CADR pkt))
(SETQ diff (/ (- dg dk) 2.0))      
(COND
   ((<= dg 250) (SETQ l 500))
   ((AND (> dg 250) (<= dg 450)) (SETQ l 700))
   ((> dg 450) (SETQ l 1000))
)
(SETQ v (SQRT (+ (sqr l) (sqr (/ (- dg dk)  l)))))
(SETQ y (/ l v))   ; sin 90 = 1
(IF (EQUAL diff 0.0 0.000001)    ;<-------- geändert -----------
   (SETQ beta (/ PI 2.0)) 
   (SETQ beta (ATAN (/ y (SQRT (- 1 (sqr y))))))

(SETQ gamma (- beta (/ PI 4.0)))
(SETQ delta (- (/ PI 2.0) gamma))
(SETQ epsilon (/ (* a (SIN gamma)) (SIN delta)))
(SETQ p2 (LIST (+ rw dg) (+ hw 0)))
(SETQ p3 (LIST (+ rw diff dk) (+ hw l)))
(COMMAND "_line" pkt p2 p3 (LIST (+ rw diff) (+ hw l)) "_c")
(SETQ riwi (ANGLE p2 p3))
(SETQ p21 (POLAR p2 riwi (SQRT (+ (SQR 50) (SQR (/ 50 (TAN (- (ANGLE p2 p3) PI))))))))
(SETQ riwi (/ (* 3 PI) 4))
(SETQ epsilon (+ epsilon 50)) 
(SETQ p22 (POLAR p21 riwi a))
(SETQ riwi (- riwi (/ PI 2.0))) 
(SETQ p23 (POLAR p22 riwi epsilon))
(SETQ riwi (- riwi (/ PI 2.0))) 
(SETQ p24 (POLAR p23 riwi a)) 
(COMMAND "_line" p21 p22 p23 p24 "_c")

------------------
http://www.xx-tausend.info

[Diese Nachricht wurde von gmk am 18. Okt. 2007 editiert.]

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

Vanaxel
Mitglied
Anlagen-Planer


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

Beiträge: 23
Registriert: 24.05.2007

AutoCAD Architecture 2008 deutsch, WinXP SP2

erstellt am: 22. Okt. 2007 08: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

was soll ich sagen, VIELEN TAUSEND DANK, es funktioniert prima. Jetzt kann mich mein Cheff mal mit seinen Abzweigern 

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