PDA

View Full Version : handy util? make a list of parts starting somewhere in the tree. [LISP]


Harry
07-14-2004, 05:38 AM
A simple util that can be usefull. it makes a list of part names starting from :start



(defun part-tree-in-list (&key start)
;function: collect parts and place in list
;date : 03-05-2004
;----------------------------------------------------------------------
;input : :start [string] , start position
;output: [list] all parts found from start

(progn
;local vars
(let (a_obj_tree a_part_list a_partname_list)

(setf a_part_list (inq-obj-tree-list (sd-pathname-to-obj start) ))
(setf a_part_list
(remove-if
#'(lambda (obj)
(not (equal (sel_item-type obj) *sd-part-seltype*))
);lamba
a_part_list)
)

(dolist (a_part a_part_list)
(progn
(push (sd-inq-obj-pathname a_part) a_partname_list)
);progn
);dolist

;return code
a_partname_list

);let
);prog
);defun


(defun inq-obj-tree-list (obj)
(cons obj
(apply #'nconc (mapcar #'inq-obj-tree-list (sd-inq-obj-children obj)) )
);cons
);defun



best regards Harry