problem with creating buttons and toolbar

Hi
i have problem with creating new buttons 
below two function i use 
functions sometimes works, sometimes not, then bricscad returns 
error : Automation Error 80020009; [IAcadToolbars] Error accessing [ADD] method. ErrIndex=0;
i dont know why, is seems hazard but maybe there is a reason why those function returns error

tested on V12, V13, V14 (same results)
 
[code]
(defun AddButtons (tgname button_lst / Toolbar newToolbarButton) ; tgname - toolbar group name button_lst - list of buttons
;;;; Createas buttons in toolbar group
;;;; example 
; (AddButtons 
; "DJTT"
; (list "Apps"
; (list
; (list 
; "app12" ;name
; "(load(findfile \"app12.LSP\"))" ;command
; (strcat main_cad_folder "Icony\\" "KalkulatorTMZ.bmp") ;path to icon
; (strcat main_cad_folder "Icony\\" "KalkulatorTMZ.bmp") ;path to icon
; "This button ..." ; help text 
; )
; )
; )
; )
(setq Toolbar nil)
(vlax-for n (vla-get-toolbars (vla-item (vla-get-menuGroups (vlax-get-acad-object)) tgname))
(if (= (vla-get-name n) (car button_lst))
(setq Toolbar n)
)
)
(if (not Toolbar)(setq Toolbar (vla-add (vla-get-toolbars (vla-item (vla-get-menuGroups (vlax-get-acad-object)) tgname)) (car button_lst)))) ; tworzy nowy toolbar
(foreach button (nth 1 button_lst)
(progn
(print (nth 0 button))
(setq newToolbarButton
(vla-addToolbarButton
Toolbar
(1+ (vla-get-count Toolbar))
(nth 0 button) (nth 0 button) (nth 1 button) ; name and command
)
)
(setq SmallBitmapName (nth 2 button)) ; path to icon
(setq LargeBitmapName (nth 2 button))  
(vla-setBitmaps newToolbarButton SmallBitmapName LargeBitmapName)
(vla-put-helpString newToolbarButton (nth 3 button)) ; help
)
)
;; re-compile the tgname menu, this part doesn't work on bricscad 
; (vla-save (vla-item (vla-get-menuGroups (vlax-get-acad-object)) tgname) acMenuFileCompiled)
; save it as a MNS file
; (vla-save (vla-item (vla-get-menuGroups (vlax-get-acad-object)) tgname) acMenuFileSource)
)
[/code]

[code]
(defun createToolbarGroup (tgname toolbarlist / fn flag) ;(createToolbarGroup "DJTT" '("Aplikacje" "Narzędzia"))
;;;; Createas toolbar Group
;;;; example (createToolbarGroup "DJTT" '("Apps"))
(setq flag nil)
(if (not (findfile (strcat tgname ".mns")))
(progn
 (setq fn (open (strcat main_cad_folder tgname ".mns") "w"))
 (close fn)
)
)
(vlax-for n (vla-get-menuGroups (vlax-get-acad-object))
(if (= (vla-get-name n) tgname)
 (setq flag T)
)
(terpri)
(princ (vla-get-name n))
)
(if (null flag)
(vla-load (vla-get-menuGroups (vlax-get-acad-object)) (strcat tgname ".mns"))
)
(foreach tb toolbarlist
(vla-add (vla-get-toolbars (vla-item (vla-get-menuGroups (vlax-get-acad-object)) tgname)) tb)
)
)
[/code]

Comments

This discussion has been closed.