找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 18878|回复: 37

[分享] OpenDcl 做的一个非模态-图层控制对话框应用实例

[复制链接]

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-4-20 23:17:33 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 newer 于 2017-6-24 12:40 编辑

这是OpenDcl做的一个非模态图层控制 对话框应用实例!先看演示:
图层工具3.gif
它展示了OpenDcl以下几方面的应用技巧:
1、非模态对话框的自动隐藏和打开
2、图形命令控件的事件响应
3、ListView控件的使用方法
4、提供一个OpenDclVlx.VLX程序,使得你在发布OpenDcl对话框应用程序时,不必顾及用户的系统是否安装了OpenDcl插件,该程序会自动安装AutoCAD相应版本的OpenDcl插件,用户只需将OpenDclVlx.VLX放置在CAD支持目录,并在你的程序里添加如下代码加载之:
  1. (if (findfile "OpenDclVlx.VLX")
  2.   (load        (findfile "OpenDclVlx.VLX")
  3.         "加载OpenDclVlx.VLX失败!"
  4.   )
  5.   (prompt "系统找不到 OpenDclVlx.VLX文件!"
  6.   )
  7. )

然后用如下语句加载OpenDcl:
  1. (gxl-AutoLoadODclArx)

加载OpenDcl对话框用如下函数加载:

  1.   ;;(gxl-Load_ODCL_Project projname reload password alias)
  2.   ;;功能:加载OpenDcl工程
  3.   ;;参数:projname = 工程名称字串(后缀为"*.odcl"、"*.odcl.lsp"或不带后缀)或者OpenDcl工程数据表
  4.   ;;      reload =  T 强制重载工程 or nil 若已加载,则什么也不干
  5.   ;;      password = 设定密码字串 or nil
  6.   ;;      alias = 替代项目关键字 or nil
  7. ;;例如: (gxl-Load_ODCL_Project "LayerOdcl" nil nil nil)

OpenDclVlx.VLX 文件下载
请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:OpenDclVlx.part01.rar 
下载次数:457  文件大小:999 KB 
下载权限: 学生 以上  [免费赚D豆]


请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:OpenDclVlx.part02.rar 
下载次数:492  文件大小:999 KB 
下载权限: 学生 以上  [免费赚D豆]


请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:OpenDclVlx.part03.rar 
下载次数:457  文件大小:999 KB 
下载权限: 学生 以上  [免费赚D豆]


请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:OpenDclVlx.part04.rar 
下载次数:477  文件大小:974.88 KB 
下载权限: 学生 以上  [免费赚D豆]


图层控制源码下载:
请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:LayerOdcl.lsp 
下载次数:365  文件大小:36.27 KB 
下载权限: 学生 以上  [免费赚D豆]


