CADsite forum

AutoCAD => Autolisp => Topic gestart door: Lyrix op ma 26 04 2010, 12:38:27

Titel: Staalprofiel 3d (dwarsprofielen)
Bericht door: Lyrix op ma 26 04 2010, 12:38:27
Ik heb al eens gemeld dat ik met een 3d staalprofiel lisp bezig was.
Heb ook eens hier tips gevraagd ivm probleempjes.
Het project heeft een tijdje stil gelegen maar ben er nu weer mee begonnen.
Ik heb nu de warmgewalste profielen klaar en wilde jullie uiteraard laten zien wat het geworden is.

Deze lips bevat de volgende profielen, HEA, HEB, HEM, INP, IPE, UNP, hoek profiel gelijkzijdig en ongelijkzijdig, t profiel gelijk en ongelijkzijdig.

De koud gewalste en getrokken profielen moet ik nog verder uitwerken, dus deze zitten nog niet verwerkt in deze lisp.

Bijgaand in de zip vind je alle bestanden die je nodig hebt om het aan de gang te krijgen.
Alles in een mapje zetten, deze map toevoegen in je search path.
Menu inladen en het moet allemaal werken.

Uiteraard is deze lisp ook als 2d te gebruiken.

Op of aanmerkingen, tips suggesties, ik hoor ze graag!

(https://cadsite.be/smf/proxy.php?request=http%3A%2F%2Fwww.down-under.biz%2Fnews%2Fstaalprofiel.bmp&hash=b7b7f495b627f240b5289c5731c1035edc597dec)

Titel: Re:Staalprofiel 3d
Bericht door: roy_043 op ma 26 04 2010, 16:15:01
:vreegoe: Goed dat je het programma hebt afgemaakt.
:vreegoe: Fijn dat je het met de rest van het forum wil delen.
:vreegoe: Het progamma werkt ook op Bricscad 10.

Maar...
1. De gebruiker kan op OK klikken zonder een keuze te maken.
2. Je schakelt de osmode uit voordat de gebruiker een punt heeft aangegeven, dat is te vroeg.
3. Als de gebruiker op Cancel klikt dan wordt er ook een profiel getekend.

De code is moeilijk leesbaar, maar om de OK-knop te schakelen tussen enabled en disabled kun je het volgende doen:

Vervang dit:
(defun reset()
  (set_tile "ip" " ")
  (set_tile "value" (rtos 1)) ; deze tile ontbreekt
)
Door dit:
(defun reset (str modeAccept)
  (set_tile "ip" str)
  (mode_tile "accept" modeAccept)
)

Vervang overal dit:
(action_tile "staalprofiel" "(reset)") ; deze tile ontbreekt
Door dit:
(reset "" 1)

Vervang overal dit:
(set_tile "ip" ip)
Door dit:
(reset ip 0)
Titel: Re:Staalprofiel 3d
Bericht door: Lyrix op ma 26 04 2010, 16:33:33
Roy,

Tnx voor de feedback.
Je hebt gelijk wat betreft de OSMODE.
Dit zal ik oplossen.
Wat betreft je verhaal op cancel, klopt ook. Was bij mij nog niet opgevallen omdat ik na cancel rechtermuis klik, dan tekend ie geen profiel.
Jouw oplossing is prima. Ik zal dit verwerken.

TNX!
Titel: Re:Staalprofiel 3d
Bericht door: Atwist op ma 26 04 2010, 21:15:31
Beste Lyrix,

Ik heb geprobeerd om de lisp te starten maar dat lukte niet

Staalprofiel.lsp geladen

Gestart met staalprofiel

Maar helaas er gebeurt niets.
Titel: Re:Staalprofiel 3d
Bericht door: roy_043 op ma 26 04 2010, 22:20:46
Atwist, welke (fout-)melding krijg je? En heb je hieraan gedacht?:
Citaat van: Lyrix op ma 26 04 2010, 12:38:27deze map toevoegen in je search path.
Titel: Re:Staalprofiel 3d
Bericht door: Atwist op ma 26 04 2010, 22:33:06
Hallo Roy,

Heb de map map ook toegevoegd aan het zoekpad.

Als ik het programma start krijg ik geen foutmelding type staalprofiel in en mijn commando regel blijft leeg.

Atwist
Titel: Re:Staalprofiel 3d
Bericht door: roy_043 op ma 26 04 2010, 22:49:13
Staat de map lokaal of op het netwerk?
Titel: Re:Staalprofiel 3d
Bericht door: Lyrix op ma 26 04 2010, 23:01:02
Je probeert waarschijnlijk de lisp te laden en te gebruiken zonder de toolbar. Je moet de toolbar inladen via het commando menuload. Dan het bestand staalprofiel.mns selecteren. Dan load klikken. Nu verschijnt warm staalprofiel toolbar. Als je op 1 van de knopjes drukt laad de lisp vanzelf incl de gekozen optie. Dit kan ook zonder de toolbar maar dan moet je weten wat de opties zijn. Laad de lisp maar. Typ staalprofielen, enter, de regel blijft leeg zoal je zegt. Tik nu hea en enter. Dan verschijnt ook het staalprofiel dcl menu. Via de toolbar hoef je niet steeds het commando in te tikken. Dat zit verwerkt in de knoppen.  Via het netwerk werkt het ook prima. Ik draai alles op het netwerk. Dat je geen foutmelding krijg is een teken dat ie het doet. Je moet em zoals gezegd via de toolbar gebruiken. Ik heb de regel met opties uit gezet juist omdat dit overbodig is als je de toolbar inlaad en gebruikt. Toolbars maken het leven zoveel gemakkelijker. :)  
Titel: Re:Staalprofiel 3d
Bericht door: julien op di 27 04 2010, 09:47:27
Dank je wel om dit te delen!
Mag ik deze lisp ook hier plaatsen:
http://www.cadsite.be/lisp/download/
?
Titel: Re:Staalprofiel 3d
Bericht door: Lyrix op di 27 04 2010, 18:56:06
Julien, uiteraard mag je de lisp hier op het forum plaatsen.
Alleen je kan beter even wachten tot deze compleet is.
Zoals ik zei, de koud en getrokken profielen ben ik nu aan het uitwerken.
Ook had roy nog goede kritiek punten die ik zeker wil verbeteren.
Zodra de aangepaste complete versie er is mag je em zeker plaatsen in de download sectie.

Atwist, is het nog gelukt om de toolbar geladen te krijgen?

Titel: Re:Staalprofiel 3d
Bericht door: Lyrix op wo 28 04 2010, 14:57:00
Citaat van: roy_043 op ma 26 04 2010, 16:15:01

Vervang dit:
(defun reset()
 (set_tile "ip" " ")
 (set_tile "value" (rtos 1)) ; deze tile ontbreekt
)
Door dit:
(defun reset (str modeAccept)
 (set_tile "ip" str)
 (mode_tile "accept" modeAccept)
)

Vervang overal dit:
(action_tile "staalprofiel" "(reset)") ; deze tile ontbreekt
Door dit:
(reset "" 1)

Vervang overal dit:
(set_tile "ip" ip)
Door dit:
(reset ip 0)

Roy, ik kom niet helemaal uit jou aanwijzingen.
Het eerste deel is duidelijk.
Het tweede stukje moet ik dan alleen in de regel (action_tile "staalprofiel" "(reset)") het stukje (reset) vervangen voor (reset "" 1)?
Het derde stukje snap ik ook niet, ik zie namelijk nergens dit stukje (set_tile "ip" ip) waarvan je zegt dat ik dat moet vervangen.

Om 1 deel te pakken:

(defun reset (str modeAccept)
     (set_tile "ip" str)
     (mode_tile "accept" modeAccept)
)

