Guten Morgen,
ich hatte eine Idee und dachte ich mach das mal schnell :-(
Leider funktioniert das nicht wie erhofft.
Ich verwende gerne Langlöcher mit mittigem zusätzlichem Kreis. Hier lassen sich Verbindungs- & Formelemente sehr einfach mittig positionieren.
Das wollte ich nun etwas komfortabler in ein Tool packen.
Geht alles soweit. Ich prüfe noch ob das gewählte Teil ein Blechmaterial hat. Wenn ja verwende ich die Blechdicke als Parameter für das lineare Ziehen, wenn nein stanze ich das Ganze.
Das Ganze funktioniert bei Teilen ohne Blechmaterial, bei Teilen mit Blechmaterial nur wenn das Teil aktiv ist ???
Wenn das Blechteil nicht aktiv ist kommt immer die Meldung "Es wurden nicht alle Eingaben gemacht."??
Code:
(in-package :SCHILLER)
(use-package :Oli)
(sd-hide-console-window)
(sd-show-console-window)
;(setf si::*enter-break-handler* t)
(SETQ OffSet 0.2)
(SETQ Dicke nil)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(sd-defdialog 'SD_TEST_5
:Dialog-title "SD_TEST_5"
:toolbox-button T
:variables
'(
(Teil
:value-type :Part
:title "Teil"
:next-variable 'Startpunkt
);;Teil
(AEbene
:value-type :wp
:title "Arbeitsebene"
:initial-value (sd-inq-curr-wp)
:next-variable 'Startpunkt
);;AEbene
(Startpunkt :value-type :Point-2d
:title "Startpunkt"
:next-variable 'Endpunkt
);Startpunkt
(Endpunkt :value-type :Point-2d
:title "Endpunkt"
:after-input (progn
(doit)
);;progn
;:next-varable 'Startpunkt ;;GEHT NICHT???????
);Endpunkt
("Parameter")
(Breite :value-type :length
:title "Schlitzbreite"
:Proposals (4.5 5.5 6.6 9 12 14)
:initial-value 6.6
);Breite
(Laenge :value-type :length
:title "Schlitzlaenge"
:Proposals (4 5 6 8 10 12 15)
:initial-value 6
);Laenge
);variables
:Ok-action '(doit)
:local-functions
'(
(doit ()
(let (StartP-X StartP-Y EndP-X EndP-Y MittelP)
(setq
StartP-X (gpnt2d_x Startpunkt) ;auslesen der X/Y Werte der Punkte
StartP-Y (gpnt2d_y Startpunkt) ;auslesen der X/Y Werte der Punkte
EndP-X (gpnt2d_x Endpunkt ) ;auslesen der X/Y Werte der Punkte
EndP-Y (gpnt2d_y Endpunkt ) ;auslesen der X/Y Werte der Punkte
MittelP (make-gpnt2d :x (/ (+ StartP-X EndP-X) 2) :y (/ (+ StartP-Y EndP-Y) 2))
);;setq
(sd-call-cmds (2dCopilot :slot_mode :real_geometry Startpunkt Endpunkt Breite))
(sd-call-cmds (2dCopilot :circle_mode :real_geometry MittelP (+ Breite OffSet)))
(if (sd-inq-part-sheet-metal-material Teil) ;;fragt das Blechmaterial ab - wenn kein Blech dann NIL
;;then - also wenn es ein Teil mit Blechmaterial ist
(progn
(Display "1")
(setq Dicke (first (last (sd-inq-part-sheet-metal-material Teil))))
(sd-call-cmds
(pull :linear_pull
:sel_part Teil
:selection_focus_profiles
:Distance Dicke
:wp AEbene
:Operation :REMOVE_MATERIAL
:Direction :BOTH_SIDES
:keep_wp :no
);;pull
);;sd-call-cmds
);;progn
;Else - wenn kein Blechmaterial gefunden wurde >> Stanzen
(progn
(Display "2")
(sd-call-cmds
(punch_stamp :Punch
:wp AEbene
:Parts Teil
:keep_wp :no
);;punch
);;sd-call-cmds
);;progn
):if
);let
);doit
);local
);SD_TEST_5
Hat jemand eine Idee was hier schief läuft?
Die Variable Laenge wird hier nicht gebraucht. Mein Ziel ist es das Ganze durch klicken der Mitte und festlegen der Richtung zu erzeugen. Hab hier aber noch nicht so richtig den Ansatz.
Lässt sich sowas auch mit dem 2D-Copilot realisieren? Ich arbeite eigentlich gerne damit und finde die "relative Meßgröße" (Taste R) eine wirklich brauchbare Sache...
------------------
...viele Grüße
Stephan
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP