gcho 发表于 2017-11-14 09:44:00

鼠标双击反应器调用面板,对话框太大无法在屏幕上显示,求解!

本帖最后由 gcho 于 2017-11-14 20:11 编辑

鼠标双击反应器调用面板,对话框太大无法在屏幕上显示(有时候又能正常显示),求解!



代码如下:
;; 双击反应器
(if (not *dblclkReactor*);;0 = 打开反应器
(setq *dblclkReactor*(VLR-Mouse-Reactor nil'((:VLR-beginDoubleClick . dblclkedit)))))

(defun dblclkedit(reactorObject point)
(if dblclk-edit(dblclk-edit point))
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;



;; 自定义双击反应器Double Click Reactor
(defun dblclk-edit (dblclk_point / owner dblclk_etype p)
(setq owner (nentselp (setq p (trans (car dblclk_point) 0 1))));;指定点来选择对象
(if (and (= owner nil) (= 0 (getvar 'cmdactive))) ;_有活动命令时不起作用
      (vla-sendcommand (vla-get-activedocument(vlax-get-acad-object)) (strcat (rtos (car p) 2 3) "," (rtos (cadr p) 2 3) " fg "))
)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;面板内容
;修改版,向飞诗学习
(defun c:fg ()
(mai_make_panel
    (list   
      (list "画图类"
      (list "智能阵列(DFF)" "DFF")   
      (list "线型换向(HX)" "HX")
      (list "实体对齐(ALO)" "ALO")
      (list "画辅助线(FZ)" "FZ")
      (list "连续拉伸(LXS)" "LXS")      
      ) ;_ 结束list
      (list "修改类"
      (list "隐藏对象(YC)" "YC")
      (list "显隐对象(XY)" "XY")
      (list "材料替换(TTH)" "TTH")
      (list "插入符号(CRFH)" "CRFH")
      (list "相同刷子(XTS)" "XTS")
      ) ;_ 结束list
      (list "标注类"
         (list "连续标注(WW)" "WW")
      (list "增补标注(WWS)" "WWS")
      (list "图名比例(BL)" "BL")      
      (list "坡度标注(SS)" "SS")      
      (list "辅助标注(FB)" "FB")
      
      ) ;_ 结束list
      (list "比例类"
      (list "比例绘图(A)" "A")
      (list "尺寸绘图(AAA)" "AAA")
      (list "放大对象(FD)" "DYT")
      (list "动态字高(DTZG)" "DTZG")
      (list "标注比例(WWBL)" "WWBL")
      ) ;_ 结束list
      (list "统计类"
      (list "增加编号(JB)" "JB")
      (list "删除编号(SB)" "SB")
      (list "统计文本(TC)" "TC")
      (list "统计面积(TJ)" "TJ")
      (list "查找相同(CHZ)" "CHZ")
      ) ;_ 结束list   
      (list "水工相关"
      (list "水工规范(GF)" "GF")
      (list "水工书籍(GH)" "GH")
      (list "水工软件(RJ)" "RJ")
      (list "查配筋表(PJ)" "PJ")   
      (list "工程资料(GCZL)" "GCZL")
      ) ;_ 结束list
      (list "LSIP学习"
      (list "Lsip查找(CZ)" "CZ")            
      (list "Lsip函数(HS)" "HS")
      (list "Lsip基础(JC)" "JC")
      (list "LsipWrod(JW)" "JW")
      (list "Lsip魔法(MF)" "MF")
      ) ;_ 结束list
      (list "休闲娱乐"
      (list "电子书(DZS)" "DZS")
      (list "小说(初始设置)" "XSSZ")            
      (list "小说(上次位置)" "XSWZ")
      (list "小说(阅读说明)" "YDSM")
      (list "五 子 棋(WZQ)" "WZQ")
      ) ;_ 结束list
      (list "系统设置"
      (list "程序目录(SJ)" "SJ")            
      (list "卸载菜单(XZ)" "XZ")
      (list "重载菜单(ZX)" "ZX")
      (list "遗留问题(YL)" "YL")
      (list "系统变量(XT)" "XT")
      ) ;_ 结束list
      (list "网页浏览"
      (list "明经论坛(MJ)" "MJ")
      (list "ZDM论坛(ZDM)" "ZDM")   
      (list "土木 CAD(TU)" "TU")
      (list "百度查找(BD)" "BD")
      (list "我的淘宝(TAO)" "TAO")   
      ) ;_ 结束list
    ) ;_ 结束list
) ;_ 结束mai_mak_panel
(princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

;面板尺寸
(defun mai_make_panel ( menulist / n num_nobut num_button nn nnn menuname val_lst add_dclrow tt order_lst in num_image)
(defun add_dclrow ( dstr / ) (if dstr (setq val_lst (cons dstr val_lst))))
(setq menuname (strcat (vl-filename-mktemp) "temp_pannel.dcl"))
(add_dclrow "curbutton:button{width=9;vertical_margin=none;vertical_margin=none;}")
(add_dclrow "curimage:image{width=9;height=0.15;vertical_margin=none;vertical_margin=none;}")
(add_dclrow "curpanel:dialog{label=\"GCHO\";alignment=centered;vertical_margin=none;horizontal_margin=none;")
(add_dclrow ":row{")
(setq len (apply 'max (mapcar 'length menulist))
    order_lst (apply 'append (mapcar 'cdr menulist))
    num_button 0
    num_nobut 0
    in 0
    num_image 0
)
(foreach nn menulist
    (setq in 0)
    (add_dclrow (strcat " : boxed_column{label=\"" (car nn) "\";vertical_margin=none; horizontal_margin=none;"))
    (foreach nnn (cdr nn)
      (setq num_button (1+ num_button)
      in (1+ in)
      num_image (1+ num_image)
      tt (car nnn)
      tt (if tt tt "")
      )
      (add_dclrow (strcat ":curbutton{label=\"" tt "\";key=\"but" (itoa num_button) "\";}"))
      (if (= 4 in)
      (progn (add_dclrow (strcat ":curimage{key=\"ima" (itoa num_image) "\";color=18;}"))
          (setq in 0)
      )
      )
    )
    (repeat (- len (length nn))
      (setq num_nobut (1+ num_nobut)
      in (1+ in)
      num_image (1+ num_image)
      )
      (add_dclrow (strcat " : curbutton{key=\"butno" (itoa num_nobut) "\";color=-2;}"))
      (if (= 4 in)
      (progn (add_dclrow (strcat ":curimage{key=\"ima" (itoa num_image) "\";}"))
          (setq in 0)
      )
      )
    )
    (add_dclrow "spacer;}")
)
(add_dclrow "}:button{label=\"关闭\";key=\"cancel\";is_cancel=true;width=10;fixed_width=true;alignment=centered;}}")
(vl-file-delete menuname)
(setq nn (open menuname "w"))
(foreach n (reverse val_lst) (write-line n nn))
(close nn)
(setq nnn (load_dialog menuname))
(if (not (new_dialog "curpanel" nnn)) (exit))
(setq n 0)
(repeat num_nobut (mode_tile (strcat "butno" (itoa num_nobut)) 1) (setq num_nobut (1- num_nobut)))
(foreach nn menulist
    (foreach nnn (cdr nn)
      (setq n (1+ n)
      tt (car nnn)
      tt (if tt tt "")
      )
      (if (= tt "")
      (mode_tile (strcat "but" (itoa n)) 1)
      (action_tile (strcat "but" (itoa n)) (strcat "\(done_dialog " (itoa n) "\)"))
      )
    )
)
(setq nn (start_dialog))
(unload_dialog nnn)
(vl-file-delete menuname)
(if (> nn 0)
    (progn (setq tt (cadr (nth (1- nn) order_lst)))
      (princ "\n")
      (if (= (eval (read (strcat "(type c:" tt ")"))) 'SUBR)
      (eval (read (strcat "(c:" tt ")")))
      (vl-cmdf tt)
      )
    )
)
)
;****************************************************************************
附上原程序:

masterlong 发表于 2017-11-14 12:05:20

原因已经在你的截图上了
还有什么好问的?
调整下你的对话框布置

gcho 发表于 2017-11-14 14:47:25

masterlong 发表于 2017-11-14 12:05
原因已经在你的截图上了
还有什么好问的?
调整下你的对话框布置

但是有时候又是正常的,能正确显示面板,有时候会弹出这个对话框,程序中断!

USER2128 发表于 2017-11-15 08:11:00

将显示器的分辨率调高一些

gcho 发表于 2017-11-15 09:03:14

USER2128 发表于 2017-11-15 08:11
将显示器的分辨率调高一些

显示器的分辨率已是最高了,19寸显示器,最大只能设置1440*900了。

hao3ren 发表于 2017-11-15 10:04:52

修改程序,调整dcl布局

hao3ren 发表于 2017-11-15 10:06:34

http://bbs.mjtd.com/thread-175352-1-1.html不嫌麻烦可以看看我这个

gcho 发表于 2017-11-17 09:08:36

;面板尺寸
这块怎么修改,太复杂了,看不懂了!

xyp1964 发表于 2017-11-17 11:47:28

;; 取消按钮上没用的内容

xyp1964 发表于 2017-11-17 12:47:31



页: [1] 2
查看完整版本: 鼠标双击反应器调用面板,对话框太大无法在屏幕上显示,求解!