(defun heaprofiel ()
   (setq convert_card (load_dialog "staalprofiel.dcl"))
   (if (not (new_dialog "staalprofiel" convert_card)) (exit))
   (action_tile "staalprofiel" "(reset "" 1)") ;       (reset) vervangen voor (reset "" 1)  
   (action_tile "accept" "(done_dialog) (setq userclick T)")
   (action_tile "cancel" "(done_dialog) (setq userclick nil)")
   (start_image "logo")
   (setq xx (dimx_tile "logo"))
   (setq yy (dimy_tile "logo"))
   (fill_image 0 0 xx yy -15)
   (slide_image 0 0 xx yy "logo")
   (end_image)
   (set_tile "value" (rtos value 2 2))
   (action_tile "value" "(setq value (distof $value))")
   (action_tile "close" "(clos_e) (setq xyz (done_dialog))")
   (start_list "input_list")
   (mapcar 'add_list in_list_HEA)
   (end_list)
   (action_tile "input_list" "(setq ip_no (atoi $value)) (do_set_ip_HEA)")
   (start_image "img")
   (setq xx (dimx_tile "img"))
   (setq yy (dimy_tile "img"))
   (fill_image 0 0 xx yy -15)
   (slide_image 0 0 xx yy "hea")
   (end_image)
   (start_dialog)      
   (unload_dialog convert_card)
   (setq pt1 (getpoint "\nGeef invoegpunt: "))
   (setq ds1 (sqrt (* lne lne 2.0)))
   (setq hk2 (+ hk1 (* 0.25 pi)))
   (setq hk3 (+ hk1 (* 0.5 pi)))
   (setq hk4 (+ hk1 (* 0.75 pi)))
   (setq pt2 (polar pt1 hk1 (/ lnb -2.0)))
   (setq pt3 (polar pt2 hk1 lnb))
   (setq pt4 (polar pt3 hk3 lnd))
   (setq pt5 (polar pt4 hk1 (+ (/ (- lnc lnb) 2.0) lne)))
   (setq pt6 (polar pt5 hk4 ds1))
   (setq pt7 (polar pt6 hk3 (- lna (* 2 (+ lnd lne)))))
   (setq pt8 (polar pt7 hk2 ds1))
   (setq pt9 (polar pt8 hk1 (- (/ (- lnb lnc) 2.0) lne)))
   (setq pt10 (polar pt9 hk3 lnd))
   (setq pt11 (polar pt10 hk1 (* -1.0 lnb)))
   (setq pt12 (polar pt11 hk3 (* -1.0 lnd)))
   (setq pt13 (polar pt12 hk1 (- (/ (- lnb lnc) 2.0) lne)))
   (setq pt14 (polar pt13 hk4 (* -1.0 ds1)))
   (setq pt15 (polar pt14 (+ pi hk3) (- lna (* 2 (+ lnd lne)))))
   (setq pt16 (polar pt15 hk2 (* -1.0 ds1)))
   (setq pt17 (polar pt16 hk1 (+ (/ (- lnc lnb) 2.0) lne)))
   (command "pline" pt2 "w" "0.0" "0.0" pt3 pt4 pt5 "a" pt6 "l" pt7 "a" pt8 "l" pt9 pt10 pt11 pt12 pt13 "a" pt14 "l" pt15 "a" pt16 "l" pt17 "cl")
   (command "region" "l" "")
   (command "extrude" "l" "")
   (setvar "osmode" OS)
)

Titel: Re:Staalprofiel 3d
Bericht door: roy_043 op wo 28 04 2010, 16:57:26
2.
In jouw programma staat nu 11x deze regel:
(action_tile "staalprofiel" "(reset)")
Omdat de tile "staalprofiel" ontbreekt in de dialoog "doet" deze regel nooit iets.
Deze regel moet je 11x helemaal vervangen door:
(reset "" 1)
De functie reset wordt hierdoor automatisch aangeroepen en de "accept" tile wordt ge-disabled.

3.
Dit tekstfragment komt 323x voor (dus hoezo "ik zie nergens..." :D):
(set_tile "ip" ip)
Precies dit tekstfragment moet je steeds vervangen door dit:
(reset ip 0)
Bijvoorbeeld:
Regel 151 oud:
( (= ip_no 0)  (setq ip "HEA 100" lna 96.00 lnb 100.00 lnc 5.00 lnd 8.00 lne 12.00 hk1 0)   (set_tile "ip" ip)  )

Regel 151 nieuw:
( (= ip_no 0)  (setq ip "HEA 100" lna 96.00 lnb 100.00 lnc 5.00 lnd 8.00 lne 12.00 hk1 0)   (reset ip 0)  )
Titel: Re:Staalprofiel 3d
Bericht door: Lyrix op do 29 04 2010, 08:00:45
Roy, GEWELDIG! Het werkt perfekt. De knop wordt nu pas aktief als je een maat geselecteerd hebt.


Titel: Re:Staalprofiel 3d
Bericht door: Lyrix op wo 22 09 2010, 16:55:54
Bijgaand de laatste versie voor de warmgewalste profielen.
Door mijn drukke werkzaamheden ben ik nog niet aan de overige profielen toe gekomen.


Installatie is heel eenvoudig. Plaats alles in 1 map ergens op je harde schijf of server.
Voeg deze map in je Support File Search Path toe.

Laad het menu staalprofiel in via het commando load menu.
Als het menu geladen is wordt de lisp automatisch geladen als er een icoon aangeklikt wordt.


Julien je kan deze in de download plaatsen.
Titel: Re:Staalprofiel 3d (dwarsprofielen)
Bericht door: roy_043 op vr 08 10 2010, 09:59:34
@ Lyrix: Er is veel over jouw programma te zeggen. Ik beperk mij hier tot drie kritische opmerkingen. Het zijn dingen die de veel gebruikers zullen storen:
Titel: Re:Staalprofiel 3d (dwarsprofielen)
Bericht door: WebRacer op ma 18 10 2010, 19:47:46
hoi Lyrics

een mooi staaltje van geduld en doorzettingsvermogen.
maar ik kan me vinden in de opmerkingen van Roy_043

vele programmeurs werken ook met error-catch en die komt in combinatie met uw lisp niet goed.

mvg
Olivier

PS ik kijk uit naar een nieuwe versie...
Titel: Re:Staalprofiel 3d (dwarsprofielen)
Bericht door: julien op di 19 10 2010, 08:15:41
Aangezien ik zelf een leek ben op dit vlak moet ik luisteren naar jullie.

Wanneer de kenners deze lisp als 'goed voor gebruik door iedereen' bevinden zal ik dit met veel plezier in de lisp bibliotheek plaatsen.
Titel: Re: Staalprofiel 3d (dwarsprofielen)
Bericht door: Lyrix op do 09 10 2014, 13:25:51
Hallo!

Zo dat is ff een tijdje geleden dat ik hier ben geweest. haha.
Maar Roy, ik begrijp wat je bedoel.
Moet je wel eerlijk zeggen dat ik nooit les gehad heb in Lisp maar me alles Eigen heb gemaakt door op internet dingen te zoeken, tutorials te volgens enz.
Je tips wil ik zeker wel verwerken misschien kun je mij er een beetje bij helpen om het naar de "norm" te maken?