对话框控制代码:
  1. ;;(gxl-AutoLoadODclArx) 自动加载OpenDcl函数
  2. ;; By Gu_xl
  3. (if (findfile "OpenDclVlx.VLX")
  4.   (load        (findfile "OpenDclVlx.VLX")
  5.         "加载OpenDclVlx.VLX失败!"
  6.   )
  7.   (prompt "系统找不到 OpenDclVlx.VLX文件!"
  8.   )
  9. )
  10. ;;图层工具非模态对话框主程序加载   
  11. (defun c:tcc  ()
  12.   ;;自动加载OpenDcl Arx插件
  13.   (gxl-AutoLoadODclArx)
  14.   ;;(gxl-Load_ODCL_Project projname reload password alias)
  15.   ;;功能:加载OpenDcl工程
  16.   ;;参数:projname = 工程名称字串(后缀为"*.odcl"、"*.odcl.lsp"或不带后缀)或者OpenDcl工程数据表
  17.   ;;      reload =  T 强制重载工程 or nil 若已加载,则什么也不干
  18.   ;;      password = 设定密码字串 or nil
  19.   ;;      alias = 替代项目关键字 or nil
  20.   ;; By Gu_xl
  21.   ;(gxl-Load_ODCL_Project "LayerOdcl" nil nil nil) ;_ ODCL文件加载方式
  22.   (gxl-Load_ODCL_Project LayerOdcl nil nil nil) ;_ ODCL数据表加载方式
  23.   (setq *bLayerOdclFlag t)
  24.   (dcl_Form_Show LayerOdcl_Form1)
  25.   (if (not (dcl_Form_IsActive LayerOdcl_Form1))
  26.     (progn
  27.       (dcl_form_show LayerOdcl_Form1)
  28.       
  29.       )
  30.     )
  31.   (princ)
  32.   
  33.   )
  34. ;;初始化对话框
  35. (defun c:LayerOdcl_Form1_OnInitialize (/ POS          COL0WIDTH
  36.                                          COL1WIDTH    COL2WIDTH
  37.                                          COL3WIDTH    LAYERS
  38.                                          )
  39.   (setq pos (getenv "图层工具\\对话框初始位置"))
  40.   (if pos
  41.     (setq pos    (read pos)
  42.           *LayerOdclFormX (car pos)
  43.           *LayerOdclFormY (cadr pos)
  44.           )
  45.     (setq *LayerOdclFormX 100
  46.           *LayerOdclFormY 5
  47.           )
  48.     )
  49.   ;;保存对话框位置
  50.   (setenv "图层工具\\对话框初始位置"
  51.           (strcat "(" (itoa *LayerOdclFormX) " " (itoa *LayerOdclFormY) ")")
  52.           )
  53.   ;;设置对话框位置
  54.   (dcl_Control_SetPos LayerOdcl_Form1 *LayerOdclFormX *LayerOdclFormY 70 25)
  55.   ;;填充对话框
  56.   (LayerOdcl_ListViewFill)
  57.   (princ)

  58.   )
  59. ;;填充 ListView 的图层状态 函数
  60. (defun LayerOdcl_ListViewFill (/ COL0WIDTH COL1WIDTH COL2WIDTH COL3WIDTH
  61.                                  LAYERS)
  62.   (dcl_ListView_Clear LayerOdcl_Form1_ListView1)
  63.   ;;填充ListView 图层列表
  64.   ;; calculate the required column widths
  65.   (setq Col0Width (dcl_ListView_CalcColWidth
  66.                     LayerOdcl_Form1_ListView1
  67.                     "图 层 名 称     "
  68.                     )
  69.         Col1Width (dcl_ListView_CalcColWidth
  70.                     LayerOdcl_Form1_ListView1
  71.                     "开       "
  72.                     )
  73.         Col2Width (dcl_ListView_CalcColWidth
  74.                     LayerOdcl_Form1_ListView1
  75.                     "冻结     "
  76.                     )
  77.         Col3Width (dcl_ListView_CalcColWidth
  78.                     LayerOdcl_Form1_ListView1
  79.                     "锁       "
  80.                     )
  81.         )
  82.   ;; add columns of the calculated widths
  83.   (if (< (dcl_ListView_GetColumnCount LayerOdcl_Form1_ListView1) 4)
  84.   (dcl_ListView_AddColumns
  85.     LayerOdcl_Form1_ListView1
  86.     (list (list "图 层 名 称" 0 Col0Width)
  87.           (list "开  " 1 Col1Width)
  88.           (list "冻结" 1 Col2Width)
  89.           (list "锁  " 1 Col3Width)
  90.           )
  91.     )
  92.     )
  93.   (vlax-for la (vla-get-layers
  94.                  (vla-get-ActiveDocument (vlax-get-acad-object))
  95.                  )
  96.     (setq layers
  97.            (cons
  98.              (list (vla-get-name la) ;_ 图层名称
  99.                    ""
  100.                    (if (= (vla-get-layeron la) :vlax-true)
  101.                      0 ;_ 开
  102.                      1 ;_ 关
  103.                      ) ;_ 图层开关状态
  104.                    ""
  105.                    (if (= (vla-get-Freeze la) :vlax-true)
  106.                      3 ;_ 冻结
  107.                      2 ;_ 解冻
  108.                      ) ;_ 图层冻结状态
  109.                    ""
  110.                    (if (= (vla-get-lock la) :vlax-true)
  111.                      5 ;_ 锁定
  112.                      4 ;_ 解锁
  113.                      ) ;_ 图层锁定状态
  114.                    )
  115.              layers
  116.              )
  117.           )
  118.     )
  119.   (setq *LayerOdclState ;_ 保存图层状态
  120.          (vl-sort layers
  121.                   '(lambda (a b)
  122.                      (< (car a) (car b))
  123.                      )
  124.                   )
  125.         )
  126.   ;;填充ListView
  127.   (dcl_ListView_FillList LayerOdcl_Form1_ListView1 *LayerOdclState)
  128.   )
  129. ;;多文档切换,重新填充ListView
  130. (defun c:LayerOdcl_Form1_OnDocActivated (/ )
  131.   (LayerOdcl_ListViewFill)
  132. )

  133. ;;窗口移动记录窗口位置
  134. (defun c:LayerOdcl_Form1_OnMove (NewX NewY / pos)
  135.   (if (not *bLayerOdclFlag)
  136.     (progn
  137.       (setq pos (dcl_Control_GetPos LayerOdcl_Form1))
  138.       (setq *LayerOdclFormX (car pos)
  139.             *LayerOdclFormY (cadr pos))
  140.       (setenv "图层工具\\对话框初始位置"
  141.               (strcat "(" (itoa *LayerOdclFormX) " " (itoa *LayerOdclFormY) ")"))
  142.       (princ)
  143.       )
  144.     (setq *bLayerOdclFlag nil)
  145.     )
  146.   
  147. )

  148. ;;关闭窗口
  149. (defun c:LayerOdcl_Form1_TextButton1_OnClicked (/)
  150.   (dcl_Form_close LayerOdcl_Form1)
  151.   ;;释放变量内存
  152.   (foreach a '(*LayerOdclFormX *LayerOdclFormY *LayerOdclState *bLayerOdclFlag)
  153.     (set a nil)
  154.     )
  155. )

  156. ;;鼠标移入窗口,展开对话框
  157. (defun c:LayerOdcl_Form1_OnMouseEntered        (/)
  158.   (vl-bb-set '*LayerOdclFormExtend* t)
  159.   (LayerOdcl_ListViewFill)
  160.   (if (null *LayerOdclFormX)
  161.     (progn
  162.       (setq pos (getenv "图层工具\\对话框初始位置"))
  163.       (if pos
  164.         (setq pos (read pos)
  165.               *LayerOdclFormX
  166.                (car pos)
  167.               *LayerOdclFormY
  168.                (cadr pos)
  169.         )
  170.         (setq *LayerOdclFormX 100
  171.               *LayerOdclFormY 5
  172.         )
  173.       )
  174.     )
  175.   )
  176.   (dcl_Control_SetPos
  177.     LayerOdcl_Form1 *LayerOdclFormX *LayerOdclFormY 512        240)
  178.   (princ)
  179. )
  180. ;;自动隐藏对话框函数
  181. (defun c:AutoHideLayerOdclForm (/ scr)
  182.   (if (not (vl-bb-ref '*LayerOdclFormExtend*))
  183.     (progn
  184.       ;(setq scr (dcl_getscreensize))
  185.       (dcl_Control_SetPos LayerOdcl_Form1 *LayerOdclFormX *LayerOdclFormY 70 25)
  186.       )
  187.     )
  188.   (princ)
  189.   )
  190. ;;立即隐藏对话框函数
  191. (defun c:HideLayerOdclForm ()
  192.   (vl-bb-set '*LayerOdclFormExtend* nil)
  193.   (dcl_Control_SetPos LayerOdcl_Form1 *LayerOdclFormX *LayerOdclFormY 70 25)
  194.   )
  195. ;;鼠标离开对话框,则800毫秒后隐藏对话框
  196. (defun c:LayerOdcl_Form1_OnMouseMovedOff (/ )
  197.   (vl-bb-set '*LayerOdclFormExtend* nil)
  198.   (dcl_delayedinvoke 800 "c:AutoHideLayerOdclForm") ;_ 延迟800毫秒隐藏对话框
  199.   (princ)
  200. )
  201. ;;**************以下是对话框个命令按钮事件代码*******************************
  202. ;;关闭选择层
  203. (defun c:LayerOdcl_Form1_GraphicButton1_OnClicked (/ e a)
  204.   (c:HideLayerOdclForm) ;_ 隐藏对话框
  205.   (while
  206.     (progn
  207.       (setvar "ErrNo" 0)
  208.       (setq a "\n")
  209.       (while (and (null
  210.                     (setq e (entsel (strcat a "选择要关闭图层的对象:")))
  211.                     )
  212.                   (= 7 (getvar "ErrNo"))
  213.                   )
  214.         (setq a "")
  215.         (princ "\n**未选中任何对象**请重新")
  216.        )
  217.       e
  218.       )
  219.      (vla-put-layeron
  220.        (vla-item (vla-get-layers
  221.                    (vla-get-ActiveDocument (vlax-get-acad-object))
  222.                    )
  223.                  (cdr (assoc 8 (entget (car e))))
  224.                  )
  225.        :vlax-false
  226.        )
  227.      )

  228.   (princ)
  229.   )

  230. ;;关闭选择外图层
  231. (defun c:LayerOdcl_Form1_GraphicButton2_OnClicked (/ ss n la layers objlayers)
  232.   (c:HideLayerOdclForm) ;_ 隐藏对话框
  233.   (if (setq ss (ssget))
  234.     (progn
  235.       (repeat (setq n (sslength ss))
  236.         (if (not (member (setq la
  237.                                 (cdr (assoc 8 (entget (ssname ss (setq n (1- n))))))
  238.                                )
  239.                          layers
  240.                          )
  241.                  )
  242.           (setq layers (cons la layers))
  243.           )
  244.         )
  245.       (setq
  246.         objlayers (vla-get-layers
  247.                     (vla-get-ActiveDocument (vlax-get-acad-object))
  248.                     )
  249.         )
  250.       (vlax-for a objlayers
  251.         (if (not (member (vla-get-name a) layers))
  252.           (vla-put-layeron a :vlax-false)
  253.           )
  254.         )
  255.       )
  256.     )
  257.   )
  258. ;;关闭当前外层
  259. (defun c:LayerOdcl_Form1_GraphicButton3_OnClicked (/ cla)
  260.   (c:HideLayerOdclForm) ;_ 隐藏对话框
  261.   (setq cla (getvar 'clayer))
  262.   (vlax-for a (vla-get-layers
  263.                     (vla-get-ActiveDocument (vlax-get-acad-object))
  264.                     )
  265.     (if (/= cla (vla-get-name a))
  266.       (vla-put-layeron a :vlax-false)
  267.       (vla-put-layeron a :vlax-true)
  268.       )
  269.     )
  270. )

  271. ;;显示所有层
  272. (defun c:LayerOdcl_Form1_GraphicButton4_OnClicked (/)
  273.   (c:HideLayerOdclForm) ;_ 隐藏对话框
  274.   (vlax-for a (vla-get-layers
  275.                     (vla-get-ActiveDocument (vlax-get-acad-object))
  276.                     )
  277.     (vla-put-layeron a :vlax-true)
  278.     )
  279. )

  280. ;;锁定选择层
  281. (defun c:LayerOdcl_Form1_GraphicButton5_OnClicked (/ a e)
  282.     (c:HideLayerOdclForm) ;_ 隐藏对话框
  283.   (while
  284.     (progn
  285.       (setvar "ErrNo" 0)
  286.       (setq a "\n")
  287.       (while (and (null
  288.                     (setq e (entsel (strcat a "选择要锁定图层的对象:")))
  289.                     )
  290.                   (= 7 (getvar "ErrNo"))
  291.                   )
  292.         (setq a "")
  293.         (princ "\n**未选中任何对象**请重新")
  294.        )
  295.       e
  296.       )
  297.      (vla-put-lock
  298.        (vla-item (vla-get-layers
  299.                    (vla-get-ActiveDocument (vlax-get-acad-object))
  300.                    )
  301.                  (cdr (assoc 8 (entget (car e))))
  302.                  )
  303.        :vlax-true
  304.        )
  305.      )

  306. )

  307. ;;锁定选择外图层
  308. (defun c:LayerOdcl_Form1_GraphicButton6_OnClicked (/ SS N LA LAYERS OBJLAYERS)
  309.     (c:HideLayerOdclForm) ;_ 隐藏对话框
  310.   (if (setq ss (ssget))
  311.     (progn
  312.       (repeat (setq n (sslength ss))
  313.         (if (not (member (setq la
  314.                                 (cdr (assoc 8 (entget (ssname ss (setq n (1- n))))))
  315.                                )
  316.                          layers
  317.                          )
  318.                  )
  319.           (setq layers (cons la layers))
  320.           )
  321.         )
  322.       (setq
  323.         objlayers (vla-get-layers
  324.                     (vla-get-ActiveDocument (vlax-get-acad-object))
  325.                     )
  326.         )
  327.       (vlax-for a objlayers
  328.         (if (not (member (vla-get-name a) layers))
  329.           (vla-put-lock a :vlax-true)
  330.           )
  331.         )
  332.       )
  333.     )
  334. )

  335. ;;锁定当前外图层
  336. (defun c:LayerOdcl_Form1_GraphicButton7_OnClicked (/ cla)
  337.     (c:HideLayerOdclForm) ;_ 隐藏对话框
  338.   (setq cla (getvar 'clayer))
  339.   (vlax-for a (vla-get-layers
  340.                     (vla-get-ActiveDocument (vlax-get-acad-object))
  341.                     )
  342.     (if (/= cla (vla-get-name a))
  343.       (vla-put-lock a :vlax-true)
  344.       (vla-put-lock a :vlax-false)
  345.       )
  346.     )

  347. )

  348. ;;解锁选择层
  349. (defun c:LayerOdcl_Form1_GraphicButton8_OnClicked
  350.        (/ SS LAYERS N LA OBJLAYERS)
  351.   (c:HideLayerOdclForm) ;_ 隐藏对话框
  352.   (while (setq ss (ssget))
  353.     (setq layers nil)
  354.     (repeat (setq n (sslength ss))
  355.       (if (not (member (setq la
  356.                               (cdr (assoc 8 (entget (ssname ss (setq n (1- n))))))
  357.                              )
  358.                        layers
  359.                        )
  360.                )
  361.         (setq layers (cons la layers))
  362.         )
  363.       )
  364.     (setq
  365.       objlayers (vla-get-layers
  366.                   (vla-get-ActiveDocument (vlax-get-acad-object))
  367.                   )
  368.       )
  369.     (foreach a layers
  370.       (vla-put-lock (vla-item objlayers a) :vlax-false)
  371.       )
  372.     )
  373.   )




  374. ;;解锁全部图层
  375. (defun c:LayerOdcl_Form1_GraphicButton9_OnClicked ()
  376.     (c:HideLayerOdclForm) ;_ 隐藏对话框
  377.   (vlax-for a (vla-get-layers
  378.                     (vla-get-ActiveDocument (vlax-get-acad-object))
  379.                     )
  380.     (vla-put-lock a :vlax-false)
  381.     )

  382. )

  383. ;;冻结选择图层
  384. (defun c:LayerOdcl_Form1_GraphicButton10_OnClicked (/ SS LAYERS N LA OBJLAYERS cla)
  385.     (c:HideLayerOdclForm) ;_ 隐藏对话框
  386.   (setq cla (getvar 'clayer))
  387.   (while (setq ss (ssget))
  388.     (setq layers nil)
  389.     (repeat (setq n (sslength ss))
  390.       (if (and
  391.             (not (member (setq la
  392.                               (cdr (assoc 8 (entget (ssname ss (setq n (1- n))))))
  393.                              )
  394.                        layers
  395.                        )
  396.                )
  397.             (/= cla la)
  398.             )
  399.         (setq layers (cons la layers))
  400.         )
  401.       )
  402.     (setq
  403.       objlayers (vla-get-layers
  404.                   (vla-get-ActiveDocument (vlax-get-acad-object))
  405.                   )
  406.       )
  407.     (foreach a layers
  408.       (vla-put-Freeze (vla-item objlayers a) :vlax-true)
  409.       )
  410.     )

  411. )

  412. ;;冻结选择外图层
  413. (defun c:LayerOdcl_Form1_GraphicButton11_OnClicked (/ SS LAYERS N LA OBJLAYERS cla)
  414.   (c:HideLayerOdclForm) ;_ 隐藏对话框
  415.   (setq cla (getvar 'clayer))
  416.   (while (setq ss (ssget))
  417.     (setq layers nil)
  418.     (repeat (setq n (sslength ss))
  419.       (if (not (member (setq la
  420.                                 (cdr (assoc 8 (entget (ssname ss (setq n (1- n))))))
  421.                                )
  422.                          layers
  423.                          )
  424.                  )
  425.         (setq layers (cons la layers))
  426.         )
  427.       )
  428.     (setq
  429.       objlayers (vla-get-layers
  430.                   (vla-get-ActiveDocument (vlax-get-acad-object))
  431.                   )
  432.       )
  433.     (setq layers (cons cla layers))
  434.     (vlax-for a objlayers
  435.       (if (not (member (vla-get-name a) layers))
  436.         (vla-put-Freeze a :vlax-true)
  437.         )
  438.       )
  439.     )

  440.   )



  441. ;;冻结当前外图层
  442. (defun c:LayerOdcl_Form1_GraphicButton12_OnClicked (/ cla)
  443.   (c:HideLayerOdclForm) ;_ 隐藏对话框
  444.   (setq cla (getvar 'clayer))
  445.   (vlax-for a (vla-get-layers
  446.                     (vla-get-ActiveDocument (vlax-get-acad-object))
  447.                     )
  448.     (if (/= cla (vla-get-name a))
  449.       (vla-put-Freeze a :vlax-true)
  450.       )
  451.     )
  452. )

  453. ;;显示解锁解冻所有
  454. (defun c:LayerOdcl_Form1_GraphicButton13_OnClicked (/ cla doc)
  455.   (c:HideLayerOdclForm) ;_ 隐藏对话框
  456.   (setq cla (getvar 'clayer))
  457.   (vlax-for a
  458.             (vla-get-layers
  459.               (setq doc (vla-get-ActiveDocument (vlax-get-acad-object)))
  460.               )
  461.     (vla-put-layeron a :vlax-true)
  462.     (vla-put-lock a :vlax-false)
  463.     (if (/= cla (vla-get-name a))
  464.       (vla-put-Freeze a :vlax-false)
  465.       )
  466.     )
  467.   (vla-regen doc :vlax-true)
  468.   )
  469. ;;对象图层匹配
  470. (defun c:LayerOdcl_Form1_GraphicButton14_OnClicked (/ execute s)
  471.   (defun execute (SS / E KD CLA N LA DOC)
  472.     (initget "Type")
  473.     (setq e (entsel "\n选择目标图层的对象或键入图层名称[Type-it]:"))
  474.     (cond
  475.       ((null e)
  476.        (initget "Yes No")
  477.        (setq
  478.          kd (getkword "\n没有选择任何对象,使用当前层吗[Yes/No]<Yes>")
  479.          )
  480.        (if (= "No" kd)
  481.          (execute ss)
  482.          (progn
  483.            (setq cla (getvar 'clayer))
  484.            (sssetfirst nil ss)
  485.            ;;改变图层,不能直接用Command命令
  486.            (dcl_sendstring (strcat (VL-PRIN1-TO-STRING (list 'command "chprop" "p" "" "la" cla "")) "\n"))
  487.            )
  488.          )
  489.        )
  490.       ((= "Type" e)
  491.        (while
  492.          (= ""
  493.             (setq la (VL-STRING-TRIM " " (getstring "\n键入图层名称:")))
  494.             )
  495.          )
  496.        (if (VL-CATCH-ALL-ERROR-P
  497.              (VL-CATCH-ALL-APPLY
  498.                'vla-item
  499.                (list
  500.                  (vla-get-layers
  501.                    (setq doc (vla-get-ActiveDocument
  502.                                (vlax-get-acad-object)
  503.                                )
  504.                          )
  505.                    )
  506.                  la
  507.                  )
  508.                )
  509.              )
  510.          (progn
  511.            (initget "Yes No")
  512.            (setq kd
  513.                   (getkword "\n输入图层不存在,要创建它吗?[Yes/No]<Yes>")
  514.                  )
  515.            (if (= kd "No")
  516.              (execute ss)
  517.              (progn
  518.                (vla-add (vla-get-layers (vla-get-ActiveDocument (vlax-get-acad-object))) la)
  519.                (sssetfirst nil ss)
  520.              (dcl_sendstring (strcat (VL-PRIN1-TO-STRING (list 'command "chprop" "p" "" "la" la "")) "\n"))
  521.              )
  522.              )
  523.            )
  524.          (progn
  525.            (sssetfirst nil ss)
  526.            (dcl_sendstring (strcat (VL-PRIN1-TO-STRING (list 'command "chprop" "p" "" "la" la "")) "\n"))
  527.            )
  528.          )
  529.        )
  530.       (t
  531.        (setq e (car e))
  532.        (gxl-matchProp e ss)
  533.        )
  534.       )
  535.     (princ)
  536.     )
  537.   (c:HideLayerOdclForm) ;_ 隐藏对话框
  538.   (princ "\n选择要改变的对象:")
  539.   (setq s (ssget))
  540.   (execute s)
  541.   (princ)
  542.   )



  543. ;;移动对象至当前层
  544. (defun c:LayerOdcl_Form1_GraphicButton15_OnClicked (/ ss la)
  545.   (c:HideLayerOdclForm) ;_ 隐藏对话框
  546.   (if (setq ss (ssget ":L"))
  547.     (progn
  548.       (setq la (getvar 'clayer))
  549.       (sssetfirst nil ss)
  550.       (dcl_sendstring (strcat (VL-PRIN1-TO-STRING (list 'command "chprop" "p" "" "la" la "")) "\n"))
  551.       )
  552.     )
  553.   (princ)
  554. )

  555. ;;隔离对象所在图层
  556. (defun c:LayerOdcl_Form1_GraphicButton16_OnClicked (/ ss n la a layers)
  557.   (c:HideLayerOdclForm) ;_ 隐藏对话框
  558.   (if (setq ss (ssget ":L"))
  559.     (progn
  560.       (repeat (setq n (sslength ss))
  561.         (if
  562.           (not
  563.             (member
  564.               (setq
  565.                 a (cdr (assoc 8 (entget (ssname ss (setq n (1- n))))))
  566.               )
  567.               layers
  568.             )
  569.           )
  570.            (setq layers (cons a layers))
  571.         )
  572.       )
  573.       (vlax-for        la (vla-get-layers
  574.                      (vla-get-ActiveDocument (vlax-get-acad-object))
  575.                    )
  576.         (if (not (member (vla-get-name la) layers))
  577.           (vla-put-lock la :vlax-true)
  578.         )
  579.       )
  580.     )
  581.   )
  582. )
  583. ;;改层复制
  584. (defun c:LayerOdcl_Form1_GraphicButton17_OnClicked (/ CopyObj)
  585.   (defun CopyObj (SS / E KD CLA ENDENT P1 P2 O LA DOC)
  586.     (initget "Type")
  587.     (setq e (entsel "\n选择目标图层的对象或键入图层名称[Type-it]:"))
  588.     (cond
  589.       ((null e)
  590.        (initget "Yes No")
  591.        (setq
  592.          kd (getkword "\n没有选择任何对象,使用当前层吗[Yes/No]<Yes>")
  593.        )
  594.        (if (= "No" kd)
  595.          (CopyObj ss)
  596.          (progn
  597.            (setq cla (getvar 'clayer))
  598.            (setq p1 (getpoint "\n复制基点:"))
  599.            (cond
  600.              ((null p1)
  601.               (sssetfirst nil ss)
  602.               (dcl_sendstring
  603.                 (strcat        (VL-PRIN1-TO-STRING
  604.                           (list 'command "copy" "p" "" "@" "@")
  605.                         )
  606.                         "\n"
  607.                 )
  608.               )
  609.              )
  610.              (p1
  611.               (setq p2 (getpoint p1 "\n复制位置点:"))
  612.               (setq ss (GXL-SEL-SS->VLA ss))
  613.               (if p2
  614.                 (progn
  615.                   (setq        p1 (vlax-3d-point p1)
  616.                         p2 (vlax-3d-point p2)
  617.                   )
  618.                   (foreach a ss
  619.                     (setq o (vla-copy a))
  620.                     (vla-move o p1 p2)
  621.                     (vla-put-layer o cla)
  622.                   )
  623.                 )
  624.                 (progn
  625.                   (setq        p1 (vlax-3d-point '(0 0 0))
  626.                         p2 (vlax-3d-point '(0 0 0))
  627.                   )
  628.                   (foreach a ss
  629.                     (setq o (vla-copy a))
  630.                     (vla-move o p1 p2)
  631.                     (vla-put-layer o cla)
  632.                   )
  633.                 )
  634.               )
  635.              )
  636.            )
  637.          )
  638.        )
  639.       )
  640.       ((= "Type" e)
  641.        (while
  642.          (= ""
  643.             (setq la (VL-STRING-TRIM " " (getstring "\n键入图层名称:")))
  644.          )
  645.        )
  646.        (if (VL-CATCH-ALL-ERROR-P
  647.              (VL-CATCH-ALL-APPLY
  648.                'vla-item
  649.                (list
  650.                  (vla-get-layers
  651.                    (setq doc (vla-get-ActiveDocument
  652.                                (vlax-get-acad-object)
  653.                              )
  654.                    )
  655.                  )
  656.                  la
  657.                )
  658.              )
  659.            )
  660.          (progn
  661.            (initget "Yes No")
  662.            (setq kd
  663.                   (getkword "\n输入图层不存在,要创建它吗?[Yes/No]<Yes>")
  664.            )
  665.            (if (= kd "No")
  666.              (CopyObj ss)
  667.              (progn
  668.                (vla-add        (vla-get-layers
  669.                           (vla-get-ActiveDocument (vlax-get-acad-object))
  670.                         )
  671.                         la
  672.                )
  673.                (setq p1 (getpoint "\n复制基点:"))
  674.                (cond
  675.                  ((null p1)
  676.                   (sssetfirst nil ss)
  677.                   (dcl_sendstring
  678.                     (strcat (VL-PRIN1-TO-STRING
  679.                               (list 'command "copy" "p" "" "@" "@")
  680.                             )
  681.                             "\n"
  682.                     )
  683.                   )
  684.                  )
  685.                  (p1
  686.                   (setq p2 (getpoint p1 "\n复制位置点:"))
  687.                   (setq ss (GXL-SEL-SS->VLA ss))
  688.                   (if p2
  689.                     (progn
  690.                       (setq p1 (vlax-3d-point p1)
  691.                             p2 (vlax-3d-point p2)
  692.                       )
  693.                       (foreach a ss
  694.                         (setq o (vla-copy a))
  695.                         (vla-move o p1 p2)
  696.                         (vla-put-layer o la)
  697.                       )
  698.                     )
  699.                     (progn
  700.                       (setq p1 (vlax-3d-point '(0 0 0))
  701.                             p2 (vlax-3d-point '(0 0 0))
  702.                       )
  703.                       (foreach a ss
  704.                         (setq o (vla-copy a))
  705.                         (vla-move o p1 p2)
  706.                         (vla-put-layer o la)
  707.                       )
  708.                     )
  709.                   )
  710.                  )
  711.                )
  712.              )
  713.            )
  714.          )
  715.          (progn
  716.            (setq p1 (getpoint "\n复制基点:"))
  717.            (cond
  718.              ((null p1)
  719.               (sssetfirst nil ss)
  720.               (dcl_sendstring
  721.                 (strcat        (VL-PRIN1-TO-STRING
  722.                           (list 'command "copy" "p" "" "@" "@")
  723.                         )
  724.                         "\n"
  725.                 )
  726.               )
  727.              )
  728.              (p1
  729.               (setq p2 (getpoint p1 "\n复制位置点:"))
  730.               (setq ss (GXL-SEL-SS->VLA ss))
  731.               (if p2
  732.                 (progn
  733.                   (setq        p1 (vlax-3d-point p1)
  734.                         p2 (vlax-3d-point p2)
  735.                   )
  736.                   (foreach a ss
  737.                     (setq o (vla-copy a))
  738.                     (vla-move o p1 p2)
  739.                     (vla-put-layer o la)
  740.                   )
  741.                 )
  742.                 (progn
  743.                   (setq        p1 (vlax-3d-point '(0 0 0))
  744.                         p2 (vlax-3d-point '(0 0 0))
  745.                   )
  746.                   (foreach a ss
  747.                     (setq o (vla-copy a))
  748.                     (vla-move o p1 p2)
  749.                     (vla-put-layer o la)
  750.                   )
  751.                 )
  752.               )
  753.              )
  754.            )
  755.          )
  756.        )
  757.       )
  758.       (t
  759.        (setq la (cdr (assoc 8 (entget (car e)))))
  760.        (setq p1 (getpoint "\n复制基点:"))
  761.        (cond
  762.          ((null p1)
  763.           (sssetfirst nil ss)
  764.           (dcl_sendstring
  765.             (strcat
  766.               (VL-PRIN1-TO-STRING (list 'command "copy" "p" "" "@" "@"))
  767.               "\n"
  768.             )
  769.           )
  770.          )
  771.          (p1
  772.           (setq p2 (getpoint p1 "\n复制位置点:"))
  773.           (setq ss (GXL-SEL-SS->VLA ss))
  774.           (if p2
  775.             (progn
  776.               (setq p1 (vlax-3d-point p1)
  777.                     p2 (vlax-3d-point p2)
  778.               )
  779.               (foreach a ss
  780.                 (setq o (vla-copy a))
  781.                 (vla-move o p1 p2)
  782.                 (vla-put-layer o la)
  783.               )
  784.             )
  785.             (progn
  786.               (setq p1 (vlax-3d-point '(0 0 0))
  787.                     p2 (vlax-3d-point '(0 0 0))
  788.               )
  789.               (foreach a ss
  790.                 (setq o (vla-copy a))
  791.                 (vla-move o p1 p2)
  792.                 (vla-put-layer o la)
  793.               )
  794.             )
  795.           )
  796.          )
  797.        )

  798.       )
  799.     )
  800.     (princ)
  801.   )
  802.   (c:HideLayerOdclForm) ;_ 隐藏对话框
  803.   (if (setq ss (ssget ":L"))
  804.     (CopyObj ss)
  805.   )

  806. )


  807. ;;图层列表点击事件,响应修改图层状态
  808. (defun c:LayerOdcl_Form1_ListView1_OnClicked
  809.        (Row Column / layers l la objlay selectitems)
  810.   (setq        layers (vla-get-layers
  811.                  (vla-get-ActiveDocument (vlax-get-acad-object))
  812.                )
  813.   )
  814.   (if (> Column 0)
  815.     (progn
  816.       (setq l  (nth Row *LayerOdclState)
  817.             la (car l)
  818.       )
  819.       (cond ((= 1 Column) ;_ 点击开
  820.              (setq objlay (vla-item layers la))
  821.              (if (= :vlax-true (vla-get-layeron objlay))
  822.                (progn
  823.                  (vla-put-layeron objlay :vlax-false)
  824.                  (dcl_ListView_SetItemImage
  825.                    LayerOdcl_Form1_ListView1
  826.                    Row
  827.                    Column
  828.                    1
  829.                  )
  830.                )
  831.                (progn
  832.                  (vla-put-layeron objlay :vlax-true)
  833.                  (dcl_ListView_SetItemImage
  834.                    LayerOdcl_Form1_ListView1
  835.                    Row
  836.                    Column
  837.                    0
  838.                  )
  839.                )
  840.              )
  841.             )
  842.             ((= 2 Column) ;_ 点冻结
  843.               (if (/= la (getvar 'clayer))
  844.                 (progn
  845.                   (setq objlay (vla-item layers la))
  846.                   (if (= :vlax-true (vla-get-Freeze objlay))
  847.                     (progn
  848.                       (vla-put-Freeze objlay :vlax-false)
  849.                       (dcl_ListView_SetItemImage
  850.                         LayerOdcl_Form1_ListView1
  851.                         Row
  852.                         Column
  853.                         2
  854.                       )
  855.                     )
  856.                     (progn
  857.                       (vla-put-Freeze objlay :vlax-true)
  858.                       (dcl_ListView_SetItemImage
  859.                         LayerOdcl_Form1_ListView1
  860.                         Row
  861.                         Column
  862.                         3
  863.                       )
  864.                     )
  865.                   )
  866.                 )
  867.               )
  868.             )
  869.             ((= 3 Column) ;_ 点锁定
  870.               (setq objlay (vla-item layers la))
  871.               (if (= :vlax-true (vla-get-lock objlay))
  872.                 (progn
  873.                   (vla-put-lock objlay :vlax-false)
  874.                   (dcl_ListView_SetItemImage
  875.                     LayerOdcl_Form1_ListView1
  876.                     Row
  877.                     Column
  878.                     4
  879.                   )
  880.                 )
  881.                 (progn
  882.                   (vla-put-lock objlay :vlax-true)
  883.                   (dcl_ListView_SetItemImage
  884.                     LayerOdcl_Form1_ListView1
  885.                     Row
  886.                     Column
  887.                     5
  888.                   )
  889.                 )
  890.               )
  891.             )
  892.       )
  893.     )
  894.   )
  895. )
  896. ;;列表修改图层名称后的响应
  897. (defun c:LayerOdcl_Form1_ListView1_OnEndLabelEdit (NewValue ItemIndex /)
  898.   (setq        layers (vla-get-layers
  899.                  (vla-get-ActiveDocument (vlax-get-acad-object))
  900.                )
  901.         l      (nth ItemIndex *LayerOdclState)
  902.         la     (car l)
  903.   )
  904.   (setq *LayerOdclState (subst (cons NewValue (cdr l)) l *LayerOdclState))
  905.   (vla-put-name (vla-item layers la) NewValue)
  906. )
  907. ;;点击标题
  908. (defun c:LayerOdcl_Form1_ListView1_OnColumnClick (Column / layers state state icon Row cla)
  909.   (cond
  910.     ((= 1 Column) ;_ 图层开关列
  911.       (if (= :vlax-true
  912.              (vla-get-layeron
  913.                (vla-item (setq layers
  914.                                 (vla-get-layers
  915.                                   (vla-get-ActiveDocument (vlax-get-acad-object))
  916.                                 )
  917.                          )
  918.                          (caar *LayerOdclState)
  919.                )
  920.              )
  921.           )
  922.         (setq state :vlax-false
  923.               icon  1
  924.         )
  925.         (setq state :vlax-true
  926.               icon  0
  927.         )
  928.       )
  929.       (setq Row 0)
  930.       (setq *LayerOdclState
  931.              (mapcar
  932.                (function
  933.                  (lambda (x)
  934.                    (vla-put-layeron (vla-item layers (car x)) state) ;_ 修改图层状态
  935.                    (dcl_ListView_SetItemImage
  936.                      LayerOdcl_Form1_ListView1
  937.                      Row
  938.                      Column
  939.                      icon
  940.                    ) ;_ 修改状态图标
  941.                    (setq Row (1+ Row)) ;_ 步进
  942.                    (append (list (car x) "" icon) (cdddr x)) ;_ 更新 *LayerOdclState
  943.                  )
  944.                )
  945.                *LayerOdclState
  946.              )
  947.       )
  948.     )
  949.     ((= 2 Column) ;_ 图层冻结列
  950.       (if (= :vlax-true
  951.              (vla-get-Freeze
  952.                (vla-item (setq layers
  953.                                 (vla-get-layers
  954.                                   (vla-get-ActiveDocument (vlax-get-acad-object))
  955.                                 )
  956.                          )
  957.                          (caar *LayerOdclState)
  958.                )
  959.              )
  960.           )
  961.         (setq state :vlax-false
  962.               icon  2
  963.         )
  964.         (setq state :vlax-true
  965.               icon  3
  966.         )
  967.       )
  968.       (setq Row        0
  969.             cla        (getvar 'clayer)
  970.       )
  971.       (setq *LayerOdclState
  972.              (mapcar
  973.                (function
  974.                  (lambda (x)
  975.                    (if (/= cla (car x))
  976.                      (progn
  977.                        (vla-put-Freeze (vla-item layers (car x)) state) ;_ 修改图层状态
  978.                        (dcl_ListView_SetItemImage
  979.                          LayerOdcl_Form1_ListView1
  980.                          Row
  981.                          Column
  982.                          icon
  983.                        ) ;_ 修改状态图标
  984.                        (setq Row (1+ Row)) ;_ 步进
  985.                        (list (nth 0 x)
  986.                              (nth 1 x)
  987.                              (nth 2 x)
  988.                              (nth 3 x)
  989.                              icon
  990.                              (nth 5 x)
  991.                              (nth 6 x)
  992.                        ) ;_ 更新 *LayerOdclState
  993.                      )
  994.                      x
  995.                    )
  996.                  )
  997.                )
  998.                *LayerOdclState
  999.              )
  1000.       )
  1001.     )
  1002.     ((= 3 Column) ;_ 图层锁定列
  1003.       (if (= :vlax-true
  1004.              (vla-get-lock
  1005.                (vla-item (setq layers
  1006.                                 (vla-get-layers
  1007.                                   (vla-get-ActiveDocument (vlax-get-acad-object))
  1008.                                 )
  1009.                          )
  1010.                          (caar *LayerOdclState)
  1011.                )
  1012.              )
  1013.           )
  1014.         (setq state :vlax-false
  1015.               icon  4
  1016.         )
  1017.         (setq state :vlax-true
  1018.               icon  5
  1019.         )
  1020.       )
  1021.       (setq Row 0)
  1022.       (setq *LayerOdclState
  1023.              (mapcar
  1024.                (function
  1025.                  (lambda (x)
  1026.                    (vla-put-lock (vla-item layers (car x)) state) ;_ 修改图层状态
  1027.                    (dcl_ListView_SetItemImage
  1028.                      LayerOdcl_Form1_ListView1
  1029.                      Row
  1030.                      Column
  1031.                      icon
  1032.                    ) ;_ 修改状态图标
  1033.                    (setq Row (1+ Row)) ;_ 步进
  1034.                    (list (nth 0 x) (nth 1 x) (nth 2 x)
  1035.                          (nth 3 x) (nth 4 x)  (nth 5 x) icon) ;_ 更新 *LayerOdclState
  1036.                  )
  1037.                )
  1038.                *LayerOdclState
  1039.              )
  1040.       )
  1041.     )
  1042.     )
  1043. )

程序使用方法:
将OpenDclVlx.VLX 复制到CAD支持目录,然后加载LayerOdcl.lsp文件即可!启动命令:tcc !为了保证多文档打开时程序自动加载,请将LayerOdcl.lsp 添加到启动组或将如下语句添加到acad.lsp中去:(load "layerodcl.lsp") !





评分

参与人数 1威望 +3 D豆 +10 贡献 +3 收起 理由
XDSoft + 3 + 10 + 3 很给力!经验;技术要点;资料分享奖!

查看全部评分

本帖被以下淘专辑推荐:

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 344个

财富等级: 日进斗金

 楼主| 发表于 2013-4-23 09:47:38 | 显示全部楼层
自动隐藏非模态对话框程序设计时几点提示说明:

1、请将对话框和按钮的Event Invoke的属性设置为 0 ,同步方式,并且在按钮命令事件函数中不能用command 命令方式执行Lisp语句,只能用dcl_sendstring函数来执行command命令,否则会出现command命令无效提示。

2、如果非模态对话框按钮的Event Invoke的属性设置为1 ,异步方式执行,则在按钮命令事件函数中可以使用command 命令方式执行Lisp语句,但是在本例中,因鼠标离开对话框窗口时,在OnMouseMovedOff事件中,会延迟800毫秒执行函数c:AutoHideLayerOdclForm隐藏对话框,因而导致重复进入Lisp的错误提示!为避免此种情况,本例的Event Invoke的属性设置为 0 ,按钮事件函数中一律避免使用command函数命令。

大家可以自己尝试修改下Event Invoke属性和命令的执行方式,自己体会一下其中的奥妙!

请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:LayerOdcl.odcl 
下载次数:158  文件大小:4.47 KB 
下载权限: 学生 以上  [免费赚D豆]

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 2 反对 0

使用道具 举报

发表于 2013-6-28 18:05:36 | 显示全部楼层
LayerOdcl.odcl ,裡面主題[圖層工具]是簡體字為什麼不能改成中文字
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

发表于 2013-6-16 22:22:36 | 显示全部楼层
为什么 加载运行命令之后 鼠标会静止,再点一下屏幕,才恢复正常。。  (我是模仿代码自己做的一个工具,代码完全一样啊,不知道错在哪?)。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

发表于 2013-6-16 16:41:51 | 显示全部楼层
本帖最后由 owen7 于 2013-6-16 19:25 编辑

谢谢,最重要的是 自动隐藏,自动显示。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

已领礼包: 308个

财富等级: 日进斗金

发表于 2013-4-24 11:12:04 | 显示全部楼层
呵呵,OpenDclVlx.VLX 文件好大,:lol
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

已领礼包: 308个

财富等级: 日进斗金

发表于 2013-4-24 09:55:18 | 显示全部楼层
非模态,很有诱惑力,有时间也学习下,二进制读写也很给力
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-4-23 21:29:36 | 显示全部楼层

你说的这个就不是ODCL范畴的了,修改下LISP程序就能做到。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

已领礼包: 814个

财富等级: 财运亨通

发表于 2013-4-23 21:28:19 | 显示全部楼层
非常棒的程序和操作体验,图层选择的时候如果可以穿透图块,取到图块内的图层就更好了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 0 反对 1

使用道具 举报

发表于 2013-4-23 13:10:41 | 显示全部楼层
SmartStar 发表于 2013-4-23 12:38
真给力!OpenDclVlx.VLX是把相应文件转化成二进制文件打包,用的时候在通过二进制转换生成相应的文件吧?

正确的说法是将二进制文件转为文本文件打包,使用时再将文本文件转换为二进制文件还原!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 0 反对 1

使用道具 举报

已领礼包: 188个

财富等级: 日进斗金

发表于 2013-4-23 12:38:14 | 显示全部楼层
真给力!OpenDclVlx.VLX是把相应文件转化成二进制文件打包,用的时候在通过二进制转换生成相应的文件吧?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-4-21 01:24:51 | 显示全部楼层
给G版个建议,演示时候把图形放大些,能说明问题的大小就OK了,把对话框放的大一些。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

 楼主| 发表于 2013-4-21 07:45:55 | 显示全部楼层
本帖最后由 牢固 于 2013-4-21 07:54 编辑
XDSoft 发表于 2013-4-21 01:24
给G版个建议,演示时候把图形放大些,能说明问题的大小就OK了,把对话框放的大一些。

本身做的Gif是挺大的,也足够清楚,传上来后,可能自动被压缩到适合网页大小了,所以不太清楚!看来做图片还需要考虑网页显示的大小问题!
现在将显示图片缩小了,看起来好多了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-4-21 14:16:48 | 显示全部楼层
牢固 发表于 2013-4-21 07:45
本身做的Gif是挺大的,也足够清楚,传上来后,可能自动被压缩到适合网页大小了,所以不太清楚!看来做图片 ...

老G,考虑考虑我推荐的 Adobe Captivate 做演示吧,我是用了一次就上手了,很好学,也可以加入文字等说明,想加入你磁性的声音也可以啊。

点评

版主,哪里可以下载 Adobe Captivate 我下的几个都不行,能给个网址?谢谢!  详情 回复 发表于 2014-2-4 11:15
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

 楼主| 发表于 2013-4-21 17:34:32 | 显示全部楼层
本帖最后由 牢固 于 2013-4-21 17:36 编辑
XDSoft 发表于 2013-4-21 14:16
老G,考虑考虑我推荐的 Adobe Captivate 做演示吧,我是用了一次就上手了,很好学,也可以加入文字等说明 ...

Adobe Captivate 这款软件个头也太大了吧!我发现有一款软件叫做ViewletCam 2.0 的动画录屏软件,个头还不到5M,可以录swf,可以录声音,可以录AVI,也可以录Gif,还可以加文字注释,功能挺全的!另外你把上传文件的大小不超过1M的限制取消了吧,一个动画很容易就超过1M了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-5-15 09:25 , Processed in 0.543953 second(s), 70 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表