找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1271|回复: 9

[原创]:大家来讨论一下ObjectDcl的使用,我用OBJECTDCL寫的一個多功能篩選(提供源碼

[复制链接]
发表于 2005-9-22 21:01:39 | 显示全部楼层 |阅读模式

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

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

×
[php]
(defun ObjectDCL_LoadArx ()
   (if (< (atof (getvar "acadver")) 16.0)
   (if (not (member "objectdcl.arx" (arx)))
      (arxload "objectdcl.arx" "ObjectDCL.arx not found.")
   )
   (if (not (member "objectdcl2004.arx" (arx)))
      (arxload "objectdcl2004.arx" "objectdcl2004.arx not found.")
   )
     )
)
(defun c:hy_sm(/ oldcmd oldos layerlist layerthaw layon cord_layer fillayer
               filENT colorlist)
  (vl-load-com)
  (ObjectDCL_LoadArx)
  (setq oldcmd (getvar "cmdecho"))
  (setq oldos (getvar "osmode"))
  (setvar "cmdecho" 0)
  (setvar "osmode" 0)
  (setq layerlist nil layerthaw nil layon nil)
  (setq cord_layer (tblnext "layer" t))
  (while cord_layer
    (setq layerlist (cons (cdr(assoc 2 cord_layer)) layerlist)
          layerthaw (cons (cdr(assoc 70 cord_layer)) layerthaw);;0--thaw 1--froze
           layon (cons (cdr(assoc 62 cord_layer))  layon));;7---on -7---off
    (setq cord_layer (tblnext "layer"))
    )
  (setq layerlist (reverse layerlist)
        layerthaw (reverse layerthaw)
        layon (reverse layon))
(defun c:hysm_DclForm1_OnInitialize (/ i)
   (setq i 0)
   (repeat (length layerlist)
     (Odcl_Grid_AddString hy_sm_hysm_DclForm1_Grid1
                  (strcat (itoa i) "\t" (nth i layerlist)))
     (if (or (= (nth i layerthaw) 1) (< (nth i layon) 0))
       (Odcl_Grid_SetItemCheck hy_sm_hysm_DclForm1_Grid1 i 1 0)
       (Odcl_Grid_SetItemCheck hy_sm_hysm_DclForm1_Grid1 i 1 1)
       )
     (setq i (1+ i))
     )
  (Odcl_Control_SetValue hy_sm_hysm_DclForm1_CheckBox1 t)
  (Odcl_ListBox_AddString hy_sm_hysm_DclForm1_ListBox1 "256   號顏色(隨層)")
  )


(defun c:hysm_DclForm1_TextButton13_OnClicked ()
     (odcl_form_close hy_sm_hysm_DclForm1)
)

(defun c:hysm_DclForm1_TextButton1_OnClicked (/ i)
   (setq i 0)  
   (repeat (length layerlist)
     (Odcl_Grid_SetItemCheck hy_sm_hysm_DclForm1_Grid1 i 1 1)
     (setq i (1+ i))
     )
)

(defun c:hysm_DclForm1_TextButton2_OnClicked (/ i)
     (setq i 0)  
   (repeat (length layerlist)
     (Odcl_Grid_SetItemCheck hy_sm_hysm_DclForm1_Grid1 i 1 0)
     (setq i (1+ i))
     )
)

(defun c:hysm_DclForm1_TextButton7_OnClicked (/ i)
  (setq i 1)
  (repeat 14
    (Odcl_Control_SetValue (eval(read(strcat "hy_sm_hysm_DclForm1_CheckBox" (itoa i)))) t)
    (setq i (1+ i))
  )
  )
(defun c:hysm_DclForm1_TextButton8_OnClicked (/ i)
  (setq i 1)
  (repeat 14
    (Odcl_Control_SetValue (eval(read(strcat "hy_sm_hysm_DclForm1_CheckBox" (itoa i)))) nil)
    (setq i (1+ i))
  )
  )
(defun c:hysm_DclForm1_TextButton3_OnClicked ()
     (Odcl_ListBox_AddString hy_sm_hysm_DclForm1_ListBox1
       (strcat (itoa (acad_colordlg 1)) "   號顏色"))
)

(defun c:hysm_DclForm1_TextButton4_OnClicked ()
     (Odcl_ListBox_DeleteString hy_sm_hysm_DclForm1_ListBox1 (Odcl_ListBox_GetFocusIndex hy_sm_hysm_DclForm1_ListBox1))
)

(defun c:hysm_DclForm1_TextButton5_OnClicked ()
     (Odcl_ListBox_Clear hy_sm_hysm_DclForm1_ListBox1)
)
;;;;;;;;;;;;;;;;;;;;
(defun hy_sm_getlayerinformation(/ i)
  (setq i 0)
  (setq fillayer "")
  (repeat (length layerlist)
    (if (Odcl_Grid_GetItemCheck hy_sm_hysm_DclForm1_Grid1 i 1)
       (setq fillayer (strcat fillayer "," (nth i layerlist)
                            ))
      )
     (setq i (1+ i))
    )
  (setq fillayer (vl-string-right-trim "," fillayer))
  (setq fillayer (vl-string-left-trim "," fillayer))
  )
(defun hy_sm_getentinformation(/ i)
  (setq i 1)
  (setq filENT "")
  (setq entlist '("POINT" "ARC" "LINE" "CIRCLE" "LWPOLYLINE" "TEXT" "DIMENSION" "INSERT"
                  "POLYGON" "MTEXT" "HATCH" "REGION" "ELLIPSE" "SPLINE"))
  (repeat 14
     (if (Odcl_Control_GetValue (eval(read(strcat "hy_sm_hysm_DclForm1_CheckBox" (itoa i)))))
       (SETQ filENT (strcat filENT "," (NTH (- I 1) ENTLIST)))
       )
    (SETQ I (1+ i))
    )
  (setq filENT (vl-string-right-trim "," filent))
  (setq filENT (vl-string-left-trim "," filent))
  )
(defun hy_sm_getcolorinformation(/ i num)
  (setq num (Odcl_ListBox_GetCount hy_sm_hysm_DclForm1_ListBox1))
  (setq colorlist nil)
  (setq i 0)
  (repeat num
    (setq colorlist
           (cons
             (cons 62 (atoi (substr (Odcl_ListBox_GetText hy_sm_hysm_DclForm1_ListBox1 i) 1 3)))
                 colorlist)
          )
    (setq i (1+ i))
    )
  )
;;;;;;;;;
(defun c:hysm_DclForm1_TextButton9_OnClicked (/ ss)
  (hy_sm_do "移動")  
  (if ss (vl-cmdf ".move" ss "" pause pause))
  )


(defun c:hysm_DclForm1_TextButton10_OnClicked ()
  (hy_sm_do "刪除")  
  (if ss (vl-cmdf ".erase" ss ""))
)
(defun c:hysm_DclForm1_TextButton11_OnClicked ()
     (hy_sm_do "復制")
  (if ss
     (vl-cmdf ".copy" ss "" pause pause)
    )
)
(defun hy_sm_do(cmd)
     (hy_sm_getlayerinformation)
     (hy_sm_getentinformation)
     (hy_sm_getcolorinformation)
     (if (not colorlist) (setq colorlist (list '(62 . 256))))
     (odcl_form_close hy_sm_hysm_DclForm1)
     (prompt (strcat "\n請選擇要" cmd "的圖元:"))
     (setq ss (ssget (append (list '(-4 . "<and") (cons 0 filENT) (cons 8 fillayer))
                             (list '(-4 . "<or"))
                             colorlist
                             (list '(-4 . "or>"))
                             (list '(-4 . "and>"))
                             )
                     )
           )
  )
  (odcl_loadproject "hy_sm.odc" t)
  (startapp  "objectdclpromptcancel.exe")
  (odcl_form_show hy_sm_hysm_DclForm1)
  (setvar "cmdecho" oldcmd )
  (setvar "osmode" oldos )
  (prin1)
  )

[/php]
程序為繁體版本
運行需要安裝OBJECTDCL 3.0 本論壇有下載
將OBJECTDCL.arx和下下載的程序文件(共有3個)放在CAD支持目錄下
加載 hy_sm.lsp 執行命令hy_sm
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2005-9-22 21:07:37 | 显示全部楼层

效果圖

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

使用道具 举报

发表于 2005-9-23 23:12:49 | 显示全部楼层
看起来蛮不错,二楼有ObjectDcl的帮助文档吗,我下了一个ObjectDcl,但不知怎么用。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-24 13:20:57 | 显示全部楼层
沒有幫助文件。。自己研究的。。
有也是OBJECTDCL自帶的一些
大家可以一起討論研究一下啊。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-10-2 00:43:48 | 显示全部楼层
OBJECTDCL不会用啊,出来这么久了,也没见那位大侠把它汉化了,方便俺这等E文差劲之人。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-10-8 20:41:19 | 显示全部楼层
看起来蛮不错
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2006-6-1 08:11:06 | 显示全部楼层
编译?其實就是lisp啊﹐編譯方式一樣.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-6-1 08:32:32 | 显示全部楼层
是这样的,我把lisp文件编译后,程序就找不到.ods文件了,只能用.ods文件。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 21:41 , Processed in 0.430679 second(s), 50 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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