 - (defun XD::Menu:AddPopUp
- (name lst / insertitem gemenubar menubar curmenu)
- (defun insertitem (curmenu lst / k tmp x j)
- (setq k (vla-get-count curmenu)
- j k
- )
- (mapcar
- '(lambda (x / label cmdstr)
- (setq label (car x)
- cmdstr (cadr x)
- cmdstr (strcat "\003\003\_"
- (xdrx-string-trimright
- (xdrx-string-trimleft
- (xdrx-string-regexpr "^[\003]+" cmdstr "")
- "_"
- )
- " "
- )
- )
- )
- (cond
- ((or (xdrx-string-regexps "^[ -]+" label) (= label ""))
- (vla-addseparator curmenu (1+ j))
- )
- ((= (type cmdstr) 'str)
- (vla-addmenuitem
- curmenu
- (1+ (vla-get-count curmenu))
- label
- (strcat cmdstr (chr 32))
- )
- )
- ((listp cmdstr)
- (insertitem (vla-addsubmenu curmenu (1+ j) label) cmdstr)
- )
- )
- (setq j (1+ j))
- )
- lst
- )
- )
- (defun getmenubar (str / curmenu menubar)
- (setq menubar (vla-get-menubar (vlax-get-acad-object)))
- (vlax-for menu menubar
- (if (= (vla-get-name menu) str)
- (setq curmenu menu)
- )
- )
- curmenu
- )
- (setq menubar (vla-get-menubar (vlax-get-acad-object))
- curmenu (getmenubar name)
- )
- (if (equal nil curmenu)
- (progn (setq curmenu
- (vla-add
- (vla-get-menus
- (vla-item (vla-get-menugroups (vlax-get-acad-object))
- 0
- )
- )
- name
- )
- )
- (vla-insertinmenubar curmenu (1+ (vla-get-count menubar)))
- )
- )
- (insertitem curmenu lst)
- )
你看看,哪里需要改
|