FastFiber

eerste dcl poging

Gestart door julien, wo 14 09 2005, 14:48:52

Vorige topic - Volgende topic

julien

Ik gebruik al een hele tijd:
;*****************************   bm.LSP    *************************
;*   *
;*  julien   02/09/2003           *
;*  Dit routinnetje is geschreven om automatisch verschillende     *
;*  lijnen te verdelen met een vooropgesteld block volgens een     *
;*  vooropgestelde lengte   *
;*  Wens je deze procedure te verdelen?                            *
;*  geen probleem, maar vraag het even: info@cadsite.be            *
;*  Bezoek ook: http://www.cadsite.be                              *
;*  Met dank aan Leon Dooijes!   *
;*********************** HOOFDPROGRAMMA ****************************

(defun C:BM ()
 (if blocknaam
   (setq
     blocknaamHulp
      (getstring
   (strcat "\nVoer de blocknaam in <" blocknaam ">: ")
      )
   )
   (setq blocknaamHulp (getstring "\nVoer de blocknaam in: "))
 )
 (if (not (eq blocknaamHulp ""))
   (setq blocknaam blocknaamHulp)
 )
 (if segmentlengte
   (setq segmentlengteHulp
     (getdist (strcat "\nGeef de segmentlengte: <"
            (rtos segmentlengte)
            ">: "
         )
     )
   )
   (progn (initget 3)
     (setq segmentlengteHulp (getdist "\nGeef de segmentlengte: "))
   )
 )
 (if segmentlengteHulp
   (setq segmentlengte segmentlengteHulp)
 )
 (setq
   lijn
    (entsel
      "\nDuid de lijn aan of druk op ENTER om af te sluiten: "
    )
 )
 (while (/= lijn nill)
   (command "measure" lijn "b" blocknaam "y" segmentlengte)
   (setq
     lijn (entsel
       "\nDuid de lijn aan of druk op ENTER om af te sluiten: "
     )
   )
   (princ)
 )
)

Nu had ik graag gehad dat in de plaats van een blocknaam in te typen dat ik een keuze venster krijg.
Hoe begin ik hier best aan?

WebRacer

even heel vlug gekeken naar uw vraag...
voor de lisp:

;*****************************   bm.LSP    *************************
;*                           *
;*  julien   02/09/2003                          *
;*  Dit routinnetje is geschreven om automatisch verschillende     *
;*  lijnen te verdelen met een vooropgesteld block volgens een     *
;*  vooropgestelde lengte                  *
;*  Wens je deze procedure te verdelen?                            *
;*  geen probleem, maar vraag het even: info@cadsite.be            *
;*  Bezoek ook: http://www.cadsite.be                              *
;*  Met dank aan Leon Dooijes!                  *
;*********************** HOOFDPROGRAMMA ****************************

(defun C:BM ()
 (vl-load-com)
 (setq ok_ "ok")
 (blocks_tot_lijst)
 (setq dia_id (load_dialog "bm"))
 (new_dialog "bm" dia_id)
 (start_list "blk_lst")
 (mapcar 'add_list blk_lst)
 (end_list)
 (start_list "blk_lst")
 (action_tile "blk_lst" "(setq blok (nth (atoi $value) blk_lst))")
 (action_tile "cancel" "(SETQ ok_ nil)")
 (start_dialog)
 (done_dialog)
 (unload_dialog dia_id)
 
 (if (not (eq blok ""))
   (setq blocknaam blok)
 )
 (if segmentlengte
   (setq segmentlengteHulp
     (getdist (strcat "\nGeef de segmentlengte: <"
            (rtos segmentlengte)
            ">: "
         )
     )
   )
   (progn (initget 3)
     (setq segmentlengteHulp (getdist "\nGeef de segmentlengte: "))
   )
 )
 (if segmentlengteHulp
   (setq segmentlengte segmentlengteHulp)
 )
 (setq
   lijn
    (entsel
      "\nDuid de lijn aan of druk op ENTER om af te sluiten: "
    )
 )
 (while (/= lijn nill)
   (command "measure" lijn "b" blocknaam "y" segmentlengte)
   (setq
     lijn (entsel
       "\nDuid de lijn aan of druk op ENTER om af te sluiten: "
     )
   )
   (princ)
 )
)
--------------------------------------------------------------
| maak blokken lijst
--------------------------------------------------------------
(defun blocks_tot_lijst ()
 (setq blk_lst nil)
 (setq blk (tblnext "BLOCK" T))
 (while (/= blk nil)
   (setq blk_lst (append (list (cdr (assoc 2 blk))) blk_lst))
   (setq blk (tblnext "BLOCK"))
 )
 (setq blk_lst (acad_strlsort (reverse blk_lst)))
)


voor de dcl:

bm : dialog { label = "Blocks";
: list_box {
fixed_height = true ;
fixed_width = true ;
key = "blk_lst" ;
label = "Bestaande blocks:" ;
width = 25 ;}
ok_cancel ;
  }


die dan ook bm.dcl moet noemen...
?

julien

Dit werkt perfect!
bedankt.  :pintje:

FastFiber